Arcgis Javascript动态显示折线信息窗口

Arcgis Javascript Dynamically Show infoWindow for Polylines

本文关键字:信息窗 窗口 信息 折线 Javascript 动态显示 Arcgis      更新时间:2023-09-26

我正在使用ArcGIS Javascript API的web地图上工作,并且在显示折线的infoWindow时存在问题。我要做的是在执行selectFeatures后动态显示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); 
}   

据我所知,您必须编写自定义代码来重新设置范围,以便弹出框可见。您可以在Bootstrap Map源代码中看到一个示例。你可以包含这个库,并使用它来实例化你的map,并免费获得这种行为——即使你没有使用Bootstrap。

或者,您可以使用区段的expand()方法强制它缩小某些因子。