我使用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。
答案 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”替换为您要删除的实体类型......