UNPKG

cesium

Version:

CesiumJS is a JavaScript library for creating 3D globes and 2D maps in a web browser without a plugin.

109 lines (96 loc) 3.01 kB
define([ './BingMapsApi', './Check', './defaultValue', './defined', './defineProperties', './Rectangle', './Resource' ], function( BingMapsApi, Check, defaultValue, defined, defineProperties, Rectangle, Resource) { 'use strict'; var url = 'https://dev.virtualearth.net/REST/v1/Locations'; /** * Provides geocoding through Bing Maps. * @alias BingMapsGeocoderService * @constructor * * @param {Object} options Object with the following properties: * @param {String} [options.key] A key to use with the Bing Maps geocoding service */ function BingMapsGeocoderService(options) { options = defaultValue(options, defaultValue.EMPTY_OBJECT); var key = options.key; this._key = BingMapsApi.getKey(key); this._resource = new Resource({ url: url, queryParameters: { key: this._key } }); } defineProperties(BingMapsGeocoderService.prototype, { /** * The URL endpoint for the Bing geocoder service * @type {String} * @memberof {BingMapsGeocoderService.prototype} * @readonly */ url : { get : function () { return url; } }, /** * The key for the Bing geocoder service * @type {String} * @memberof {BingMapsGeocoderService.prototype} * @readonly */ key : { get : function () { return this._key; } } }); /** * @function * * @param {String} query The query to be sent to the geocoder service * @returns {Promise<GeocoderService~Result[]>} */ BingMapsGeocoderService.prototype.geocode = function(query) { //>>includeStart('debug', pragmas.debug); Check.typeOf.string('query', query); //>>includeEnd('debug'); var resource = this._resource.getDerivedResource({ queryParameters: { query: query } }); return resource.fetchJsonp('jsonp').then(function(result) { if (result.resourceSets.length === 0) { return []; } var results = result.resourceSets[0].resources; return results.map(function (resource) { var bbox = resource.bbox; var south = bbox[0]; var west = bbox[1]; var north = bbox[2]; var east = bbox[3]; return { displayName: resource.name, destination: Rectangle.fromDegrees(west, south, east, north) }; }); }); }; return BingMapsGeocoderService; });