function btnClick() {
var geocoder = new google.maps.Geocoder();
var truckName = [];
var addr = [];
var Grid_Table = document.getElementById('GridView1');
var locations2 = [{lat: -42.7545, lng: 147.735, addres: "3", geoAddress: "waa", truckName: "MX4" },
{lat: -43.7545, lng: 142.735, addres: "1", geoAddress: "waa", truckName: "MX5" },
{lat: -44.7545, lng: 143.735, addres: "2", geoAddress: "waa", truckName: "MX8" }];
for (var row = 1; row < Grid_Table.rows.length - 1; row++) {
truckName.push(Grid_Table.rows[row].cells[0].textContent);
var addr = Grid_Table.rows[row].cells[4].textContent;
geocoder.geocode({ 'address': addr }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var loc = results[0].geometry.location;
var latitude = loc.lat();
var longitude = loc.lng();
locations2.push({ lat: latitude, lng: longitude, addres: addr, geoAddress: results[0].formatted_address, truckName: truckName[row] });
} // end if
}); // end geocoder
} // end for
document.cookie = "locations=" + JSON.stringify(locations2);
}
所以我的地图工作。但它只绘制前三个位置。我知道这是因为GeoCoding是异步的。但对于我的生活,我无法想象如何等待。我希望先完成所有GeoCoding,然后设置cookie。请帮忙。GeoCoding - 如何等待所有位置先解析,然后设置cookie
'但它只是绘制第一个3 locations' - 这可能不是因为它是异步的,这可能是因为你可能会达到费率限制(每秒50) - 检查浏览器**开发人员**工具网络标签,看看谷歌是否告诉你减慢 –
它只绘制硬编码的3。 – Michael
哦,对了 - 对不起,没意识到你还没有公布密谋的代码 –