【发布时间】:2015-11-13 07:02:39
【问题描述】:
我正在使用 ArcGIS Javascript API 制作 web 地图,但在显示折线的 infoWindow 时遇到问题。我要做的是在执行 selectFeatures 后动态显示 infoWindow。基本上,我在选择功能的地方设置了它,地图缩放到该功能位置,我为该功能弹出了 infoWindow。我让它适用于点和多边形,但我似乎无法让它适用于折线。我已经能够成功地让 infoWindow 出现但不在所需的位置。我可以让它显示在左上角(使用 map.infoWindow.show();)或折线范围的中心(使用 map.infoWindow.show(features[0].geometry.getExtent( ).getCenter();)。但是这两者中的后者通常实际上并不指向线,并且由于它使用范围而处于偏僻的位置。我还使用了特征的路径点并获得了中点方式。这是我最接近成功的方式,但是 infoWindow 从未出现在视图空间中,并且会显示一半或四分之一 - 需要用户平移才能看到它。有谁知道我该如何解决这个问题以我想要的方式更好地工作?请参阅下面的代码 sn-p,了解我在脚本中执行此操作的区域(else 语句用于折线)。
代码片段:
if (features[0].geometry.type == "point"){
map.centerAndZoom(features[0].geometry, map.getMaxZoom()+2);
var center = features[0].geometry;
map.infoWindow.setFeatures(features);
map.infoWindow.show(center);
}else if (features[0].geometry.type == "polygon"){
var lyrExtent = features[0].geometry.getExtent().expand(2.0);
var center = features[0].geometry.getCentroid();
map.setExtent(lyrExtent);
map.infoWindow.setFeatures(features);
map.infoWindow.show(center);
}else{
var lyrExtent = features[0].geometry.getExtent().expand(2.0);
var center = features[0].geometry.getExtent().getCenter();
var centerCoords = features[0].geometry.paths[0][features[0].geometry.paths[0].length/2];
var centerPt = new Point(centerCoords, map.spatialReference);
map.setExtent(lyrExtent);
map.infoWindow.setFeatures(features);
map.infoWindow.show(center);
}
【问题讨论】:
标签: javascript gis arcgis esri arcgis-js-api