{"id":390993,"date":"2026-10-25T19:40:21","date_gmt":"2026-10-25T19:40:21","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/branch-locator-map\/"},"modified":"2026-10-25T19:40:08","modified_gmt":"2026-10-25T19:40:08","slug":"mema-multi-branch-locator-map","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/mema-multi-branch-locator-map\/","author":23590682,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.2.3","stable_tag":"trunk","tested":"7.1.4","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Mema Multi Branch Locator Map","header_author":"Shebas Khan","header_description":"Multilingual branch locator with Google Maps and OpenStreetMap support. Use [branch_locator].","assets_banners_color":"c2ae60","last_updated":"2026-10-25 19:40:08","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":58,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"v.1.2.3":{"tag":"v.1.2.3","author":"shebaskhan","date":"2026-10-25 19:40:08","revision":3765171}},"upgrade_notice":{"1.2.0":"<p>Adds OpenStreetMap support, marker coordinates and icons, map controls, and multilingual shortcode options.<\/p>","1.2.1":"<p>Bundles map libraries locally and updates plugin compatibility metadata.<\/p>"},"ratings":[],"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3765171,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-772x250.png":{"filename":"banner-772x250.png","revision":3765171,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["v.1.2.3"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3765171,"resolution":"1","location":"assets","locale":"","width":1268,"height":858},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3765171,"resolution":"2","location":"assets","locale":"","width":1675,"height":860},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3765171,"resolution":"3","location":"assets","locale":"","width":1408,"height":803},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3765171,"resolution":"4","location":"assets","locale":"","width":1627,"height":810}},"screenshots":[]},"plugin_section":[],"plugin_tags":[154986,351,2909,2660,16164],"plugin_category":[49],"plugin_contributors":[288520],"plugin_business_model":[],"class_list":["post-390993","plugin","type-plugin","status-publish","hentry","plugin_tags-branch-locator","plugin_tags-locations","plugin_tags-map","plugin_tags-maps","plugin_tags-openstreetmap","plugin_category-maps-and-location","plugin_contributors-shebaskhan","plugin_committers-shebaskhan"],"banners":{"banner":"https:\/\/ps.w.org\/mema-multi-branch-locator-map\/assets\/banner-772x250.png?rev=3765171","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/mema-multi-branch-locator-map\/assets\/icon-256x256.png?rev=3765171","icon_2x":"https:\/\/ps.w.org\/mema-multi-branch-locator-map\/assets\/icon-256x256.png?rev=3765171","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/mema-multi-branch-locator-map\/assets\/screenshot-1.png?rev=3765171","caption":""},{"src":"https:\/\/ps.w.org\/mema-multi-branch-locator-map\/assets\/screenshot-2.png?rev=3765171","caption":""},{"src":"https:\/\/ps.w.org\/mema-multi-branch-locator-map\/assets\/screenshot-3.png?rev=3765171","caption":""},{"src":"https:\/\/ps.w.org\/mema-multi-branch-locator-map\/assets\/screenshot-4.png?rev=3765171","caption":""}],"raw_content":"<!--section=description-->\n<p>Mema Multi Branch Locator Map lets site administrators manage map locations without editing plugin code. Add as many marker locations as your site needs, provide translated names and addresses, and display them in an interactive map. It is an independent plugin and is not affiliated with OpenStreetMap or Google.<\/p>\n\n<p>Map providers:<\/p>\n\n<ul>\n<li><strong>OpenStreetMap<\/strong> is the default and does not require an API key. Enter latitude and longitude for each location.<\/li>\n<li><strong>Google Maps<\/strong> can geocode a location from its address when coordinates are not provided. A Google Maps API key with the required Maps JavaScript API and Geocoding API enabled is required.<\/li>\n<\/ul>\n\n<p>Features:<\/p>\n\n<ul>\n<li>Add, edit, and remove as many marker locations as needed in WordPress Admin. Actual throughput is subject to the selected provider's usage limits and quotas.<\/li>\n<li>Add translations with language codes such as <code>en<\/code>, <code>fr<\/code>, <code>ar<\/code>, or <code>zh-CN<\/code>.<\/li>\n<li>Choose a map provider globally or override it per shortcode.<\/li>\n<li>Configure the initial map center and zoom globally or per shortcode.<\/li>\n<li>Apply custom JSON styles to Google Maps.<\/li>\n<li>Choose a custom marker image from the WordPress Media Library.<\/li>\n<li>Draw, edit, and save a polygon service area; display it with either provider.<\/li>\n<li>Let visitors request their current location and add a temporary marker (with their permission).<\/li>\n<li>Display each marker's title, address, optional phone, and directions link.<\/li>\n<li>Provide map reset and marker visibility controls.<\/li>\n<li>Embed maps on pages, posts, and custom post types with <code>[branch_locator]<\/code>.<\/li>\n<li>Use WordPress translation functions for the plugin interface and translated marker content for any configured language.<\/li>\n<\/ul>\n\n<p>Locations and map configuration are stored in WordPress options. No business locations are bundled with the plugin.<\/p>\n\n<h3>Usage<\/h3>\n\n<p>Basic shortcode:<\/p>\n\n<pre><code>[branch_locator]\n<\/code><\/pre>\n\n<p>Optional shortcode attributes:<\/p>\n\n<ul>\n<li><code>lang<\/code> \u2014 marker translation to display. Accepts a language code such as <code>fr<\/code> or <code>zh-CN<\/code>. Defaults to the current WordPress locale.<\/li>\n<li><code>provider<\/code> \u2014 <code>osm<\/code> or <code>google<\/code>. Defaults to the provider selected in plugin settings.<\/li>\n<li><code>zoom<\/code> \u2014 initial zoom level from 1 to 20. When omitted, the map fits the saved markers when possible.<\/li>\n<li><code>center_lat<\/code> and <code>center_lng<\/code> \u2014 initial map center. Both must be provided.<\/li>\n<li><code>height<\/code> \u2014 map height in pixels, for example <code>600px<\/code> or <code>600<\/code>.<\/li>\n<\/ul>\n\n<p>Example:<\/p>\n\n<pre><code>[branch_locator lang=\"fr\" provider=\"osm\" zoom=\"12\" center_lat=\"48.8566\" center_lng=\"2.3522\" height=\"600px\"]\n<\/code><\/pre>\n\n<p>The shortcode can be added to standard posts and pages, or to the content of a custom post type that supports shortcodes. The plugin does not automatically create or inject maps into every custom post type.<\/p>\n\n<p>For OpenStreetMap, the coordinates entered for a marker determine its position. For Google Maps, coordinates are preferred when present; otherwise, the address from the selected translation is geocoded. If a requested translation is not available, the plugin uses that branch's base-language translation or its first available translation.<\/p>\n\n<p>The service-area drawing tool creates a polygon. It does not calculate delivery eligibility or restrict markers and map interactions.<\/p>\n\n<h3>Map providers and third-party services<\/h3>\n\n<p>The plugin uses the following external services when the corresponding map provider or feature is used. These services receive requests directly from the site visitor's browser (or, for the service-area editor, the administrator's browser).<\/p>\n\n<p><strong>OpenStreetMap tile service<\/strong><\/p>\n\n<p>OpenStreetMap tiles are loaded to display the map whenever an OpenStreetMap map is displayed. The service receives the browser's IP address, requested tile URLs (which disclose the map areas viewed, including the area around a visitor's location if they use the location control), and normal request headers such as the referrer. The service-area editor also requests tiles from the administrator's browser when the settings page is opened. Map tiles are provided by the OpenStreetMap Foundation's community service and are subject to its usage policy; the service is not guaranteed for high-volume use.<\/p>\n\n<ul>\n<li><a href=\"https:\/\/operations.osmfoundation.org\/policies\/tiles\/\">OpenStreetMap tile usage policy<\/a><\/li>\n<li><a href=\"https:\/\/osmfoundation.org\/wiki\/Privacy_Policy\">OpenStreetMap Foundation privacy policy<\/a><\/li>\n<\/ul>\n\n<p><strong>Google Maps Platform<\/strong><\/p>\n\n<p>When Google Maps is selected and a map shortcode is displayed, the plugin loads the Google Maps JavaScript API from Google and includes the configured API key in that request. Google receives the visitor's IP address, site referrer, map\/API request data, and normal browser request headers. If a branch has no saved coordinates, its configured address is sent to Google's Geocoding service to place the marker. If a visitor chooses the location control, their coordinates are passed to Google Maps to center the map and place the temporary marker. If a visitor clicks the directions link, they are sent to Google Maps with the branch destination in the URL. Google Maps use is governed by Google's terms and privacy policy.<\/p>\n\n<ul>\n<li><a href=\"https:\/\/cloud.google.com\/maps-platform\/terms\">Google Maps Platform Terms of Service<\/a><\/li>\n<li><a href=\"https:\/\/policies.google.com\/privacy\">Google Privacy Policy<\/a><\/li>\n<\/ul>\n\n<p>The plugin's service-area editor uses the locally bundled Leaflet and Leaflet Draw libraries; it does not contact an additional library CDN.<\/p>\n\n<h3>Privacy<\/h3>\n\n<p>When a visitor opens a map, the selected map provider and its tile or API services receive requests from the visitor's browser as described above. The Google Maps API key is sent to Google only when Google Maps is selected and its map is displayed. OpenStreetMap tiles are used for the service-area editor on the settings page.<\/p>\n\n<p>The <strong>Use my location<\/strong> control requests the visitor's location only after they choose the control. The browser may ask for permission. If granted, the coordinates are used to center the map and place a temporary marker. When Google Maps is selected, the coordinates are sent to Google Maps as part of those map interactions; with OpenStreetMap, the tile requests disclose the approximate area being viewed. This plugin does not send or save the visitor's location to WordPress.<\/p>\n\n<p>Branch names, addresses, phone numbers, marker coordinates, icon URLs, and map settings entered by an administrator are stored in the site's WordPress options table.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>mema-multi-branch-locator-map<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install the plugin ZIP through <strong>Plugins &gt; Add New &gt; Upload Plugin<\/strong>.<\/li>\n<li>Activate <strong>Mema Multi Branch Locator Map<\/strong> from the <strong>Plugins<\/strong> screen.<\/li>\n<li>Open <strong>Settings &gt; Branch Locator<\/strong>.<\/li>\n<li>Select OpenStreetMap or Google Maps.<\/li>\n<li>Add at least one location. For OpenStreetMap, provide latitude and longitude. For Google Maps, enter a Google Maps API key and enable the Maps JavaScript API and Geocoding API in Google Cloud.<\/li>\n<li>Optionally configure the map center, zoom, custom Google Maps styles, custom marker icons, and a drawn service area.<\/li>\n<li>Add <code>[branch_locator]<\/code> to a page, post, or custom post type.<\/li>\n<\/ol>\n\n<p>The Google Maps API key can be entered in plugin settings or defined in <code>wp-config.php<\/code>:<\/p>\n\n<pre><code>define( 'BRANCH_LOCATOR_GOOGLE_MAPS_API_KEY', 'YOUR_API_KEY_HERE' );\n<\/code><\/pre>\n\n<p>The <code>wp-config.php<\/code> constant takes priority over the key saved in plugin settings. Restrict a Google API key to the appropriate APIs and website referrers.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20a%20google%20maps%20api%20key%3F\"><h3>Do I need a Google Maps API key?<\/h3><\/dt>\n<dd><p>No, not when using OpenStreetMap. A Google Maps API key is required only when Google Maps is selected.<\/p><\/dd>\n<dt id=\"how%20do%20i%20get%20markers%20to%20appear%20on%20openstreetmap%3F\"><h3>How do I get markers to appear on OpenStreetMap?<\/h3><\/dt>\n<dd><p>Edit each location in <strong>Settings &gt; Branch Locator<\/strong> and enter valid latitude and longitude coordinates. OpenStreetMap mode does not geocode addresses.<\/p><\/dd>\n<dt id=\"can%20i%20translate%20a%20location%20into%20more%20than%20two%20languages%3F\"><h3>Can I translate a location into more than two languages?<\/h3><\/dt>\n<dd><p>Yes. Add a translation for each language and enter its language code, name, and address. The shortcode's <code>lang<\/code> attribute selects the displayed translation.<\/p><\/dd>\n<dt id=\"can%20i%20use%20the%20shortcode%20on%20a%20custom%20post%20type%3F\"><h3>Can I use the shortcode on a custom post type?<\/h3><\/dt>\n<dd><p>Yes, in the content of any custom post type that processes WordPress shortcodes. Add <code>[branch_locator]<\/code> to the post content or a shortcode-capable page builder block.<\/p><\/dd>\n<dt id=\"does%20the%20service-area%20polygon%20restrict%20where%20visitors%20can%20get%20directions%3F\"><h3>Does the service-area polygon restrict where visitors can get directions?<\/h3><\/dt>\n<dd><p>No. The polygon is a visual highlight only. It does not validate whether an address is inside the area or change directions behavior.<\/p><\/dd>\n<dt id=\"why%20is%20my%20visitor%27s%20location%20unavailable%3F\"><h3>Why is my visitor's location unavailable?<\/h3><\/dt>\n<dd><p>Browser geolocation requires visitor permission and is generally available only on secure HTTPS pages (or localhost). Visitors can decline the request or their browser\/device may not provide a location.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.2.3<\/h4>\n\n<ul>\n<li>Updated the plugin name and slug.<\/li>\n<\/ul>\n\n<h4>1.2.2<\/h4>\n\n<ul>\n<li>Renamed the plugin to distinguish it in the directory.<\/li>\n<li>Enqueued plugin styles and scripts and documented provider data transfers.<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>Bundled Leaflet and Leaflet Draw locally instead of loading library assets from a CDN.<\/li>\n<li>Matched the translation text domain to the plugin slug.<\/li>\n<li>Declared compatibility through WordPress 7.1.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Added OpenStreetMap and Google Maps provider selection.<\/li>\n<li>Added marker coordinates, custom icons, map center and zoom settings, and Google Maps styling.<\/li>\n<li>Added a service-area drawing editor, visitor geolocation, and map controls.<\/li>\n<li>Added shortcode attributes for provider, language, center, zoom, and height.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Added admin-managed multilingual locations and removed bundled sample locations.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Add multilingual branch maps with custom markers using OpenStreetMap or Google Maps. Manage locations in WordPress and embed maps with a shortcode.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/390993","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=390993"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/shebaskhan"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=390993"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=390993"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=390993"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=390993"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=390993"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=390993"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}