JTZL Community Project Maps with OpenStreetMap

Description

JTZL Community Project Maps with OpenStreetMap lets logged-in members propose project locations and updates. Administrators approve each new listing and edit before it becomes public.

  • Display the map and location list with [jtzl_map].
  • Filter projects by status, recenter with browser location, and select or drag a proposed location marker.
  • Require a name and location; configure optional status, capacity, source, size and other fields.
  • Review new listings separately from proposed edits. An existing listing accepts one pending edit at a time.
  • Accept one JPEG, PNG or WebP photo per proposal, limited to 2 MB / 20 megapixels. Pending photos remain private; approval re-encodes the photo before publication.
  • Import UTF-8 CSV files of up to 1 MB / 500 rows into the review queue. Exact duplicates are skipped; configurable proximity checks help prevent repeat imports.
  • Optional Geoapify autocomplete is available inside the submission form. There are no search boxes above the map.

Author: Andrei Siminiciuc. This is an independent integration, not an official OpenStreetMap or OpenStreetMap Foundation plugin.

External services

No service requests are made merely by activating this plugin. Both integrations are disabled by default and require explicit administrator opt-in in JTZL Community Project Maps with OpenStreetMap > Settings. Adding a shortcode does not enable a service. When upgrading from a development build, review these settings and opt in to the services you want to use.

OpenStreetMap:
When a visitor views, pans or zooms the map, their browser requests HTTPS map images. The default endpoint is https://tile.openstreetmap.org/{z}/{x}/{y}.png. Requests disclose the viewed tile coordinates, visitor IP address, browser headers and applicable referrer information. The service supplies the background map; it does not store this plugin’s listing database. No API key is needed for the default tiles. Standard OpenStreetMap tiles are a best-effort service, not an unlimited hosted map service. No bulk downloading or offline prefetching is implemented. Review usage policy before use, especially on busy sites.

  • Tile policy: https://operations.osmfoundation.org/policies/tiles/
  • Terms: https://osmfoundation.org/wiki/Terms_of_Use
  • Privacy: https://osmfoundation.org/wiki/Privacy_Policy
  • Data attribution: https://www.openstreetmap.org/copyright

Geoapify:
This optional service supplies address suggestions in the submission form’s Location field. It requires an administrator-provided Geoapify account/key and separate explicit opt-in to service requests and Geoapify / OpenStreetMap credits. After at least three characters and a short typing pause, the browser sends the typed query and public API key to https://api.geoapify.com/v1/geocode/autocomplete. Geoapify also receives the visitor’s IP address and browser request headers. Its account quotas and terms apply; restrict the browser key to your website’s origins/referrers. The plugin does not contact Geoapify if this option is disabled. Manual map placement and coordinates work without it.

  • Terms: https://www.geoapify.com/terms-and-conditions/
  • Privacy: https://www.geoapify.com/privacy-policy/

Privacy and stored data

Contributions store names, location labels, coordinates, configured field values, contributing account IDs, pending photos and review history in WordPress. Approved listing values and photos are publicly displayed. Pending and rejected proposals are not returned by the public map endpoints. Rejected pending photo data is deleted; remaining proposal history is retained. Previously approved media is retained when replaced. Site administrators should set retention policies and handle removal requests, including any identifying information submitted in free-text fields or photos. Suggested privacy-policy text is available in WordPress’s Privacy Policy Guide.

Browser geolocation is requested only after a visitor clicks a location button and grants browser permission. Recentring changes only their view. Coordinates chosen in a proposal are stored only upon submission. When tiles are enabled, a recentered map loads the corresponding tiles from the provider. Browser/OS location services have their own privacy terms.

There is no analytics, advertising, remote executable code, external updater or communication with the plugin author. JavaScript, CSS and Leaflet assets are bundled locally. No private API credentials are bundled.

