一連の場所があるユーザーからの距離を単純に取得しようとしています。場所は、コードの前半のデータベースから呼び出されます。「places」配列には3つのエントリがあり、各エントリにはいくつかの情報と、プレースホルダーとして両方とも0に設定されている「distance」および「duration」フィールドが含まれています。DistanceMatrixの「distance.text」と「duration.text」の結果を繰り返し処理して、対応するオブジェクトの「distance」フィールドと「duration」フィールドに追加しようとしていますが、コールバックでplaces[i]を使用できません。関数または、コールバックの外部に値を追加しようとすると、戻り値が失われます。
var service = new google.maps.DistanceMatrixService();//request distance matrix
var outputdiv = document.getElementById('info');
for (var i=1;i<places.length;i++){
var goto = new google.maps.LatLng(places[i].lat, places[i].lng);
service.getDistanceMatrix(
{
origins: [foundlatlng],
destinations: [goto],
travelMode: google.maps.TravelMode.WALKING,
unitSystem: google.maps.UnitSystem.IMPERIAL,
avoidHighways: false,
avoidTolls: false,
}, callback);//end service.getdistancematrix()
function callback(response, status) {
var distancefield = distancefield;
if (status == google.maps.DistanceMatrixStatus.OK) {
var origins = response.originAddresses;
var destinations = response.destinationAddresses;
var results = response.rows[0].elements;
for (var r = 0; r < results.length; r++) {
var element = results[r];
var distancetext = element.distance.text;
var durationtext = element.duration.text;
var to = destinations[r];
}//end for r
}//end if status=ok
}//end callback
};//end for i
console.log(places);
foundlatlng
GPSによって検出された座標であり、google.maps.LatLngとして表されます。これは、コードの前半のものです。