Google지도 지오 코더 API를 사용하여 일련의 주소를 긴 값으로 변환하는 함수 집합을 만들려고합니다.Google지도 지오 코더 API로 약속하기
현재 주소를 long 값으로 변환하는 데 성공했지만 함수가 반환되기 전에 함수가 완전히 실행됩니다. 나는 그것이 적절한 lat long 값을 기록하기 전에 정의되지 않은 오류를 던지기 때문에 이것을 안다.
자바 스크립트 약속이이 유형의 문제에 대한 해결책이 될 수 있다고 들었으므로 약간의 연구를 수행했지만 문제를 해결하는 데 도움이되지는 않습니다. 임 약속이 새롭다. Im이 잘못된 방향으로 가고 있다면 나에게 실례합니다.
Here`s 관련 코드
function getPoints(geocoder,map) {
let locationData = [];
let latValue;
for(let i = 0; i < addressData.length; i++){
let getLatLong = new Promise(function(resolve,reject){
latValue = findLatLang(addressData[i].location, geocoder, map);
if(latValue!=undefined){
resolve(latValue());
} else {
reject();
}
});
getLatLong.then(function(){
console.log(latValue);
//returns a GMap latLng Object.
locationData.push(new google.maps.LatLng(latValue[0],latValue[1]));
})
}
return locationData;
}
function findLatLang(address, geocoder, mainMap) {
geocoder.geocode({'address': address}, function(results, status) {
if (status === 'OK') {
console.log(results);
return [results[0].geometry.location.lat , results[0].geometry.location.lng];
} else {
alert('Couldnt\'t find the location ' + address);
return;
}
})
}
당신이하는 어떤 도움이나 포인터에 미리 감사드립니다!
getPoints에서 for 루프의 @Jaya 내부에는 getLatLong이라는 약속이 있습니다. 다시 나는 약간의 비디오만을 보았으므로 완전히 잘못 사용했을 수 있습니다. –
죄송합니다. 또한 루프 내에서 약속을하고 루프가 반복하여 '다음'을 실행할 수 있습니다. 따라서 코드를 약간 수정해야합니다. 내가 샘플을 제공하겠습니다. – Jaya
모든 약속을 배열에 넣은 다음, 모든 것을 기다려야합니다. 그러나 그것을 병렬로 또는 차례로 처리하기를 원하십니까? – Jaya