0

我正在尝试学习 javascript 并使用 Google Maps API,但我似乎陷入了一个(希望如此)简单的问题。

我写了这个函数来获取地理编码坐标:

function codeAddress() {
    var st = document.getElementById('start').value;
    var dest = document.getElementById('end').value;

geocoder.geocode( { 'address': st}, function(results, status) {
 var startCoded = results[0].geometry.location;
    var startLng = results[0].geometry.location.lng();
    var startLat = results[0].geometry.location.lat();   
 document.getElementById("content1").value = startCoded;

});
    geocoder.geocode( { 'address': dest}, function(results, status) {
    var endCoded = results[0].geometry.location;
    var endLng = results[0].geometry.location.lng();
    var endLat = results[0].geometry.location.lat();        
    document.getElementById("content2").value = endCoded;
        if (status == google.maps.GeocoderStatus.OK) {
var lngSpan = startLng - endLat;  
var latSpan = startLat - endLng;
console.log(endCoded);
  }

});
    }

但我收到此错误:ReferenceError: startLng is not defined

我知道这与我需要回调来阅读它们的事实有关,但我不知道如何做到这一点。

提前致谢。

4

1 回答 1

0

我认为这就是你声明变量的方式(它们是你的函数的本地而不是全局的)。尝试:

var startLng, startLat, endLng, endLat;
function codeAddress() {
    var st = document.getElementById('start').value;
    var dest = document.getElementById('end').value;

geocoder.geocode( { 'address': st}, function(results, status) {
 var startCoded = results[0].geometry.location;
    startLng = results[0].geometry.location.lng();
    startLat = results[0].geometry.location.lat();   
 document.getElementById("content1").value = startCoded;

});
    geocoder.geocode( { 'address': dest}, function(results, status) {
    var endCoded = results[0].geometry.location;
    endLng = results[0].geometry.location.lng();
    endLat = results[0].geometry.location.lat();        
    document.getElementById("content2").value = endCoded;
        if (status == google.maps.GeocoderStatus.OK) {
var lngSpan = startLng - endLat;  
var latSpan = startLat - endLng;
console.log(endCoded);
  }

});
    }
于 2013-01-27T04:13:05.703 回答