cesium
Version:
CesiumJS is a JavaScript library for creating 3D globes and 2D maps in a web browser without a plugin.
62 lines (53 loc) • 2.34 kB
JavaScript
import Check from './Check.js';
import Credit from './Credit.js';
import defaultValue from './defaultValue.js';
import defined from './defined.js';
import Ion from './Ion.js';
import PeliasGeocoderService from './PeliasGeocoderService.js';
import Resource from './Resource.js';
/**
* Provides geocoding through Cesium ion.
* @alias IonGeocoderService
* @constructor
*
* @param {Object} options Object with the following properties:
* @param {Scene} options.scene The scene
* @param {String} [options.accessToken=Ion.defaultAccessToken] The access token to use.
* @param {String} [options.accessToken=Ion.defaultAccessToken] The access token to use.
* @param {String|Resource} [options.server=Ion.defaultServer] The resource to the Cesium ion API server.
*
* @see Ion
*/
function IonGeocoderService(options) {
options = defaultValue(options, defaultValue.EMPTY_OBJECT);
//>>includeStart('debug', pragmas.debug);
Check.typeOf.object('options.scene', options.scene);
//>>includeEnd('debug');
var accessToken = defaultValue(options.accessToken, Ion.defaultAccessToken);
var server = Resource.createIfNeeded(defaultValue(options.server, Ion.defaultServer));
server.appendForwardSlash();
var defaultTokenCredit = Ion.getDefaultTokenCredit(accessToken);
if (defined(defaultTokenCredit)) {
options.scene.frameState.creditDisplay.addDefaultCredit(Credit.clone(defaultTokenCredit));
}
var searchEndpoint = server.getDerivedResource({
url: 'v1/geocode'
});
if (defined(accessToken)) {
searchEndpoint.appendQueryParameters({ access_token: accessToken });
}
this._accessToken = accessToken;
this._server = server;
this._pelias = new PeliasGeocoderService(searchEndpoint);
}
/**
* @function
*
* @param {String} query The query to be sent to the geocoder service
* @param {GeocodeType} [type=GeocodeType.SEARCH] The type of geocode to perform.
* @returns {Promise<GeocoderService~Result[]>}
*/
IonGeocoderService.prototype.geocode = function (query, geocodeType) {
return this._pelias.geocode(query, geocodeType);
};
export default IonGeocoderService;