私はなぜ私がGETNEARCALLBACK
以下の関数をヒットしなかったのかについて行き詰まっています。ロジックは次のようになります。
- ページの読み込み時に
INITIALIZE
INITIALIZE
喜んで実行し、呼び出しますGETSTATIONS
GETSTATIONS
コールバック関数としてを使用してAJAXリクエストをGETNEARESTSTAIONS
実行し、WebサーバーはJSON形式のデータベースクエリの結果で応答します。GETNEARESTSTAIONS
GETNEARCALLBACK
結果を取得し、コールバック関数として使用してGoogleMapsAPI距離行列リクエストを作成します- 私は自分のサイトを実行し、Firebugを使用してに到達しないことを確認し
GETNEARCALLBACK
ます。
GETNEARESTSTATIONS
AJAXリクエスト内から呼び出さないと、正しく実行されるため、GoogleMapsAPIの使用は正しいと思います。
関数INITIALIZE(){GETPOSITION(); DRAWMAP(); GETADDR(); GETSTATIONS(); }
var xmlhttp;
function GETSTATIONS() {
if(window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
} else {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = GETNEARESTSTATION();
xmlhttp.open("GET", "final.php", true);
xmlhttp.send();
}
var STATIONLIST;
function GETNEARESTSTATION() {
if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
STATIONLIST = eval("(" + xmlhttp.responseText + ")");
var LAT = parseFloat(document.getElementById("LATITUDE").value);
var LON = parseFloat(document.getElementById("LONGITUDE").value);
var latlng = new google.maps.LatLng(LAT, LON);
var destinationA = STATIONLIST[0].ADDRESS;
var service = new google.maps.DistanceMatrixService();
service.getDistanceMatrix({
origins: [latlng],
destinations: [destinationA],
travelMode: google.maps.TravelMode.DRIVING,
unitSystem: google.maps.UnitSystem.IMPERIAL,
avoidHighways: false,
avoidTolls: false
}, GETNEARCALLBACK);
}
}
function GETNEARCALLBACK(response, status) {
if(status == google.maps.DistanceMatrixStatus.OK) {
var destinations = response.destinationAddresses;
var results = response.rows[0].elements;
for(var j = 0; j < results.length; j++) {
var element = results[j];
document.getElementById("STATIONADDR").innerHTML = parseFloat(element.distance.value) + " " + response.destinationAddresses[j];
}
}
}