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 が定義されていません

それらを読み取るためにコールバックが必要であるという事実に関連していることは理解していますが、これを行う方法がわかりません。

前もって感謝します。

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 に答える