distanceMatrixRequestの応答を関数内で取得し、別の関数で使用したいと思いますが、できません。私は、配列内のオブジェクトに応答を入れ、その配列を他の関数への引数として送信しています。私はFirefoxの開発版で非常に奇妙なエラーが出ます:Google Maps API distanceMatrixRequestのレスポンスを使用
console.log(distanceResponse); // Outputs an array of one element, which is the object
console.log(distanceResponse[0]); // Outputs undefined
console.log(distanceResponse[0].distance); // Outputs an error
distanceResponseは未定義ではない一つの要素、なぜdistanceResponse [0]が定義されていない配列ですか?ここ は完全なコードです:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<script>
function initMap() {
var uluru = {lat: 39.936489, lng: -98.128644};
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 4,
center: uluru
});
var marker = new google.maps.Marker({
position: uluru,
map: map
});
}
function getDistances() {
var waypts = [{location: 'Washington dc', stopover: true}, {location: 'virginia', stopover: true}];
var bounds = new google.maps.LatLngBounds;
//Services
var distanceService = new google.maps.DistanceMatrixService;
var distanceResponse = [];
for (var counter = 1; counter < waypts.length; counter++) {
distanceService.getDistanceMatrix({
origins: [waypts[counter-1].location],
destinations: [waypts[counter].location],
travelMode: 'DRIVING',
unitSystem: google.maps.UnitSystem.IMPERIAL,
avoidHighways: false,
avoidTolls: false
},
function(response, status) {
if (status !== 'OK') {
alert('Error was: ' + status);
} else {
var results = response.rows[0].elements;
distanceResponse.push({duration: results[0].duration.value, distance: results[0].distance.value});
}
}
);
}
test(distanceResponse);
}
function test(distanceResponse) {
console.log(distanceResponse); // Outputs an array of one element, which is the object
console.log(distanceResponse[0]); // Outputs undefined
console.log(distanceResponse[0].distance); // Outputs an error
}
</script>
<div id="map" style="width: 622px; height: 274px; position:relative;overflow:auto; "></div>
<button onclick="getDistances()">Get distances</button>
<script defer src="https://maps.googleapis.com/maps/api/js?key=[MY-API-KEY]&callback=initMap">
</script>
</body>
</html>
はあなたのコードで
'console.log(distanceResponse);'の結果を確認して、** one **要素を持つ配列が得られることを確認できますか?あなたのコードから、あなたは空の配列を取得しているようです。確認するには、 'console.log(distanceResponse.length);' – Vivek