【发布时间】:2016-07-04 09:20:19
【问题描述】:
我正在尝试使用 JavaScript 和 Google Maps API 在地图上绘制多个标记;我有一个包含键值对的大型对象数组,如下所示:
xyz: [ { name: 'abc', loc: { lat: 0.000000, lng: 0.000000 } }, ... , ... ]
我有一个循环遍历这个数组并在 xyz.loc 为数组中的每个对象绘制一个标记(见下文)。现在,我正在尝试根据 xyz.name 属性更改用于每个标记的图标。
我已经定义了两个不同的自定义标记图标及其关联的形状(xyzMarkerIcon1、xyzMarkerIcon2 和 xyzMarkerShape),我正在尝试使用 If-Else 语句切换使用哪一个,如下所示:
var xyzMarkerIcon = {};
for (i in xyz) {
if (xyz[i].name = 'abc') {
xyzMarkerIcon = xyzMarkerIcon1
}
else {
xyzMarkerIcon = xyzMarkerIcon2
}
xyzMarkerArray[i] = new google.maps.Marker({
map: map,
position: xyz[i].loc,
icon: xyzMarkerIcon,
shape: xyzMarkerShape,
});
}
For 循环运行良好,但第一次迭代后似乎忽略了 If-Else 语句;数组中的所有对象都已成功绘制,但都使用 xyzMarkerIcon 的第一个实例。
我觉得这应该是一个足够简单的问题,但我就是想不通!感谢您的帮助!
【问题讨论】:
-
那是因为你有 xyz[0].name 作为 abc 然后其他?这就是为什么它被忽视(而不是根本没有被忽视?)
-
xyz[i].name = 'abc'这是赋值而不是比较,将=替换为==。if (string)始终为真,因此始终使用第一个图标
标签: javascript arrays google-maps google-maps-api-3