This project is not covered by Drupal’s security advisory policy.

Overview

Mapy.com integrates interactive maps into your Drupal site using the
Mapy.com REST API (Seznam.cz's mapping
platform - detailed street-level coverage for Czechia and Slovakia, alongside standard world maps).
A single field type stores a location; a widget lets editors place, search, and adjust it directly on
an interactive map; formatters and a Views style display one or many locations back out. Six modules
in total, so you only enable what you actually need:

  • Mapy.com (this project) - the location field, map widget, formatters, Views
    style, and address autocomplete.
  • Mapy.com Webform Integration (mapycom_webform) - the same
    address-picking widget as a Webform element.
  • Route Planner (routeplanner) - a field type/widget for a
    point-to-point route (ordered stops, drawn and editable on the map), built on top of the base
    map widget.
  • Route Planner Webform Integration (routeplanner_webform) - the
    route planner as a Webform element.
  • Route Planner - Content reference (routeplanner_reference) - an
    alternative route planner that builds its route from existing content (matched by title)
    instead of free-text address search.
  • Route Planner - Content reference Webform Integration
    (routeplanner_reference_webform) - that content-reference route planner as a
    Webform element.

Features

  • Field type for storing map locations, with a widget for editing them directly on an
    interactive map (search-as-you-type address autocomplete included)
  • Field formatter and a Views style plugin for displaying one or many locations
  • Route Planner: an ordered, editable multi-stop route, either from free-text address search or
    from matching existing content
  • Webform elements for both the address picker and the route planner
  • Switchable map layers (basic/outdoor/winter/aerial) and AJAX-driven filtering
  • No bundled or Composer-fetched third-party JavaScript - MapLibre GL JS and autoComplete.js load
    from a CDN with a Subresource Integrity hash pinned to the exact version this module ships
    against, so installing is exactly composer require drupal/mapycom, nothing else

Requirements

  • Drupal core ^10 || ^11 || ^12
  • A free Mapy.com API key
  • (Optional) The Webform module, if you use
    any of the three Webform-element submodules

Installation

  1. Install via Composer: composer require drupal/mapycom.
  2. Enable the module(s) you need at /admin/modules.
  3. Configure your API key at /admin/config/services/mapycom.

MapLibre GL JS and autoComplete.js are loaded from jsDelivr with a Subresource Integrity hash
pinned to this module's exact version - no extra Composer configuration or manual download needed.

Try it live, or run it yourself

A ready-to-run demo - the base module, all five submodules, demo content, and a CS/EN language
switcher, pre-installed on a Drupal 11 site - is available at
gitlab.com/good_sailors/mapycom-demo.

Run your own local instance (needs Docker):

git clone https://gitlab.com/good_sailors/mapycom-demo.git
cd mapycom-demo
docker build --provenance=false --sbom=false -t mapycom-demo:local .
./generate-demo.sh --lang en --api-key YOUR_MAPYCOM_API_KEY

--api-key is optional - skip it and the instance still boots fine, just with the map
areas showing an "API key missing" notice instead of real maps (never pass a real production key
here; use a low-quota key made just for this). generate-demo.sh prints the instance's
id; run it again for another, independent instance - each gets its own id, port, and DB credentials.

When you're done, remove that instance completely (containers, volumes, its ledger entry - nothing left behind):

./destroy-demo.sh <demo-id>

Usage

  • Add the Mapy.com field to your content types.
  • Configure the field widget and formatter as needed.
  • Use the provided Views style to display maps with multiple locations.
  • Enable Route Planner if you need multi-stop routes instead of a single location.

Troubleshooting

  • Ensure your API key is valid and set in the configuration.
  • If the map does not display after AJAX filtering, clear Drupal's cache and check the browser's
    JavaScript console for errors.
  • For further help, see the issue
    queue
    .

Credits & License

This module is based on the original Mapy.cz
Drupal project
and implements the new
Mapy.com REST API
.

Mapy.cz license and useful links:

Mapy.cz License

Original Mapy.cz Drupal module

Mapy.com REST API documentation

Project information

Releases