cesium
Version:
CesiumJS is a JavaScript library for creating 3D globes and 2D maps in a web browser without a plugin.
101 lines (89 loc) • 2.43 kB
JavaScript
import Check from "./Check.js";
import defaultValue from "./defaultValue.js";
import Rectangle from "./Rectangle.js";
import Resource from "./Resource.js";
import defined from "./defined.js";
import DeveloperError from "./DeveloperError.js";
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;
//>>includeStart('debug', pragmas.debug);
if (!defined(key)) {
throw new DeveloperError("options.key is required.");
}
//>>includeEnd('debug');
this._key = key;
this._resource = new Resource({
url: url,
queryParameters: {
key: key,
},
});
}
Object.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),
};
});
});
};
export default BingMapsGeocoderService;