Data is retained on deactivation and deletion to prevent accidental loss of community contributions. Unpublishing removes a listing from the public map but retains its data. To completely purge data, an administrator must remove jtzl_listing / jtzl_proposal posts and their metadata, jtzl_fields and jtzl_settings options, jtzl_ lock/notice/rate entries, and any associated media they no longer need. Back up first. There is no automatic destructive uninstall routine.

Source and licenses

First-party PHP, JavaScript and CSS are readable source and licensed GPLv2 or later; no build step is required. GPL text is included in LICENSE.txt.

Leaflet 1.9.4 is bundled under BSD-2-Clause, compatible with GPL. The original LICENSE is in assets/leaflet/LICENSE. Its readable source is included as assets/leaflet/leaflet-src.js; the browser uses the original distribution leaflet.js and leaflet.css. Upstream source and build instructions: https://github.com/Leaflet/Leaflet/tree/v1.9.4. Upstream build uses its package.json scripts. This plugin does not download executable assets at runtime.

Installation

  1. Upload the plugin ZIP through Plugins > Add New Plugin, or place the jtzl-community-project-maps directory in wp-content/plugins.
  2. Activate JTZL Community Project Maps with OpenStreetMap.
  3. Open JTZL Community Project Maps with OpenStreetMap > Settings. Review the external-service disclosures. Enable OpenStreetMap tiles and their attribution if desired. Optionally configure and enable Geoapify.
  4. Add [jtzl_map] to a Shortcode block on a page.
  5. Use JTZL Community Project Maps with OpenStreetMap > Review queue to approve or reject contributions. Only administrators with manage_options can review, change settings or import CSV.

FAQ

Who can add or edit a listing?

Logged-in members can propose contributions. Every new listing or edit requires administrator approval. Published details remain unchanged until approval. A pending edit prevents further edit proposals until it is approved or rejected.

Why is the map background blank after upgrading?

Enable OpenStreetMap tiles and their required contributor credit in Settings. This is off by default. Without it, listings and markers remain available on a blank map background; no tile requests or map credit links are sent or displayed.

What happened to the two search boxes?

The listing search and separate city/address search above the map have been removed. The status filter and location button remain. Address suggestions can still be enabled for the submission form’s Location field.

Which CSV headers are supported?

Required: name,location,lat,lng. Optional headers use the configured field keys, such as status,size,energy_capacity,power_source,existence. Latitude/longitude use decimal degrees. A field marked required in Form fields is also required in CSV rows. Imports create proposals, not updates, and never download remote images.

Does the plugin require a paid service?

No payment unlocks plugin code or features. OpenStreetMap standard tiles and manual location entry need no API key. Optional Geoapify has its own account plans and quotas.

How do I upgrade from the previous development ZIP?

Back up the database and deactivate the previous plugin before activating this renamed plugin. In Settings, use “Migrate legacy settings and next 100 records” before saving new settings. Repeat until “No legacy records remain” appears. This copies existing settings only when new settings do not exist, and preserves post IDs, statuses, images and pending edit relationships. Old metadata and options remain for recovery; post types are renamed, so rollback requires the database backup. Do not run both plugins together.

Replace [openstreet_map] with [jtzl_map] on your pages. Custom CSS selectors now use .jtzl- instead of .ecm-. Enable map tiles in Settings after migration. No page content is rewritten automatically.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“JTZL Community Project Maps with OpenStreetMap” is open source software. The following people have contributed to this plugin.

Contributors

Changelog

1.0.0

  • Prepared initial directory release under a distinctive integration name and matching text domain.
  • Prefixed shortcode, hooks, assets, storage and PHP/JavaScript declarations with JTZL/jtzl.
  • Added explicit OpenStreetMap service and credit consent, default off.
  • Replaced the transient rate counter with an atomic database admission update: ten attempts per non-administrator per hour from the first attempt in a window.
  • Retained nonce, authentication and administrator capability checks on mutations.
  • Added an administrator-only migration for previous development data.