doublesecretagency/craft-googlemaps

Maps in minutes. Powered by the Google Maps API.


README

Plugin icon

Google Maps plugin for Craft CMS

Maps in minutes. Powered by the Google Maps API.

Address Fields   •   Dynamic & Static Maps   •   Proximity Searching   •   IP-based Geolocation

Includes easy-to-use Address Fields

When managing your Craft data, each location can be set with a convenient Address field...

Animated GIF of an Address field

Create flexible Dynamic & Static Maps

Add markers, use info windows, style maps, change marker icons, apply KML layers, and much, much more...

Screenshot of a dynamic map

Universal API

The plugin features a powerful universal API which works nearly identically across JavaScript, Twig, and PHP!

Search for the Nearest Locations

Find the closest locations, and sort the results from nearest to furthest...

Screenshot of a set of proximity search results

Simple IP-based Visitor Geolocation

Locate your visitors based on their device's IP address...

Screenshot of visitor geolocation results

How to Install the Plugin

Installation via Plugin Store

See the complete instructions for installing via the plugin store...

Installation via Console Commands

To install the Google Maps plugin via the console, follow these steps:

  1. Open your terminal and go to your Craft project:
cd /path/to/project
  1. Then tell Composer to load the plugin:
composer require doublesecretagency/craft-googlemaps
  1. Then tell Craft to install the plugin:
./craft plugin/install google-maps

Alternatively, you can visit the Settings > Plugins page to finish the installation. If installed via the control panel, you will automatically be redirected to configure the plugin after installation is complete.

Once installed, you will need to add Google API keys...

Simple Code Examples

These examples barely scratch the surface of what is possible!

For complete details, check out the official plugin documentation...

Adding a Dynamic Map

{# Get the entries #}
{% set entries = craft.entries.section('locations').all() %}

{# Place them on a dynamic map #}
{{ googleMaps.map(entries).tag() }}

Full dynamic maps docs are here...

Adding a Static Map

{# Get the entries #}
{% set entries = craft.entries.section('locations').all() %}

{# Place them on a static map #}
{{ googleMaps.img(entries).tag() }}

Or use the src attribute directly...

{# Get only the image URL of a static map #}
{% set src = googleMaps.img(entries).src() %}

{# Display the image tag manually #}
<img src="{{ src }}">

Full static maps docs are here...

Conducting a Proximity Search

{# Set the geocoding lookup target #}
{% set target = '123 Main St' %}

{# Get a set of entries, sorted by closest to target #}
{% set entries = craft.entries.myAddressField(target).orderBy('distance').all() %}

Full proximity search docs are here...

Conducting a Geocoding Address Lookup

{# Set the geocoding lookup target #}
{% set target = '123 Main St' %}

{# Get a set of geocoding results #}
{% set results = googleMaps.lookup(target).all() %}

Full geocoding docs are here...

Geolocating Visitors

{# Get location data based on each visitor's IP address #}
{% set visitor = googleMaps.visitor %}

Full geolocation docs are here...

Further Reading

If you haven't already, flip through the complete plugin documentation. The examples above are just the tip of the iceberg, there is so much more that is possible!

And if you have any remaining questions, feel free to reach out to us (via Discord is preferred).

On behalf of Double Secret Agency, thanks for checking out our plugin! 🍺

Logo for Double Secret Agency