cesium
Version:
CesiumJS is a JavaScript library for creating 3D globes and 2D maps in a web browser without a plugin.
65 lines (56 loc) • 2.04 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|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;