UNPKG

leaflet-control-geocoder

Version:

Extendable geocoder with builtin support for Nominatim, Bing, Google, Mapbox, Photon, What3Words, MapQuest, Mapzen

54 lines (49 loc) 1.48 kB
var L = require('leaflet'), Util = require('../util'); module.exports = { class: L.Class.extend({ initialize: function(key) { this.key = key; }, geocode : function (query, cb, context) { Util.jsonp('//dev.virtualearth.net/REST/v1/Locations', { query: query, key : this.key }, function(data) { var results = []; if( data.resourceSets.length > 0 ){ for (var i = data.resourceSets[0].resources.length - 1; i >= 0; i--) { var resource = data.resourceSets[0].resources[i], bbox = resource.bbox; results[i] = { name: resource.name, bbox: L.latLngBounds([bbox[0], bbox[1]], [bbox[2], bbox[3]]), center: L.latLng(resource.point.coordinates) }; } } cb.call(context, results); }, this, 'jsonp'); }, reverse: function(location, scale, cb, context) { Util.jsonp('//dev.virtualearth.net/REST/v1/Locations/' + location.lat + ',' + location.lng, { key : this.key }, function(data) { var results = []; for (var i = data.resourceSets[0].resources.length - 1; i >= 0; i--) { var resource = data.resourceSets[0].resources[i], bbox = resource.bbox; results[i] = { name: resource.name, bbox: L.latLngBounds([bbox[0], bbox[1]], [bbox[2], bbox[3]]), center: L.latLng(resource.point.coordinates) }; } cb.call(context, results); }, this, 'jsonp'); } }), factory: function(key) { return new L.Control.Geocoder.Bing(key); } };