如果你有一個需要通過的列表,並且你不需要你正在使用的列表,但是要設置markers
或者其他東西,你可以使用一個基於隊列的方法迭代列表直到列表空:
jQuery(document).ready(function ($) {
(function initialize() {
var pos = localStorage.loc.split(","),
lat = parseFloat(pos[0]),
lng = parseFloat(pos[1]),
myLatlngs = [
new google.maps.LatLng(-25.0, 131.0),
new google.maps.LatLng(-26.0, 132.0),
new google.maps.LatLng(-24.0, 130.0)
],
myLatlngs,
mapOptions = {
zoom: 4,
center: myLatlngs[0],
mapTypeId: google.maps.MapTypeId.ROADMAP
},
map = new google.maps.Map(document.getElementById('map_canvas'), mapOptions);
while (myLatlng = myLatlngs.shift()) {
new google.maps.Marker({
position: myLatlng,
map: map,
title: 'Hello World!'
});
}
})();
});
http://jsfiddle.net/userdude/Wkn9v/9/
通過 「名單」 在這裏我指的是一個array
,不是object
的屬性。所以,假設你得到的東西下面從獲取腳本回:
data = [
{"id":"1","published":"yes","location":"-25.363882,131.044922"},
{"id":"2","published":"yes","location":" -24.96614015991296, 139.7900390625"},
{"id":"3","published":"yes","location":"-28.76765910569124, 128.3203125"}
];
while (localStorage.loc = data.shift()) {
pos = localStorage.loc.location.split(",");
lat = parseFloat(pos[0]);
lng = parseFloat(pos[1]);
latlang = new google.maps.LatLng(lat, lng);
marker = new google.maps.Marker({
position: latlang,
map: map,
title: 'Hello World!'
});
}
我並不真正相信你在做什麼用localStorage.loc
這裏,因爲你每次都覆蓋它。如果你忽略它,你可以改爲設置while (pos = ...location.split(','))
。這取決於你在做什麼以及你的腳本中data
是如何與之交互的。
您的'myLatlng'定義在哪裏? – ATOzTOA
最好包括*什麼都行不通*所以答案可以幫助解釋你做錯了什麼。否則,這只是「哦,你可以這樣或那樣」,但最終你可能並不清楚。 –