javascript - 在 Bing Maps v8 中,我可以从循环中的图层获取图钉对象吗?

标签 javascript bing-maps

在 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/

相关文章:

javascript - JSX 脚本在 Photoshop 中输出多个不同名称的图像

javascript - 如何连接字符串和变量以在 JavaScript 中创建新变量?

具有多个图像和 getElementById 的 JavaScript SwapImage

javascript - 如何声明异步生成器函数

javascript - 隐藏 Bing map AJAX v7 DirectionsManager 信息框

javascript - 在 Bingmaps v7 中显示 Pin 图上方的信息框

javascript - Bing map AJAX v7 图钉工具提示

javascript - 删除对对象方法的公共(public)访问

javascript - map 总是返回未定义

bing-maps - 如何去掉 Bing map 中的导航栏?