---
type: "product"
id: 343
url: "https://prestadev.pl/en/mapa-dystrybutorow-pro-mapa-i-wyszukiwarka-punktow-dla-prestashop.html"
markdown_url: "https://prestadev.pl/en/markdown/product/343.md"
title: "Distributor Map Pro — map and store locator for PrestaShop"
image: "https://prestadev.pl/2349/distributor-map-pro-map-and-store-locator-for-prestashop.jpg"
sku: "PDDISMAPPRO"
brand: "PrestaDev.pl"
price: 87.00
price_tax_excluded: 70.73
currency: "PLN"
tax_included: true
availability: "in_stock"
is_pack: false
customization_required: false
condition: "new"
categories: ["B2B and customer accounts", "Contact, forms and reviews"]
language: "en"
updated: "2026-09-10"
---

# Distributor Map Pro — map and store locator for PrestaShop

Distributor Map Pro is a PrestaShop module for presenting distributors, showrooms, pickup points, and service centers in a single directory. It combines a list of contact details with an optional location map. The customer can search by company name, address, city, or postal code and narrow down the results by country, point type, and offered service. After sharing their browser location, they can also find points within a selected radius and see distances. To display the map, you can choose OpenFreeMap with OpenStreetMap data without an API key, Google Maps with your own key, or list-only mode. You manage the points in the store panel, manually or via CSV import with a preview of changes before confirmation. The directory has a separate page, can also be displayed on the homepage, and respects point assignments to stores in multistore.

## Description

## What does the store customer gain?

 - **One place to find a location:** the customer browses addresses and contact details without having to search for them across many separate materials.
