Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 | 91x 90x 90x 1x 182x 1x 5x 5x 5x 5x 2x 2x 2x 2x 2x 2x | import Cartesian3 from "./Cartesian3.js";
import Check from "./Check.js";
import defined from "./defined.js";
import GeocodeType from "./GeocodeType.js";
import Rectangle from "./Rectangle.js";
import Resource from "./Resource.js";
/**
* Provides geocoding via a {@link https://pelias.io/|Pelias} server.
* @alias PeliasGeocoderService
* @constructor
*
* @param {Resource|string} url The endpoint to the Pelias server.
*
* @example
* // Configure a Viewer to use the Pelias server hosted by https://geocode.earth/
* const viewer = new Cesium.Viewer('cesiumContainer', {
* geocoder: new Cesium.PeliasGeocoderService(new Cesium.Resource({
* url: 'https://api.geocode.earth/v1/',
* queryParameters: {
* api_key: '<Your geocode.earth API key>'
* }
* }))
* });
*/
function PeliasGeocoderService(url) {
//>>includeStart('debug', pragmas.debug);
Check.defined("url", url);
//>>includeEnd('debug');
this._url = Resource.createIfNeeded(url);
this._url.appendForwardSlash();
}
Object.defineProperties(PeliasGeocoderService.prototype, {
/**
* The Resource used to access the Pelias endpoint.
* @type {Resource}
* @memberof PeliasGeocoderService.prototype
* @readonly
*/
url: {
get: function () {
return this._url;
},
},
/**
* Gets the credit to display after a geocode is performed. Typically this is used to credit
* the geocoder service.
* @memberof PeliasGeocoderService.prototype
* @type {Credit|undefined}
* @readonly
*/
credit: {
get: function () {
return undefined;
},
},
});
/**
* @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[]>}
*/
PeliasGeocoderService.prototype.geocode = async function (query, type) {
//>>includeStart('debug', pragmas.debug);
Check.typeOf.string("query", query);
//>>includeEnd('debug');
const resource = this._url.getDerivedResource({
url: type === GeocodeType.AUTOCOMPLETE ? "autocomplete" : "search",
queryParameters: {
text: query,
},
});
return resource.fetchJson().then(function (results) {
return results.features.map(function (resultObject) {
let destination;
const bboxDegrees = resultObject.bbox;
Iif (defined(bboxDegrees)) {
destination = Rectangle.fromDegrees(
bboxDegrees[0],
bboxDegrees[1],
bboxDegrees[2],
bboxDegrees[3],
);
} else {
const lon = resultObject.geometry.coordinates[0];
const lat = resultObject.geometry.coordinates[1];
destination = Cartesian3.fromDegrees(lon, lat);
}
return {
displayName: resultObject.properties.label,
destination: destination,
attributions: results.attributions,
};
});
});
};
export default PeliasGeocoderService;
|