2013-09-24 1 views
-1

Я пытаюсь увидеть значения широты и долготы в качестве глобальных переменных, чтобы их можно было использовать. Однако, когда вызывается функция codeAddress(), даже до того, как она завершает выполнение, последующее внутреннее предупреждение печатается, а карта отображается пустым (код показывает жестко заданные значения). Что я делаю не так?API API JavaScript Javascript вместе с кодом Geolocator не работает

var geocoder; 
    var geoloc; 
    var latitude; 
    var longitude 

function codeAddress() { 
    geocoder = new google.maps.Geocoder(); 
    var address = 'Dallas'; 
    geocoder.geocode({ 'address': address}, function(results, status) { 
    if (status == google.maps.GeocoderStatus.OK) { 
     latitude = results[0].geometry.location.lat();alert(latitude); 
     longitude = results[0].geometry.location.lng();alert(longitude); 

    } else { 
     alert('Geocode was not successful for the following the default location set.reason: ' + status); 
    } 
    }); 
    return; 
} 

function getStoreMap(zoom) 
{ 
codeAddress(); 
google.maps.event.addDomListener(window, 'load', function() { 

    alert("Inside"+latitude); 
    var map = new google.maps.Map(document.getElementById('map-canvas'), { 
    center: new google.maps.LatLng(32.7801399,-96.80045109999998), 
    zoom: zoom, 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
    }); 

    var panelDiv = document.getElementById('panel'); 
    var data = new PlacesDataSource(map); 
    var view = new storeLocator.View(map, data,{ updateOnPan: true} 
); 

    var markerSize = new google.maps.Size(24, 24); 
    view.createMarker = function(store) { 
    return new google.maps.Marker({ 
     position: store.getLocation(), 
     icon: new google.maps.MarkerImage(store.getDetails().icon, null, null, 
      null, markerSize) 
    }); 
    }; 

    new storeLocator.Panel(panelDiv, { 
    view: view 
    }); 
}); 

} 
+0

Возможный дубликат [API API карт Google с помощью геокодирования] (http://stackoverflow.com/questions/15606660/google-maps-api-issue-with-geocoder) – geocodezip

ответ

0

Вызов Google API является асинхронным поэтому, когда вы звоните codeAddress(), он начинает вызов может продолжается с остальной частью кода.

Затем добавляется загрузка документа и вызывается уведомление при загрузке документа.

Вызов Google не завершен к моменту загрузки документа, а длинные переменные lat не назначаются вовремя.

Настройте свой документ при загрузке, чтобы инициализировать карту и сделать вызов для привязки. При полной функции вызова геолокатора вызов другой функции изменяет карту на основе результатов.

Смежные вопросы