масштабирование до выбранных функций - PullRequest
1 голос
/ 27 мая 2019

Я пытаюсь выбрать объект и приблизить карту к этому выбранному объекту, используя javascript api ArcGIS.

Я проверил, чтобы запрос возвращал фактические результаты, поэтому должны быть данныебудучи восстановленным.Я основываю сценарий на вступлении к FeatureLayer - 4.11.Код ниже.

<script>
  require([
    "esri/Map",
    "esri/views/MapView",
    "esri/layers/FeatureLayer"
  ], function(Map, MapView, FeatureLayer) {
    var map = new Map({
      basemap: "hybrid"
    });

    var view = new MapView({
      container: "viewDiv",
      map: map,

      extent: {
        // autocasts as new Extent()
        xmin: -9177811,
        ymin: 4247000,
        xmax: -9176791,
        ymax: 4247784,
        spatialReference: 102100
      }
    });

    /********************
     * Add feature layer
     ********************/

    // Carbon storage of trees in Warren Wilson College.
    var featureLayer = new FeatureLayer({
      url:
        "http://someURL/FeatureServer/45"
    });

    map.add(featureLayer);

    const query = new Query();
    query.where = "LASTNAME = 'GLOVER'";
    query.outSpatialReference = { wkid: 102100 };
    query.returnGeometry = true;
    query.outFields = [ "LASTNAME" ];

    featureLayer.queryFeatures(query).then(function(results){
      var newextent = esri.graphicsExtent(results.features);
      map.setExtent(newextent,true);

    });

  });
</script>

Я бы ожидал, что карта увеличится до размеров выбранного многоугольника, но это не так.Сообщения об ошибках не отображаются - карта отображается только с исходным экстентом.

Надеюсь, кто-то может указать мне правильное направление.

1 Ответ

0 голосов
/ 05 июня 2019

Замените вашу строку const query = new Query(); на const query = featureLayer.createQuery();, потому что вы не объявили Query в require, например:

require([
  "esri/Map",
  "esri/views/MapView",
  "esri/layers/FeatureLayer",
  "esri/tasks/support/Query"
], function(Map, MapView, FeatureLayer, Query) {

Начиная с версии 4. * ArcGIS Javascript API, вы можете создавать запросы из featureLayer: https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html#createQuery и управлять представлением с помощью MapView https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html#goTo:

featureLayer.queryFeatures(query).then(function(results){
  const features = results.features;
  view.goTo(features[0].geometry);
});
...