- **Searching for specific locations:** they can enter a city, postal code, street, or company name and combine the phrase with filters for country, location type, and service.
- **Nearby search:** after granting location access, they choose a radius from 1 to 500 kilometers or miles, and the results are sorted from the nearest location.
- **Contact with the selected location:** correctly completed phone numbers and email address become links for calling or sending a message; a separate link leads to the location’s website.
- **Information before the visit:** the location card may display the logo, type, services, an additional note, and expandable opening hours for individual days of the week.
- **Access to directions:** the “Directions” link opens external Google Maps with the location or address of the point, also when using the OpenFreeMap map.

 ## OpenStreetMap map, Google Maps, or just the list

 ### OpenFreeMap — map without a Google key

 The module uses the public OpenFreeMap service and OpenStreetMap data, while the MapLibre library is included locally. Displaying this map does not require an account or API key. OpenFreeMap provides a public service with no display fees; however, it is an external service, not infrastructure maintained by the module. The current terms are described by the [OpenFreeMap provider](https://openfreemap.org/).

 ### Google Maps — option with your own key

 If you choose Google Maps, you provide a browser key for the Maps JavaScript API. An optional map ID allows the use of Google advanced markers. Project configuration and any fees remain the responsibility of the Google account owner; the module does not manage billing. The requirements are described in the [Google Maps configuration documentation](https://developers.google.com/maps/documentation/javascript/get-api-key).

 ### List independent of map display

 The map loads only after clicking “Show map”. Markers correspond to locations from the current results page — up to 20 — and update after a search or page change. Clicking a marker shows the name, address, and directions link, and the map view adjusts to the displayed locations. You can disable the map and leave the directory with the search engine; the basic list, filters, and pagination also work without JavaScript.

 **An address does not replace coordinates.** A location without latitude and longitude may be visible in the list, but it will not receive a marker and will not appear in radius search results. You enter coordinates manually, import them from CSV, or fill them in on demand in the location form using a separate Google Geocoding API key. Free map display does not mean built-in free geocoding.

 ## Managing locations in the PrestaShop panel

 - **Adding and editing locations:** the form includes the company name, country, street, city, postal code, contact details, website, note, hours, and coordinates.
- **Publication control:** a location can be activated or hidden without deleting its data. The admin list can be filtered and sorted; record deletion is also available.
- **Custom types and services:** you will create classifications suitable for your network, for example showroom, pickup point, consulting, or installation. A location may have one optional type and multiple services.
- **Multilingual classification names:** type and service names can be provided in the store languages. If a translation is missing, the name from the default language is used; the descriptive data of the location itself does not have separate language versions.
- **Location logos:** the form accepts PNG, JPEG, and WebP up to 2 MiB, provided the server supports the given format. The image is processed and saved as PNG; it can later be replaced or removed.
- **Clear panel structure:** a shared header with configuration status information leads to settings, the distributor list, types and services, and CSV import and export.
- **Separate visibility settings:** enabling the directory and its presence on the homepage have separate switches, and the form contains Polish hints and instructions for launching without Google.

 ## CSV import and export with change control

 Import supports UTF-8 CSV files up to 2 MiB in size and containing up to 1000 data rows. You can choose semicolon, comma, or tab as the separator. In the panel, you can download an empty template or a sample file, and existing locations are matched by the fixed `external_id` identifier, not by company name or address.

 1. **Load the file:** the module will check supported headers, field values, identifiers, country codes, and type and service assignments.
2. **Review the preview:** you will see records to be created and updated, unchanged items, errors, and a comparison of values before and after the change. The preview does not save changes to locations.
3. **Approve valid data:** even a single error blocks the file import. A valid preview can be approved within 30 minutes, in the same store and by the same employee. Data changes since the preview may require reloading the file.

 During an update, an omitted column keeps its current value, and an empty cell may clear an optional field. Records not present in the CSV are not deleted. Saving locations and relations takes place in a transaction; a save error rolls back its changes. Types and services must be created in the panel beforehand — the import refers to their codes.

 Export from the CSV tab includes active and inactive locations of the current store, contact fields, hours, coordinates, and classification codes. The same limits apply: 1000 locations and 2 MiB. The format includes protection of cells against interpretation as spreadsheet formulas and can be loaded back into the module. It is not a full module backup: it does not include logo files, settings, dictionary translations, or store assignments.

 ## Multistore — locations assigned to selected stores

 Locations, types, and services have explicit store assignments. A new location belongs by default only to the currently selected store; in the form, it can also be assigned to other available stores with the module installed. The front-end list, map, search results, and export take the current store into account. Enabling the directory, the homepage block, the map provider, and API keys are configured per store.

 **Sharing a location does not create independent copies.** The name, address, contacts, logo, activity status, and classification of the same record are shared across the assigned stores. Saving requires selecting a single store, and editing a shared location requires access to all its stores. New locations from CSV go to the current store, while an update preserves existing assignments.

 ## Directory presentation and technical SEO elements

 - **Separate directory page:** the module provides a link that can be used in the store menu. The optional homepage block requires the theme to display the `displayHome` hook.
- **Layout adapted to smaller screens:** the form and list have responsive rules, and opening hours can be expanded in the location card.
- **Results without reloading the entire page:** when JavaScript support is available, search and pagination update the list and markers via AJAX.
- **Directory content rendered server-side:** addresses and contacts are present in the list HTML, not only in map pop-ups.
- **Directory page metadata:** the controller provides the title, description, breadcrumb navigation, and canonical URL of the directory. Filtered results and subsequent pages receive the `noindex,follow` directive.

 The module does not create separate location subpages or `LocalBusiness` structured data. The mechanisms described are not a guarantee of rankings in Google or presence in AI answers.

 ## How to launch the directory without Google keys?

 1. In multistore, select the store for which you want to configure the directory.
2. Enable the directory and choose OpenFreeMap / OpenStreetMap as the map provider.
3. Add active locations with real addresses and both coordinates; if needed, assign your own types and services.
4. Open the directory from the panel and use the “Show map” button. Optionally enable the homepage block.

 ## Important distinctions before implementation

 Distributor Map Pro is an informational directory. It does not add location selection to the cart or order, does not link locations with products or their stock levels, and does not handle reservations. Hours are entered as text — without automatic “open now” status. Distance in the results is calculated as the crow flies, not according to the road route.

 Geolocation requires user consent and a secure browser context, usually HTTPS. The interactive OpenFreeMap map requires WebGL2 support and a connection to the provider’s service. Loading the map causes the browser to contact the map provider; the button that launches it is not an integration with a consent management system. The directory itself remains available without

## Features

| Feature | Value |
| --- | --- |
| Prestashop 9.x support | Yes |
| Support for Prestashop 8.x | Yes |
| Prestashop 1.7.x support | Yes |
| Module translations | EN, ENG |
| Free support | Yes |
| Free updates (1 year) | Yes |
| Easy Installation | Yes |
| Requires engine modification | No |

## Categories

- B2B and customer accounts
- Contact, forms and reviews

## Questions and answers

### What is the Distributor Map Pro used for?

Language: en

The Pro Distributor Map creates a public directory of distributors, showrooms, pickup points, or service centres in PrestaShop. It displays a list of locations with contact details and an optional map. The customer can search for points, use filters, and proceed to contact or directions. Point data is entered by the administrator; the module does not automatically retrieve companies from the internet.

### Which maps does the module support?

Language: en

Available options include OpenFreeMap with OpenStreetMap data, Google Maps, and a no-map mode with just the list. OpenFreeMap is displayed via the MapLibre library included with the module. Google Maps requires your own browser API key. You select the provider separately in the settings of the given store. The module does not automatically switch from OpenFreeMap to Google in the event of a failure.

### Does the free map require an account or an API key?

Language: en

Displaying the OpenFreeMap map does not require an account, an API key, or a Google key. The module uses the public OpenFreeMap service and OpenStreetMap data. The free map does not include automatic determination of address coordinates: they must be entered, imported, or separate Google geocoding must be used. Map availability depends on the external provider; the module does not guarantee the continuity of its service.

### Is it necessary to use Google Maps?

Language: en

No. You can display points on the OpenFreeMap map or use only the list and search engine. With manually entered coordinates, these functions do not require Google keys. Regardless of the selected provider, the “Directions” link still leads to external Google Maps. Simply displaying this link does not launch the Google map.

### When is the map loaded and how many points does it show?

Language: en

The map loads only after clicking the “Show map” button, not upon entering the catalogue page itself. It displays points from the current results page that have both coordinates — a maximum of 20. After searching or changing the page, the markers are also updated. This is not a view of all points from the entire catalogue at once.

### Why is the added point on the list, but not on the map?

Language: en

The marker requires valid latitude and longitude. The postal address alone is not sufficient. Both coordinates can either be provided or both left blank; a value of zero is a valid coordinate. A point without coordinates remains in the regular list results, but is omitted on the map and during radius search. Also check the filters and the current results page.

### What is the difference between a map and address geocoding?

Language: en

The map displays points based on the saved coordinates. Geocoding converts a street address into those coordinates. The module offers on-demand Google geocoding in the point form, using a separate Google Geocoding API server key. The call is made on save with the geocoding option enabled and both coordinates empty. Correct manual coordinates take precedence. There is no built-in OpenStreetMap or Nominatim geocoding.

### What keys need to be configured for Google?

Language: en

Google Maps uses a browser key for the Maps JavaScript API; geocoding in the panel uses a separate server key for the Geocoding API. The Google Map ID is optional and does not replace the key. The browser key should be restricted to the store domains, and the server key to the server IP address and the appropriate service. You configure the Google project and its billing outside the module. Google services may involve charges.

### Does an empty server key field remove the saved key?

Language: en

No. After saving the server key, the form does not display its value. Leaving the field empty preserves the existing key, and entering a new one replaces it when saved. A separate switch is used for deletion. Deleting the geocoding key does not remove points or their coordinates and does not disable the OpenFreeMap map.

### What data can the customer use to search for points?

Language: en

The search engine checks the company name, address, city, and postal code. The phrase can be combined with the selection of a country, one point type, and one service. The filters narrow down the common set of results. Entering a city or postal code is a text search within the point data, not an automatic determination of the location from which the radius will be calculated.

### How does the search for nearby locations work?

Language: en

When using the location button, the browser asks the user for permission and passes the coordinates to the store search engine. The customer selects a radius from 1 to 500 and the unit: kilometres or miles. The module includes points with valid coordinates within that radius and sorts them from the nearest. Geolocation requires a browser that supports it and a secure context, usually HTTPS. If permission is denied, text search can still be used.

### Does the distance shown in the results mean the length of the driving route?

Language: en

No. The distance is calculated based on coordinates as the geographical straight-line distance, without taking road routes into account. The module does not calculate travel time or traffic intensity. External directions are provided via the “Route directions” link, which opens Google Maps.

### Does the list and search work without JavaScript or without the map?

Language: en

Yes. The basic list is rendered server-side, and the search form, filters, and pagination links work without JavaScript. JavaScript adds result updates without reloading the entire page, browser geolocation support, and an interactive map. Disabling the map or the absence of a Google key does not block the directory itself.

### Where in the store can the distributor catalogue be displayed?

Language: en

The module provides a separate catalog page, and a link to it is available in the configuration. This address can be used in the store menu. An additional switch allows the catalog to be displayed also on the homepage, if the theme displays the displayHome hook. The module does not automatically add a separate entry to each menu module used by the store.

### What information can be added to the point?

Language: en

The entry includes the company name, country, address, city, and optionally the postal code. You can also fill in the email, phone, mobile phone, fax, website, additional note, hours for the seven days of the week, logo, and coordinates. Activity status, type, services, and shop assignments are also available. The note is plain text up to 300 characters; it does not accept HTML.

### Does the module automatically display the “open now” status?

Language: en

No. Opening hours are text fields for the days from Monday to Sunday and are displayed in the location’s expandable section. The module does not interpret them as a schedule: it does not calculate the “open now” status, does not manage holiday exceptions, and does not support appointment booking.

### What logo files can be uploaded?

Language: en

The point form supports PNG, JPEG and WebP up to 2 MiB. Processing depends on the server's support for the format; WebP requires the appropriate graphics library function. The image is checked, reduced if necessary, and saved as PNG without transferring the source metadata. The logo can be replaced or removed. CSV import does not upload logo files.

### Can I create my own point types and services?

Language: en

Yes. In the panel, you define your own types and services, assigning them names and fixed codes used in CSV. A point may have one type or no type, as well as any number of defined services. The names of active classifications are visible next to points and in filters. The code and type of classification do not change after creation. An item used by points cannot be deleted without first removing the assignments.

### Which data can be translated into the store's languages?

Language: en

The names of point types and services are multilingual. If there is no name in the customer's language, the module uses the name in the default language. The interface has Polish translations and English source texts. The company name, address, note, and text opening hours of a given point do not have separate fields for each language, so they should not be treated as multilingual location descriptions.

### Does the module support PrestaShop multistore?

Language: en

Yes. Points, types and services are assigned to selected shops with the module installed. A new record belongs by default only to the current shop. The public list, map, search and export respect this scope. The catalogue activation, homepage block, map provider and keys are configured separately for each shop. Installing the module in another shop does not automatically assign existing points to it.

### Can a shared point have a different address or status in each store?

Language: en

Not within the same record. A location assigned to several stores has shared contact details, address, logo, activity status, type, and services. Editing affects all assigned stores. If you need independent data, create separate records with different external identifiers and the appropriate assignments. Editing a shared location requires the employee to have access to all of its stores.

### Why do I need to select one shop before editing or importing?

Language: en

Saving in the module requires the context of a single store. In the context of all stores or a group, the administrative lists are used to browse data within the limits of the employee's permissions. When editing, the current store cannot be unchecked. Types and services must cover all stores of the point. Before deleting a shared record, you must first deliberately detach its remaining stores.

### How does the import of points from a CSV file work?

Language: en

First, you load the file and check the preview: new points, updates, unchanged records, errors, and differences in values before and after the change. The preview itself does not modify the points. Only approving a correct preview saves the data and service assignments. If even one row contains an error, the file cannot be approved. The save uses a transaction, so a save error rolls back its changes.

### What are the CSV file format and limits?

Language: en

The file must have a CSV extension, UTF-8 encoding, supported headers, and the separator selected in the panel: semicolon, comma, or tab. The limit is 2 MiB and 1000 logical data rows. Each file requires external\_id. A new point also requires company, address, city, and a valid country\_iso, for example PL. The panel allows you to download an empty template and a sample file. This is not an importer for XLSX, XML, or JSON files.

### How does the external\\\_id identifier prevent the creation of unnecessary duplicates?

Language: en

The importer matches the record by the exact external\_id value, with case sensitivity. An existing identifier allows the point to be updated, while a new identifier means a new record, even if the name and address are the same. Repeating an identifier within a single CSV is an error. When adding manually, you can leave the identifier empty for the module to generate it. Changing the identifier of an existing point breaks the matching of older files.

### What does an omitted column or an empty cell mean during the update?

Language: en

An omitted column leaves the current value of the updated point unchanged. An empty cell in the current column may remove an optional value, but it cannot clear a required field. An empty type\_code removes the type, and an empty service\_codes removes the services. Both coordinates must be provided or cleared together. Points that are not in the file are neither removed nor automatically disabled.

### How do I import types and services as well as assignments to shops?

Language: en

First, create the types and services in the panel. In the CSV, provide their existing codes: one in type\_code, and multiple services separated by a vertical bar in service\_codes. An unknown or duplicated service code is an error. New points are assigned only to the current shop; an update preserves the existing assignments. The CSV is not used to change shop assignments or to take over identifiers belonging exclusively to other shops.

### How long can the import preview be approved?

Language: en

A valid preview remains valid for 30 minutes and belongs to a specific employee and store. A newer valid preview for this employee in this store replaces the previous one, and a successful import consumes the preview on a one-time basis. Changes to points, classifications, assignments, or permissions between the preview and approval may block saving. In such a case, the file must be reloaded and the current differences reviewed.

### What does the CSV export contain, and is it a complete copy of the module?

Language: en

The export from the CSV tab includes active and inactive locations of the current shop, contact details, opening hours, coordinates, and type and service codes. It has a limit of 1,000 locations and 2 MiB; once exceeded, the operation is rejected instead of truncating the data. It does not include logo files, configuration, dictionary translations, or shop associations, so it is not a full backup. A separate export of the administrative list columns is not a format for full location import.

### Where do the apostrophes and the \\\_pd\\\_format column come from in the export?

Language: en

A full module export adds the \_pd\_format marker and an apostrophe before data cells so that they are not interpreted as spreadsheet formulas. The importer recognises this marked format and removes exactly one added prefix. Do not add the marker manually to a regular CSV. Resaving in Excel or LibreOffice may change the content, so the preview must be checked before confirming the import.

### Can the import work automatically via CRON, ERP, or a file at a URL address?

Language: en

No. In this version, the import is performed manually in the panel: CSV upload, preview, and confirmation. The module does not offer import scheduling, downloading files from URL, FTP or SFTP, or ready-made ERP synchronisation. The import does not geocode addresses, does not download logos, and does not create missing types or services. The coordinates are provided as data in the CSV.

### Is the map and location connected to the consent system?

Language: en

The module loads the map after the button is clicked, and retrieves the location after the appropriate function is launched and the browser grants permission. However, there is no built-in integration with a consent management platform. When the map is opened, the browser contacts its provider. The coordinates used for the search are transmitted to the store and may appear in the results URL and server logs, therefore sharing such a URL may reveal the location.

### What SEO elements does the catalogue page have?

Language: en

The catalogue controller passes the page title, description, breadcrumb navigation and canonical URL of the main catalogue page. Filtered results and subsequent pages have the noindex,follow directive. The list data is rendered in HTML on the server side. The module does not create separate subpages for each item or LocalBusiness structured data and does not guarantee search engine rankings or presence in AI responses.

### Does the module support order pickups, stock levels, or reservations?

Language: en

No. Naming a record a pickup point or assigning a service to it is for informational purposes. Distributor Map Pro does not add pickup point selection to the checkout process, does not save it in the order, does not check product availability at the distributor, and does not book appointments. It also does not assign points to specific products, brands, or categories.

### Which versions of PrestaShop is the module intended for?

Language: en

Version 2.2.0 declares compatibility with PrestaShop from 1.7.0.0 up to the 9.x line. The PHP version should also be selected according to the requirements of PrestaShop itself, and the module declaration should not be interpreted as a test of every server and theme combination. The module tables require InnoDB. The interactive OpenFreeMap map requires a browser with WebGL2, geolocation usually requires HTTPS, and the homepage block requires support for displayHome by the theme.

### Does disabling or uninstalling the module remove the points?

Language: en

Disabling the catalogue in the settings hides its public page and the block on the homepage, but preserves the data for further editing. Uninstalling removes the module tables and its configuration, so a backup is required beforehand. CSV export alone does not cover the entire module. Logo files are not deleted in bulk during uninstallation; when reinstalling, you need to take into account any remnants in the upload directory.

