=== ACF OpenStreetMap Field ===
Contributors: podpirate
Donate link: https://donate.openstreetmap.org/
Tags: map acf openstreetmap leaflet
Requires at least: 4.8
Requires PHP: 5.6
Tested up to: 6.7
Stable tag: 1.6.1
License: GPLv3 or later
License URI: http://www.gnu.org/licenses/gpl-3.0.html

A configurable OpenStreetMap Field for ACF.

== Description ==

Hazzle free OpenStreetMap with [ACF](https://www.advancedcustomfields.com/).

## Usage

#### In the Fieldgroup editor:

**Return Format:**

 - *Raw data* will return an array holding the field configuration.

 - *Leaflet JS* will return a fully functional leaflet map. Just include `<?php the_field('my_field_name'); ?>` in your Theme.
You can choose from a long list of map styles and it supports multiple markers.

 - *iFrame (OpenStreetMap.org)* Will return an iFrame HTML. Only four map styles are supported
– the ones you find on [OpenStreetMap](https://www.openstreetmap.org/) – and not more than one marker.

**Map Appearance:** Pan and zoom on the map and select from the Map layers to set the initial map position and style in the editor.

**Map Position:** If you're more like a numbers person here you can enter numeric values for the map position.

**Allow layer selection:** Allow the editors to select which map layers to show up in the frontend.

**Height:** Map height in the frontend and editor.

**Max. number of Markers**
 - *No value:* infinite markers
 - *0:* No markers
 - *Any other value:* Maximum number of markers. If the return format is *iFrame* there can ony be one marker.

## Map Proxy
The plugin comes with a proxy mechanism for map tiles. If enabled the Browser will load the tiles from your server rather than directly from the tile provider.

Use the proxy to hide sensitive credentials from the users out there or if you have to comply with local privacy regulations. the European GDPR.

## Development

Please head over to the source code [on Github](https://github.com/mcguffin/acf-openstreetmap-field).

## Credits
- [ACF](https://www.advancedcustomfields.com/) for sure!
- The [OpenStreetMap](https://www.openstreetmap.org/) project
- [The Leaflet Project](https://leafletjs.com/)
- The maintainers and [contributors](https://github.com/leaflet-extras/leaflet-providers/graphs/contributors) of [Leaflet providers](https://github.com/leaflet-extras/leaflet-providers)
- The [very same](https://github.com/perliedman/leaflet-control-geocoder/graphs/contributors) for [Leaflet Control Geocode](https://github.com/perliedman/leaflet-control-geocoder)
- [Dominik Moritz](https://www.domoritz.de/) who delighted us with [Leaflet locate control](https://github.com/domoritz/leaflet-locatecontrol)
- Numerous individuals and organizations who provide wonderful Map related services free of charge. (You are credited in the map, I hope)
- The proxy feature was inspired by an article by Klaus Meffert, Dr. DSGVO Blog, [Link (German)](https://dr-dsgvo.de/datenschutzfreundliches-karten-plugin-fur-webseiten-statt-google-maps-neue-moglichkeiten)

== Installation ==

Follow the standard [WordPress plugin installation procedere](http://codex.wordpress.org/Managing_Plugins).


== Frequently asked questions ==

= I found a bug. Where should I post it? =

Please use the issues section in the [GitHub-Repository](https://github.com/mcguffin/acf-openstreetmap-field/issues).

I will most likely not maintain the forum support forum on wordpress.org. Anyway, other users might have an answer for you, so it's worth a shot.

= I'd like to suggest a feature. Where should I post it? =

Please post an issue in the [GitHub-Repository](https://github.com/mcguffin/acf-openstreetmap-field/issues)

= I am a map tile provider. Please don't include our service in your plugin. =

The provisers list is taken from [Leaflet providers](https://github.com/leaflet-extras/leaflet-providers), so requests for an unlisting should go there first.

If you want your service to remain in Leaflet Providers, you can Post an issue in the plugin's [GitHub-Repository](https://github.com/mcguffin/acf-openstreetmap-field/issues).
Please provide me some way for me to verify, that you are acting on behalf of the Tile service provider your want to exclude.
(E.g. the providers website has a link to your github account.)

= Im getting these "Insecure Content" Warnings =

Some providers – like OpenPtMap or MtbMap – do not support https. If these warning bother you, choose a different one.

= Why isn't the map loading? =

There is very likely an issue with the map tiles provider you've choosen. Some of them might have gone offline or have suspended their service. Choose another one.

= I need to do some fancy JS magic with my map. =

Check out the [GitHub wiki](https://github.com/mcguffin/acf-openstreetmap-field/wiki). Some of the js events might come in handy for you.
For Documentation of the map object, please refer to [LeafletJS](https://leafletjs.com).

= Will you anwser support requests via emails? =

No.


== Screenshots ==

1. ACF Field Group Editor
2. Editing the Field Value
3. Display in the Frontend
4. Settings page. Configure API access keys and disable specific tile layers.

== Upgrade Notice ==

**Attention:** Version 1.5.0 may involve some breaking changes.

The global Leaflet object is no longer available.


== Changelog ==

= 1.6.1 =
 - Fix PHP fatal during upgrade

= 1.6.0 =
 - Introduce Map Proxy
 - Slightly improve settings page
 - Update map providers
 - Fix: _load_textdomain_just_in_time notice
 - Fix: Add marker pointer events
 - Fix: Maps in WP Admin not inited

= 1.5.7. =
 - Fix: Backend Map broken
 - Fix: Geocoded result not stored in raw data

= 1.5.6. =
Fix: PHP notice version_compare

= 1.5.5 =
 - JS: use IntersectionObserver to detect whether a map has become visible
 - Fix: ACF field not inited in Flexible Content and repeaters
 - Fix: JS recursion
 - Fix: fit bounds not working
 - Fix: marker drag not triggered
 - Fix: marker unique-IDs not always created
 - Fix: Block editor issues

= 1.5.4 =
 - Fix: JS ReferenceError on move marker with max markers = 1

= 1.5.3 =
 - Fix: Disable provider settings not displaying

= 1.5.2 =
 - Fix: JS Error if some providers are disabled

= 1.5.1 =
 - Backend UI: Attribution below map
 - ACF Field: Introduce conditional logic
 - Fix: Some map controls not visible in Blockeditor sidebar
 - Fix: Marker instructions display
 - Providers: [Migrate Stamen to Stadia Maps](https://maps.stamen.com/stadia-partnership/)
 - Providers: Update Esri Ocean base map, OpenAIP, Opensnowmap, OpenWeathermap, OpenFireMap, NLS, OpenRailwayMap, Jawg, MapTiler, MtbMap, nlmaps
 - Providers: Remove HERE (Legacy), Hydda (service down)
 - JS: Rewritten ACF integration

= 1.5.0 =
 - Use Leaflet noConflict
 - Refactor JS
 - Geocoder: Address detail level is now controlled by map zoom
 - Geocoder: Provide filters for configuration overides
 - Fix: Make JS event `acf-osm-map-marker-created` bubbling
 - Fix: JS Crashes in ACF Blocks
 - Fix: Weird coordinates (worldCopyJump)

= 1.4.3 =
 - Fix: JS – acf hook `acf-osm/create-marker` undefined argument + not firing on geocode

= 1.4.2 =
 - Fix: JS Error on append repeater

= 1.4.1 =
 - JS: remove console.log
 - Fix: admin js broken after jquery removal

= 1.4.0 =
 - UI: Adapt to ACF 6 field group admin
 - JS API: do acf actions on marker events
 - JS Frontend: remove jQuery dependency
 - Data: add geocode results to raw data
 - Fix: search submit button did not submit
 - Fix: print template script only if input element is present
 - Fix: value sanitation. Shold now work with Frontend Admin for ACF

= 1.3.5 =
 - Fix: Admin Marker styling broken
 - Fix: PHP Fatal with suki theme
 - Fix: include leaflet control geocode assets

= 1.3.4 =
 - Fix: locate control API

= 1.3.3 =
 - Upgrade leafletjs, leaflet-control-geocoder, leaflet-providers, leaflet, leaflet.locatecontrol to latest releases
 - Remove HikeBike map provider
 - Support ACF Rest API integration (since ACF 5.11)
 - Fix: PHP 8 compatibility
 - Fix: iframes in block preview not editable
 - Fix: quote missing on html attribute in osm template
 - Test with WP 6.0

= 1.3.2 =
 - Fix: No such variant of OpenStreetMap (Mapnik)
 - Fix: Popups not opening in Safari
 - Quick and dirty Fix: invalid (localized) lat/lng object.

= 1.3.1 =
 - Fix: JS Event acf-osm-map-marker-create not applying marker options

= 1.3.0 =
 - Theme Overrides: Override map output in your theme
 - Breaking Change: Use native JS Events
 - Breaking Change: `osm_map_iframe_template` filter gone in WP 5.5
 - Fix: jQuery 3.x (WP 5.6) compatibility
 - Fix: Map not showing on login form
 - Fix: Providers not loaded if webroot owner is not www-user
 - Upgrade: Leaflet 1.7.1
 - Upgrade: Leaflet Providers 1.11.0
 - Upgrade: Leaflet Control Geocoder 2.1.0

= 1.2.2 =
 - Fix: Duplicated Row (ACF 5.9+)

= 1.2.1 =
 - Upgrade FreeMapSK, CyclOSM

= 1.2.0 =
 - Feature: Settings page allowing you to disable specific map tile providersw
 - Feature: Fit markers in view (backend)
 - Upgrade: leaflet-providers, leaflet-control-geocoder, leaflet.locatecontrol

= 1.1.9 =
 - UI: Add Settings link on plugins list table
 - Fix: hide map provider with unconfigured api key from layer selection
 - Upgrade: leaflet-control-geocoder, leaflet.locatecontrol, leaflet-providers
 - Security hardening

= 1.1.8 =
 - Feature: make marker address formats localizable.
 - JS: pass map init object along with acf-os-map-create event
 - UI: hide add marker at my location button if markers cant be added

= 1.1.7 =
 - Feature: Add locate me button to backend
 - Fix: Geocoder search result still visible after marker added to map.
 - Fix: Required field and max_markers = 0 never saved
 - Fix: HERE app code not included in api requests

= 1.1.6 =
 - Feature: Observe DOM for newly added maps
 - Feature: allow manipulation of layer config in JS
 - Fix: JS event 'acf-osm-map-marker-create' not triggered

= 1.1.5 =
 - JS: added event Listener for ajax-loaded maps. Use <code>$(my_map_div).trigger('acf-osm-map-added');</code> on each newly added map.
 - Upgrade LeafletJS to 1.6.0

= 1.1.4 =
 - Upgrade Leaflet Providers to 1.9.0
 - Upgrade Leaflet Control Geocode to 1.10.0
 - Fix: Redraw maps when they become visible

= 1.1.3 =
 - UI: Better formatting for automatic marker labels
 - Fix: Map controls zindex in Block-Editor
 - Fix: Adding markers not working on mobile devices

= 1.1.2 =
 - Fix: PHP Strict Standards message

= 1.1.1 =
 - Fix: Required Field behaviour – "required" means now "must hava a marker"

= 1.1.0 =
 - UI: Usability Improvements
 - Tested: Verfied Compatibility with Widgets, Block-Editor, Frontend Form
 - Stored data pretty much like google map field
 - Code: Refactored JS

= 1.0.1 =
Convert Values from ACF Googlemaps-Field

= 1.0.0 =
Initial Release
