我正在尝试生成谷歌地图,需要根据街道地址找到每个标记的坐标。它找到了很好的坐标,但它只给出了“最后”输入的街道地址的坐标。我需要为每个人安排一个数组。
HTML:
<div class="gmapItems">
<input type="text" class="input-medium googleMapCity" value='New York'>
<input type="text" class="input-medium googleMapAddress">
<textarea class="input-medium googleMapInformation" value='1'></textarea>
</div>
<div class="gmapItems">
<input type="text" class="input-medium googleMapCity" value='Boston'>
<input type="text" class="input-medium googleMapAddress">
<textarea class="input-medium googleMapInformation" value='1'></textarea>
</div>
Jquery的:
$("#AddGoogleMap").on('click', function () {
mapMarkers = new Array();
$('.gmapItems').each(function(){
gmapInfo = $('.googleMapInformation',this).val();
geocoder = new google.maps.Geocoder();
address = $('.googleMapCity',this).val(), $('.googleMapAddress',this).val();
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
latitude = results[0].geometry.location.lat();
longitude = results[0].geometry.location.lng();
LatLng = new google.maps.LatLng(latitude , longitude);
}
});
mapMarkers.push("["+"'"+gmapInfo+"'", latitude, longitude+"]");
});
alert(mapMarkers)
答案 0 :(得分:1)
地理编码是异步的。您需要使用回调例程中的数据(可用的位置)。如果您以合理的方式缩进代码,您可以看到它的位置:
$("#AddGoogleMap").on('click', function () {
mapMarkers = new Array();
$('.gmapItems').each(function(){
gmapInfo = $('.googleMapInformation',this).val();
geocoder = new google.maps.Geocoder();
address = $('.googleMapCity',this).val(), $('.googleMapAddress',this).val();
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
latitude = results[0].geometry.location.lat();
longitude = results[0].geometry.location.lng();
LatLng = new google.maps.LatLng(latitude , longitude);
mapMarkers.push("["+"'"+gmapInfo+"'", latitude, longitude+"]");
} else {
alert("Geocoding failed: " + status);
}
});
});
在您的当前代码中执行完所有结果后,您的alert(mapMarkers)
将无法正常运行。