我在地理编码器外部有一个数组,但是当我想在地理编码器中使用该数组时,数组的值是未定义的
var titles = new Array(<?php echo implode(",",$titles); ?>);
var length = postCode.length;
for (var i = 0; i < length; i++)
{
geocoder.geocode({'address': postCode[i]}, function(results, status)
{
if (status == google.maps.GeocoderStatus.OK)
{
lat2 = results[0].geometry.location.lat();
lng2 = results[0].geometry.location.lng();
var Latlng = new google.maps.LatLng(lat2, lng2);
var marker = new google.maps.Marker({
position: Latlng,
map: map,
title: titles[i],
icon: icon});
// alert(titles[i]) - all undefined
}
}
}
答案 0 :(得分:2)
你可以做到
var titles = <?php echo json_encode($titles); ?>;
答案 1 :(得分:1)
地理编码器是异步的。循环遍历i的所有可能值,将i设置为postCode.length + 1,这是未定义的。这可以通过功能关闭解决(但是,根据您拥有的位置数量,您可能会遇到配额或速率限制问题):
function geocodeAddress(index) {
geocoder.geocode({'address': postCode[index]}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var lat2 = results[0].geometry.location.lat();
var lng2 = results[0].geometry.location.lng();
var Latlng = new google.maps.LatLng(lat2, lng2);
var marker = new google.maps.Marker({
position: Latlng,
map: map,
title: titles[index],
icon: icon
});
} else { alert("geocode failed:"+status);
});
}
for(var i = 0; i < length; i++)
{
geocodeAddress(i);
}