Location Field
Object — Displayed as a combination of fields in the Admin UI
Contains a standard set of strings for storing an address, and a longitude / latitude point with a 2dsphere index.
Also provides autocomplete functionality using Google’s Places API (requires a Google Maps API Key to be provided, must only be used in accordance with Google’s terms of service).
Google Places integration requires the google api key option to be set for Keystone. See the Google configuration documentation for details.
{ type: Types.Location, defaults: { country: 'Australia' } }
Note: the schema paths are based on Australian address formats, and should be updated to be more appropriate for other international formats. If you have feedback on how the structure should be internationalised, please open a ticket.
Options
defaults Object - default values for each path in the field schema
Schema
name String - building name
number String - unit or shop number
street1 String - street address
street2 String - street address line 2
suburb String
state String
postcode String
country String
geo Array longitude, latitude
Important: as per the MongoDB convention, the order for the geo array must be lng, lat which is the opposite of the order used by Google’s API.
enableImprove boolean
Options sets enableMapsAPI to true. If it is not set, enableMapsAPI is set to true if google server api key is set in keystone.
required Array or String or Boolean
Required works differently for location than for most other properties. There are three different types of require.
If passed an array, it uses it to set which parts of the location field are required.
If passed a comma-separated-value string, it will transform it into an array of required parts of the location field.
If any positive value is passed in, the location field becomes required for validation, including either of the above options.
Underscore methods
googleLookup(region, update, callback) - autodetect the full address and lng, lat from the stored value.
region String is passed to the Places API for regional biasing and filtering.
update String passing “overwrite” will completely overwrite existing data with the result. true will set blank properties on the field with the result.
callback(err, location, result) - is passed the parsed location object, and the raw result from Google.
Internal status codes mimic the Google API status codes. See Google Maps Geocoding API for more information.
Use of the Google Geocoding API is subject to a query limit of 2,500 geolocation requests per day, except with an enterprise license.
The Geocoding API may only be used in conjunction with a Google map; geocoding results without displaying them on a map is prohibited. Please make sure your Keystone app complies with the Google Maps API License.
Underscore methods
kmFrom([lng, lat]) - Takes a 2dsphere as an array of longitude then latitude, and then returns the distance in kilometres from the location’s long/lat. Uses the Haversine formula
milesFrom - Takes a 2dsphere as an array of longitude then latitude, and then returns the distance in miles from the location’s long/lat. Uses the Haversine formula