FieldtypeMapMarker Module for ProcessWire
This Fieldtype for ProcessWire holds an address or location name, and automatically geocodes the address to latitude/longitude using Google Maps API. The resulting values may be used to populate any kind of map (whether Google Maps or another).
This Fieldtype was created to serve as an example of creating a custom Fieldtype and Inputfield that contains multiple pieces of data. Though the Fieldtype has now gone far beyond that and is relatively full featured. As a result, it may no longer be the simplest example of how to implement a Fieldtype/Inputfield, though it is very effective and useful.
MapMarker also has a corresponding Inputfield and Markup module, named InputfieldMapMarker and MarkupGoogleMap. When you install FieldtypeMapMarker, the Inputfield will also be installed and used for input on the admin side. Installation of MarkupGoogleMap is optional. It provides a simple way to render Google maps with the data managed by FieldtypeMapMarker.
This Fieldtype has a support forum
Using Map Marker
How to install
Copy all of the files for this module into /site/modules/FieldtypeMapMarker/
In your admin, go to the Modules screen and "check for new modules." Click install for the Map Marker Fieldtype.
In your admin, go to Setup > Fields > Add New Field. Choose MapMarker as the type. If you are not sure what to name your field, simply "map" is a good one! Once created, configure the settings on the input tab.
Add your new "map" field to one or more templates, as you would any other field.
How to use from the page editor
Create or edit a page using one of the templates you added the "map" field to.
The geocoding also works in reverse. You may drag the map marker wherever you want and it will populate the address field for you. You may also populate the latitude, longitude and zoom fields manually if you like. Unchecking the box between address and latitude disables the geocoder.
How to use from the API, in your template files
In your template files, you can utilize this data for your own Google Maps (or anything else that you might need latitude/longitude for).
Lets assume that your field is called 'map'. Here is how you would access the components of it from the API: