我正在尝试通过迭代列表并检索一些信息来为谷歌地图添加标记。我正在使用原型库。代码如下:
var point = new Array();
var myMarkerOptions = new Array();
var marker = new Array();
recommendedList.each(function(item){
point[item.location.ID] = new google.maps.LatLng(item.location.lat, item.location.lng);
myMarkerOptions[item.location.ID] = {
position: point[item.location.ID],
map: map
};
marker[item.location.ID] = new google.maps.Marker(myMarkerOption[item.location.ID]);
});
其中recommendedList是表单的JSON响应:
[
{"artist":"artist1","location":{"lat":"50.952226","lng":"5.34832","ID":28}},
{"artist":"artist2","location":{"lat":"52.362287","lng":"4.883965","ID":32}},
...
]
但是,这不起作用。 我知道问题不是关于JSON或谷歌地图,因为我尝试了一个更简单的版本,使用以下代码并且它有效:
var myLatlng = new google.maps.LatLng(recommendedList[0].location.lat,recommendedList[0].location.lng);
var marker = new google.maps.Marker({
position: myLatlng,
map: map
});
所以问题必须在迭代和哈希映射中。 任何人都可以看到问题?谢谢!
答案 0 :(得分:1)
简单到没有.each
进行测试for (var i=0, item; item = recommendedList[i]; i++) {
point[item.location.ID] = new google.maps.LatLng(item.location.lat, item.location.lng);
myMarkerOptions[item.location.ID] = {
position: point[item.location.ID],
map: map
};
marker[item.location.ID] = new google.maps.Marker(myMarkerOption[item.location.ID]);
}
除非你“需要”其他数组,否则你也可以对此进行简化:
for (var i=0, item; item = recommendedList[i]; i++) {
marker[item.location.ID] = new google.maps.Marker({
new google.maps.LatLng(item.location.lat, item.location.lng),
map
});
}
答案 1 :(得分:0)
我认为它可能是您正在使用的数组访问器。一旦你完成了point
,myMarkerOptions
和marker
阵列,你在做什么?
你可以尝试将它们声明为
var point = {};
var myMarkerOptions = {};
var marker = {};
这会让你将它们称为point[item.location.ID]
(等)。我认为item.ID
属性是一个数字,JS正在尝试设置数组的数字索引,而不是在哈希中创建一个新属性。
答案 2 :(得分:0)
每个迭代器的原型不支持JSON或对象数据类型。