在 Bing map v7 中,我能够将图钉添加到 entityCollection
然后在代码中循环访问该集合以设置选项或其他内容。现在,我无法从 v8 层获取引脚。
以下是我在 v7 中将 pin 添加到实体集合后所做的操作:
for (var i = 0; i < entityCollection.getLength() ; i++) {
var pin = entityCollection.get(i);
pin.setOptions({ visible: true });
}
我已经更改了对象entityCollection
到 v8 的层,我也在循环该层 while i < entityCollection.data.length
现在,在 Bing map v8 中,我无法从已添加图钉对象的图层中获取图钉对象。上面的代码在 setOptions 行上引发错误,我也尝试使用以下方法获取 pin:
entityCollection.data[i]
而不是
entityCollection.get(i)
但这也行不通。恐怕我的问题太笼统了,因为我找不到任何真正可以回答我的问题的内容。我有一个解决方法,但是当我想隐藏具有某些属性的所有引脚时,这会导致失败。提前致谢!
最佳答案
Bing map v8 已经取消了 entityCollection
- 尽管他们说它仍然受支持,但您显然不想再使用已弃用的东西。
只要有 entityCollection
,请将其替换为 Layer
(Microsoft.Maps.Layer
)。 Layer
公开了getPrimitives()
方法,该方法将为您提供内容数组。
var map = new Microsoft.Maps.Map(..., ...);
var layer = new Microsoft.Maps.Layer();
// Add layer data...
layer.add(new Microsoft.Maps.Pushpin(...));
// Add layer to map
map.layers.insert(layer);
// Then you can iterate
var layerItems = layer.getPrimitives();
var len = layerItems.length;
for(var i = 0; i < len; i++){
var pin = layerItems[i];
// Do something with your pin
pin.setOptions({visible: false});
}
请注意,如果您要对图层的全部内容进行批量更新,例如显示或隐藏图层中的每个图钉,则可以直接在图层上执行此操作。这将为您(浏览器)节省大量单独设置每个引脚的工作。
layer.setVisible(true);
关于javascript - 在 Bing Maps v8 中,我可以从循环中的图层获取图钉对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44710103/