Мне нужно получить экстент (ограничивающую рамку) из названия места (например, Соединенные Штаты Америки, Вирджиния, Шарлоттсвилль). Какую функцию следует вызывать в JS API?
Я хочу сделать это программно, как если бы я набрал ее в виджете поиска.
Карта создается с помощью JS API:
<script src="https://js.arcgis.com/4.12"></script> map=new Map({ basemap:baseMap, }); activeView=app.mapView=new MapView({ container:container, map:map });
Я могу использовать функцию REST вот так, но должна быть внутренняя функция:
url="http://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer/findAddressCandidates?f=pjson&SingleLine="+loc; $.ajax( { url: url, dataType: 'jsonp' } ).done(function(res) { extent=res.candidates[0].extent; });
Использование jquery AJAX неплохо, вы можете добиться того же с помощью ESRI API, используя класс esri/tasks/locator и его метод addressToLocations
esri/tasks/locator
addressToLocations
require(["esri/tasks/locator"], function(Locator) { var locator = new Locator("http://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer"); locator.addressToLocations(loc).then(function(res) { console.log(res); var extent = res.candidates[0].extent; });