=== Locci Maps ===
Contributors: muellerschmitz, freemius
Tags: map, openstreetmap, leaflet, marker, gutenberg
Requires at least: 6.5
Tested up to: 7.1
Requires PHP: 8.2
Stable tag: 1.6.3
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Privacy-friendly maps for OpenStreetMap, Google Maps and Azure Maps, with self-managed markers, click-to-load consent and QR-ready detail pages.

== Description ==

Locci Maps displays maps with markers that you manage yourself. Map services are loaded only after the visitor gives explicit consent (click to load); before that, no external request is made.

The free version has the full feature set with no artificial limits — as many maps and markers as you need.

= Map features =

* Unlimited maps, unlimited markers per map
* Three map services: OpenStreetMap (Leaflet), Google Maps, Azure Maps
* Markers with title, description, image, address, custom color and icon
* Categories with color and icon inheritance
* Category filter in the frontend
* QR code generation for marker detail pages
* Shortcode and Gutenberg block
* Several maps on a single page

= Locci Maps Pro =

Locci Maps Pro adds:

* **Comments** – enable comments per map and per marker on the detail pages, with standard WordPress moderation.
* **Feedback form** – a contact form on a map's / marker's detail page; messages are sent via `wp_mail()` (so SMTP plugins work), with honeypot, time-trap and rate-limit protection.
* **Custom marker icons** – 28 built-in icons plus your own SVG from the Media Library, per map or per marker.
* **Marker clustering** – group nearby markers into clusters, switchable per map (Leaflet and Google Maps).
* **Search & “near me”** – a search bar per map: filter markers by title, look up an address, or use the visitor's location with a radius filter and a distance-sorted result list.
* **Import / Export** – bulk import and export markers as CSV, GeoJSON or KML, per map.

Locci Maps Pro is a yearly license (1 site). Non-profit organisations can request a free Pro license.

Get Locci Maps Pro: https://checkout.freemius.com/plugin/38414/plan/64089/

== External Services ==

Once the visitor has given active consent, external requests are made to the following services, depending on the selected map service:

**OpenStreetMap map tiles:**
* Domain: tile.openstreetmap.org
* Purpose: load map tiles
* Privacy policy: https://osmfoundation.org/wiki/Privacy_Policy

**Google Maps JS API:**
* Domain: maps.googleapis.com
* Purpose: Google Maps rendering
* Privacy policy: https://policies.google.com/privacy

**Azure Maps Web SDK:**
* Domain: atlas.microsoft.com
* Purpose: Azure Maps rendering
* Privacy policy: https://privacy.microsoft.com/privacystatement

**Nominatim (OpenStreetMap): nominatim.openstreetmap.org**
* Purpose: optional address search to find coordinates. Used in the admin area, and – with Locci Maps Pro – for the "find address" button of a map's front-end search bar. A request is only sent when someone actively runs an address search; the plugin caches results and rate-limits the requests.
* Privacy policy: https://osmfoundation.org/wiki/Privacy_Policy

**Freemius (only after explicit opt-in):**
* Domains: api.freemius.com, wp.freemius.com
* Purpose: optional connection of the site to the plugin vendor (Freemius) for anonymous usage statistics, update notifications and - with a purchased Locci Maps Pro key - license verification.
* Locci Maps is fully functional without this connection. No data is sent to Freemius unless it has been actively agreed to (opt-in), and the consent can be withdrawn at any time.
* In this release the vendor connection is not configured, so no request reaches Freemius regardless of consent; this disclosure applies once the connection is enabled in a future version.
* Terms of service: https://freemius.com/terms/
* Privacy policy: https://freemius.com/privacy/

== Installation ==

1. Extract the plugin to `wp-content/plugins/locci-maps`.
2. Activate it from the "Plugins" menu.
3. Under "Locci Maps → Settings", optionally add API keys for Google Maps and/or Azure Maps (OpenStreetMap/Leaflet works without a key).
4. Create a map, add markers, then insert the shortcode `[locci_map map="ID"]` or the "Locci Maps Map" block.

== FAQ ==

= How do I integrate a consent tool? =

Locci Maps loads maps only after a click on "Load map". To rely on your consent tool's approval instead, dispatch the DOM event `loccimaps:consent-grant` once consent has been given:

