我正在使用Google自动完成地理编码输入。我设置了它来处理输入(所选位置)的更改的地理编码,但是如果用户在键入位置后未从自动完成结果中进行选择,然后单击了提交按钮,也可以进行地理编码。一旦获得用户的所选位置,我便会使用函数updateParentState()
将经度/经度坐标传递到父组件的状态,我想做的就是等待lat
和{{1}在运行该函数之前要填充的变量。当前,函数的自动完成部分(条件的lng
部分)正在运行,因为if (place.geometry)
/ lat
在更改时立即被填充,但是由于对原始输入进行地理编码会花费一些时间, lng
函数在填充updateParentState()
/ lat
之前正在运行。我该如何调整:
lng
答案 0 :(得分:1)
在self.props.updateParentState
的回调以及geocoder.geocode
块的结尾处调用if
:
geocodeLoc = (place) => {
var self = this;
if (place.geometry) {
const lat = place.geometry.location.lat();
const lng = place.geometry.location.lng();
self.props.updateParentState(lat, lng);
} else {
let geocoder = new google.maps.Geocoder();
geocoder.geocode({'address': place.name}, function(results, status) {
if (status === google.maps.GeocoderStatus.OK) {
const lat = results[0].geometry.location.lat();
const lng = results[0].geometry.location.lng();
self.props.updateParentState(lat, lng);
}
});
}
}