Я пытаюсь выбрать объект и масштабировать карту до выбранного объекта с помощью API-интерфейса ArcGIS javascript.
Я проверил, чтобы убедиться, что запрос возвращает фактические результаты, поэтому данные должны быть извлечены. Я основываю сценарий на Intro to 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>
Я ожидал, что карта приблизится к экстенту выбранного полигона, но это не так. Никаких сообщений об ошибках не появляется — карта просто отображается с исходным экстентом.
Надеюсь, кто-то может указать мне в правильном направлении.
Замените свою строку 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);
});
Я могу сходить с ума, но существует ли
esri.graphicsExtent()
в v4 API? Поиск ничего не возвращает.