this.state.markers에 추가하는 방법 : 나는 기본적으로 this.state.markers를 업데이트하기 위해 노력하고있어위도/LNG의 반응 - 구글 -지도 I이 구현 한
populateLocations() {
var arrOfAdds = [],
geocoder = new google.maps.Geocoder()
this.props.properties.map(function(property, i) {
if (geocoder) {
geocoder.geocode({
'address': property.street
}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
// debugger
arrOfAdds.push({
position: {
lat: results[0].geometry.location.lat(),
lng: results[0].geometry.location.lng(),
},
key: i,
defaultAnimation: 2,
})
}
});
}
}, this)
arrOfAdds.map(function(add, i) {
this.state.markers.push(add)
})
console.log('arrOfAdds', arrOfAdds)
console.log('this.state.markers', this.state.markers)
}
를 (배열을 어떤 내 lat/lngs 어디에 핀을 삭제됩니다) arrOfAdds 배열에 뭐든 함께,하지만 난 this.state.markers를 업데이트 할 수 없다고 생각해? 마치 함수에서 디버거를 실행하면 this.props.properties.map(...
을 건너 뛰고 처음부터 빈 배열이므로 arrOfAdds.map...
으로 가고 아무 것도 추가하지 않고 적절하게 채워지는 this.props.properties.map(...
을 만듭니다. arrOfAdds.
이 작업을 수행하는 방법에 대해 상당히 혼란 스러우면 도움이 필요합니다.
안녕하세요, @mweststrate! 답변 해 주셔서 감사합니다. 처음에 제안을 시도했지만 'this'가 지오 코드 블록 내부에서 정의되지 않았으므로 작동하지 못했습니다.이 방법을 우회하는 방법을 알고 있습니까? –
예,'function (results, status) {} .bind (this)'를 사용하거나 함수의 시작 부분에 변수를 만들고 var_this = this를 사용하고 콜백에'_this'를 사용하십시오. 그러나 여기서 무슨 일이 벌어지고 있는지 이해하도록하십시오! 초보자에게는 매우 혼란 스럽지만 자바 스크립트를 이해하는 데는 매우 중요합니다. https://github.com/getify/You-Dont-Know-JS/blob/master/scope%20%26%20closures/apC.md – mweststrate
고마워요! 알았다. –