2
好吧,我與Google Maps API v3鬼混,我遇到了一個問題。我不知道它的API或只是我犯的一些JS錯誤。谷歌地圖API地理編碼功能問題
問題: addMarkerFromAdress()
函數調用geocodeFromAdress()
返回的座標返回到addMarkerFromAdress()
。但返回的值是「undefined」。
作爲一個調試我添加了兩個警報輸出,一個在addMarkerFromAdress()
和一個在geocodeFromAdress()
。讓我感到困擾的是,addMarkerFromAdress()
中的alert()
似乎在返回任何值之前觸發。爲什麼?
來源:
<script type="text/javascript">
var geocoder;
var map;
function initializeGoogleMaps() {
geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(0, 0);
var myOptions = {
zoom: 1,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
}
function geocodeFromAdress(address) {
geocoder.geocode({ 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var latLng = results[0].geometry.location;
alert(latLng); //Outputs coordinates, but is for some reason outputted 2nd
return latLng;
} else {
alert("Geocode was not successful for the following reason: " + status);
}
});
}
function addMarkerFromAdress(address, title){
var latLng = geocodeFromAdress(address);
alert(latLng); //Outputs "undefined", but is for some reason outputted 1st
map.setCenter(latLng);
var marker = new google.maps.Marker({
map: map,
position: latLng
});
}
window.onload = function() {
initializeGoogleMaps();
addMarkerFromAdress('Berlin, Germany', 'Berlin');
}
</script>
所以我不能只是得到地理編碼器的座標?我必須在相同的功能中實際使用它們。 – jamietelin
不符合你編碼的方式。您可以從地理編碼器獲取座標,但不知道它們何時將被返回,因此您需要編寫代碼,以便在返回時將它們傳遞給'addMarkerFromAdress'函數以放置點地圖。 –
那麼我可能有'geocodeFromAdress()'裏面的所有代碼?我仍然不能喘口氣,爲什麼在geocodeFromAdress()返回一個值之前,addMarkerFromAdress()繼續。當然,我明白你說的話,看起來沒錯,但我仍然不明白:P – jamietelin