我正在使用ArcGIS Javascript API处理网络地图,并且在显示折线的infoWindow时遇到问题。我想要做的是在执行selectFeatures后动态显示infoWindow。基本上我设置了选择功能的地方,地图缩放到该功能位置,我弹出了该功能的infoWindow。我让它适用于点和多边形,但我似乎无法让它适用于折线。我已经能够成功地让infoWindow显示但不在所需的位置。我可以让它显示在左上角(使用map.infoWindow.show();)或在折线范围的中心(使用map.infoWindow.show(features [0] .geometry.getExtent( ).getCenter();)。但是这两者中的后者通常实际上并没有指向该行,并且因为它正在使用该范围,所以在不知名的地方。我还使用了特征的路径点并获得了中点这是我最接近成功的地方,但是infoWindow从未出现在视图空间中并且会显示一半或显示四分之一 - 要求用户平移才能看到它。有谁知道如何解决这个问题以我想要的方式更好地工作?请参阅下面的代码片段,了解我在脚本中执行此操作的区域(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);
}
答案 0 :(得分:0)
据我所知,您必须编写自定义代码来重新设置范围,以便弹出窗口可见。你可以看到an example in the Bootstrap Map source code。您可以包含该库并使用它来实例化您的地图并免费获取该行为 - 即使您没有使用Bootstrap。
或者,您可以使用extent's expand()
method强制缩小某个因素。