刷新Bing Maps API内容

时间:2015-12-24 17:21:42

标签: javascript bing

我使用Bing Maps API版本7.我在地图上绘制了4个EntityCollections:1表示一组图钉,1表示与这些图钉关联的一组信息框,1表示一组图钉折线,和与这些折线相关的一组信息框的1。我使用setInterval尝试定期刷新折线及其相关信息框的内容。我清除折线的实体集合,如下所示:

//clear polylines from map
    map.entities.clear(mapSegments);
    map.entities.clear(mapSegmentInfoboxes);

然后重新初始化它们再填充它们之前:

//new polyline collection
    mapSegments = new Microsoft.Maps.EntityCollection();
    mapSegmentInfoboxes = new Microsoft.Maps.EntityCollection();

此功能有效,但是,我的图钉信息框在刷新完成后停止显示。

在刷新过程中,图钉及其相关的信息框保持不变,为什么我的图钉信息框停止显示?显示信息框的图钉的点击事件仍会触发,但不会显示任何内容。

执行单个语句map.entities.clear(mapSegments)似乎搞乱了与之无关的另一个EntityCollection。

1 个答案:

答案 0 :(得分:3)

在Bing文档中调用map.entities.clear();它将清除map.entities数组中的所有实体。它看起来不像clear()方法,除了任何 perimeters 参数。

您可以尝试其中一种方法

//clear polylines from map
map.entities.remove(mapSegments);
map.entities.remove(mapSegmentInfoboxes);

//clear polylines from map
map.entities.removeAt(indexOfMapSegments);
map.entities.removeAt(indexOfMapSegmentInfoboxes);

或更完整的例子是

for(var i = map.entities.getLength()-1; i > = 0; i--) {
    var polyline= map.entities.get(i); 
    if (polyline instanceof Microsoft.Maps.Polyline) { 
    map.entities.removeAt(i);  
   }
} 
displayAlert('Polylines removed');

只需将“instanceof Microsoft.Maps.Polyline”替换为您要删除的实体类型......

if you want to look at the documentation it is here https://msdn.microsoft.com/en-us/library/gg427616.aspx