SilverStripe wrapper for Geocoder
composer require dynamic/silverstripe-geocoder
See License
in mysite/_config/config.yml
:
SilverStripe\ORM\DataObject:
extensions:
- Dynamic\SilverStripeGeocoder\AddressDataExtension
- Dynamic\SilverStripeGeocoder\DistanceDataExtension
Dynamic\SilverStripeGeocoder\GoogleGeocoder:
geocoder_api_key: 'your-key-here'
The AddressDataExtension adds Address
, Address2
, City
, State
, PostalCode
, Country
, Lat
, and Lng
fields.
The Lat
and Lng
fields are read only in the cms and are automatically generated on write.
Geocoding can be disabled on a model basis by setting disable_geocoding
to true.
SilverStripe\ORM\DataObject:
disable_geocoding: true
In addition to fields the AddressDataExtension also adds a method for rendering a static map image.
An additional api key is required.
Dynamic\SilverStripeGeocoder\GoogleGeocoder:
geocoder_api_key: BACK_END_API_KEY
map_api_key: FRONT_END_API_KEY
Using $AddressMap
in a template will render the map.
$AddressMap
also has options to easily modify the width, height, and scale of the map. $AddressMap(320, 240, 1)
The map can be styled by adding a mapStyle.json
in any of the following folders in a theme:
client/dist/js/
client/dist/javascript/
dist/js/
dist/javascript/
src/javascript/thirdparty
js/
javascript/
styles can be generated using an online service like Styling Wizard: Google Maps APIs
This does not work on local due to google needing to download the image off the server.
A custom marker image can be used to match the style of the map in about the same way as the style.
An image named mapIcon
with an extension of png
, jpg
, jpeg
, or gif
can be put in any of the following folders in a theme:
client/dist/img/
client/dist/images/
dist/img/
dist/images/
img/
images/
The DistanceDataExtension should be used in conjunction with the AddressDataExtension.
The only time it is viable by itself is if the extended DataObject has Lat
and Lng
fields.
The DistanceDataExtension will add a pseudo field for distance away from an address to a DataObject.
The address to check the distance to is from the current controller initially.
This can be changed by implementing updateAddressValue($address)
on the DataObject or an extension.
/**
* Always get the distance from Neuschwanstein Castle
*/
public function updateAddressValue(&$address) {
$address = 'NeuschwansteinstraÃe 20, 87645 Schwangau, Germany';
}
See the docs/en folder.
Bugs are tracked in the issues section of this repository. Before submitting an issue please read over
existing issues to ensure yours is unique.
If the issue does look like a new bug:
Please report security issues to the module maintainers directly. Please don't file security issues in the bugtracker.
If you would like to make contributions to the module please ensure you raise a pull request and discuss with the module maintainers.
Module rating system helping users find modules that are well supported. For more on how the rating system works visit Module standards
Score not correct? Let us know there is a problem