缩放到选定的功能
zooming to selected features
我正在尝试 select 一个要素,并使用 ArcGIS javascript api.
将地图缩放到该 selected 要素
我已经检查以确保查询 returns 实际结果,因此应该检索到数据。我的脚本基于 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>
我原以为地图会缩放到 selected 多边形的范围,但事实并非如此。没有出现错误消息 - 地图仅显示原始范围。
希望有人能给我指出正确的方向。
将你的行 const query = new Query();
替换为 const query = featureLayer.createQuery();
因为你没有在 require
中声明 Query
,例如:
require([
"esri/Map",
"esri/views/MapView",
"esri/layers/FeatureLayer",
"esri/tasks/support/Query"
], function(Map, MapView, FeatureLayer, Query) {
自 ArcGIS Javascript API 版本 4.* 起,您可以从 featureLayer
: https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html#createQuery and you control the view with 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);
});
我正在尝试 select 一个要素,并使用 ArcGIS javascript api.
将地图缩放到该 selected 要素我已经检查以确保查询 returns 实际结果,因此应该检索到数据。我的脚本基于 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>
我原以为地图会缩放到 selected 多边形的范围,但事实并非如此。没有出现错误消息 - 地图仅显示原始范围。
希望有人能给我指出正确的方向。
将你的行 const query = new Query();
替换为 const query = featureLayer.createQuery();
因为你没有在 require
中声明 Query
,例如:
require([
"esri/Map",
"esri/views/MapView",
"esri/layers/FeatureLayer",
"esri/tasks/support/Query"
], function(Map, MapView, FeatureLayer, Query) {
自 ArcGIS Javascript API 版本 4.* 起,您可以从 featureLayer
: https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html#createQuery and you control the view with 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);
});