```html
<script>
document.addEventListener( 'DOMContentLoaded', function () {
    // Call this from the "accepted" callback of your consent tool:
    document.dispatchEvent( new Event( 'loccimaps:consent-grant' ) );
} );
</script>
```

After the dispatch, Locci Maps automatically loads every pending map. The exact place for the call is described in the documentation of your consent tool (for example Borlabs Cookie, Complianz or Real Cookie Banner).

= Which API keys do I need? =

OpenStreetMap/Leaflet works without a key. For Google Maps or Azure Maps, add the respective key under Locci Maps → Settings.

= Can I use the marker URL in QR codes? =

Yes. The QR code generation in the marker admin creates links to the public detail page of the marker at `/places/{slug}`.

== Screenshots ==

1. Marker detail page with map and address at /places/{slug}.
2. Map editor: provider, zoom, center, live preview and the category-filter toggle.
3. Marker editor: assigned map, address geocoding, live preview and QR code (SVG/PNG).

== Changelog ==

= 1.6.3 =
* Maintenance release: fixed the wp.org SVN slug used by the release pipeline; no functional changes.

= 1.6.2 =
* Maintenance release: automated release pipeline (GitLab CI to WordPress.org SVN); no functional changes.

= 1.6.1 =
* Packaging fix: bundled vendor license files without a recognized file extension are now renamed on build (content unchanged); a couple of dev-only vendor files unused at runtime are excluded from the build.
* Fixed the plugin's text domain to match the free version's wp.org slug (`locci-maps-free`) so translations load correctly.

= 1.6.0 =
* Renamed to Locci Maps. The plugin slug is now `locci-maps`; the marker detail URL base changed from `/pins/` to `/places/` and the shortcode is now `[locci_map]`.

= 1.5.3 =
* New marker icons "Bench" and "Hut"; refined the bike, cart, coffee, fuel, phone, train, tree and wifi glyphs.

= 1.5.2 =
* Packaging fix: premium-only code is now correctly excluded from the free build.

= 1.5.1 =
* Maintenance: CI pipeline and development tooling only; no changes to plugin functionality.

= 1.5.0 =
* Renamed to GeoPinster.
* Removed the 3-map / 20-marker cap from the free version — maps and markers are now unlimited for everyone.
* Dropped the bundled `load_plugin_textdomain()` call; WordPress loads translations automatically. Locale `.po`/`.mo` files are no longer shipped (use translate.wordpress.org).
* Updated the bundled QR code library (chillerlan/php-qrcode 5 → 6).

= 1.4.0 =
* Pro: import and export markers as CSV, GeoJSON or KML (Locci Maps → Import / Export). Import adds markers to a chosen map, resolves categories by name and reports skipped rows; images are not imported.

= 1.3.0 =
* Pro: per-map search bar – filter markers by title, look up an address, or use “near me” with a radius filter and a distance-sorted result list.
* Category filter and search now share one visibility pipeline; the map providers gained `filterByIds`, `openMarker` and `focusArea`.
* New public REST route `locci-maps/v1/nearby-geocode` for the Pro address lookup (rate-limited; not present in the free build). See “External Services”.

= 1.2.0 =
* Pro: marker clustering, switchable per map (Leaflet and Google Maps); the clustering library is loaded only for maps that use it.
* The chosen marker icon and Pro custom SVG icons are now passed to every map provider (previously they could fall back to a plain dot on the frontend).

= 1.1.0 =
* Marker icon set expanded from 8 to 28 icons; the chosen icon is now drawn on the map (Leaflet, Google Maps, Azure Maps) instead of a plain dot.
* Readme: added a "Locci Maps Pro" section; plugins page: added a "Go Pro" link (hidden for active license holders).
* Pro: comments per map / per marker on the detail pages.
* Pro: feedback form on a map's / marker's detail page (sent via wp_mail, with spam protection).
* Pro: custom marker icon from the Media Library (SVG), per map or per marker.

= 1.0.0 =
* First public release with the full feature set.
* Map services OpenStreetMap (Leaflet), Google Maps and Azure Maps, loaded only after click-to-load consent.
* Markers with title, description, image, address, color and icon; categories with inheritance and a frontend filter.
* Shortcode `[locci_map map="ID"]`, Gutenberg block "Locci Maps Map", QR-ready detail pages at `/places/{slug}`.
* Source language English, German translation bundled.
