/*
* Copyright 2003-2006, 2009, 2017, 2020 United States Government, as represented
* by the Administrator of the National Aeronautics and Space Administration.
* All rights reserved.
*
* The NASAWorldWind/WebWorldWind platform is licensed under the Apache License,
* Version 2.0 (the "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License
* at http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed
* under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
* CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*
* NASAWorldWind/WebWorldWind also contains the following 3rd party Open Source
* software:
*
* ES6-Promise – under MIT License
* libtess.js – SGI Free Software License B
* Proj4 – under MIT License
* JSZip – under MIT License
*
* A complete listing of 3rd Party software notices and licenses included in
* WebWorldWind can be found in the WebWorldWind 3rd-party notices and licenses
* PDF found in code directory.
*/
/**
* @exports NominatimGeocoder
*/
define([
'../util/Logger'
],
function (Logger) {
"use strict";
/**
* Constructs a Nominatim geocoder.
* @alias NominatimGeocoder
* @constructor
* @classdesc Provides a gazetteer that uses Open Street Map Nominatim geocoder at Mapquest.
*/
var NominatimGeocoder = function () {
/**
* The URL of the geocoder service.
* @type {String}
* @default http://open.mapquestapi.com/nominatim/v1/search/
*/
this.service = "https://open.mapquestapi.com/nominatim/v1/search/";
};
/**
* Queries the geocoder service with a specified query string.
* @param {String} queryString The query string.
* @param {Function} callback The function to call when the service returns the query results. This
* function is passed two arguments: this geocoder and an array containing the query results. See
* [the OpenStreetMap Nominatim Wiki] {@link http://wiki.openstreetmap.org/wiki/Nominatim} for a description
* of the results. The result passed to the callback is parsed JSON.
* @param {String} accessKey The MapQuest API access key to use for the request. See
* https://developer.mapquest.com/plan_purchase/free/business_edition/business_edition_free
* to obtain a key.
*/
NominatimGeocoder.prototype.lookup = function (queryString, callback, accessKey) {
var url = this.service + queryString.replace(" ", "%20") + "?format=json",
xhr = new XMLHttpRequest(),
thisGeocoder = this;
url += "&key=" + (accessKey || "lUvVRchXGGDh5Xwk3oidrXeIDAAevOUS");
xhr.open("GET", url, true);
xhr.onreadystatechange = function () {
if (xhr.readyState === 4 && xhr.status === 200) {
var results = JSON.parse(xhr.responseText);
callback(thisGeocoder, results);
}
};
xhr.send(null);
};
return NominatimGeocoder;
});