状況は次のとおりです。
- 1 つの発信元アドレスがあります
- x (3 を認めます) 店舗を持つ x (3 を認める) ブランドがあります。
ブランドごとに、元の住所から最も近い店舗を特定する必要があります。
問題は、非同期で同時に実行される getDistanceMatrix コールバック関数です。そのようなコールバックがそのようなブランドに対応していることを見つける方法がわかりません。
実際、最寄りの店舗をすべて取得しましたが、それらをそれぞれのブランドに接続する方法がわかりません。
これが私のコードです:
//Origin address
var origin = "origin address";
//For each brands, list store's address
var brand1 = new Array("address1", "address2", "address3");
var brand5 = new Array("address1", "address2", "address3");
var brand29 = new Array("address1", "address2", "address3");
calculateDistance(1, brand1);
calculateDistance(5, brand5);
calculateDistance(29, brand29);
//Classic google code
function calculateDistance(id_brand, adresses){
var service = new google.maps.DistanceMatrixService();
service.getDistanceMatrix({
origins: [origin],
destinations: adresses,
travelMode: google.maps.TravelMode.DRIVING,
avoidHighways: false,
avoidTolls: false,
}, callback);
}
function callback(response, status) {
var tabDistance = new Array();
if (status == google.maps.DistanceMatrixStatus.OK) {
var origins = response.originAddresses;
var destinations = response.destinationAddresses;
for (var i = 0; i < origins.length; i++) {
var results = response.rows[i].elements;
for (var j = 0; j < results.length; j++) {
var element = results[j];
var distance = element.distance.value;
var from = origins[i];
var to = destinations[j];
tabDistance[j] = new Array(distance,to);
}
}
//Find the nearest store
var indice = minDistance(tabDistance);
alert('Nearest store ' + tabDistance[indice][0]);
}
}
});
ご協力いただきありがとうございます !