Функция геокодирования в ArcGIS онлайн - PullRequest
0 голосов
/ 29 октября 2019

Мне нужно получить экстент (ограничивающую рамку) из названия места (например, Соединенные Штаты Америки, Вирджиния, Шарлоттсвилль). Какую функцию следует вызывать в 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;                                          
    }); 

1 Ответ

1 голос
/ 30 октября 2019

Использование jquery AJAX неплохо, вы можете добиться того же с помощью ESRI API, используя класс 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;    
  });
...