从反向地理编码回调中获取地址
Get address out of a Reverse Geocoded callback
我一直在做一个小型的javascript项目,该项目获取存储在xml/kml文件中的坐标,并将它们显示在自定义的Google Maps应用程序中。除了反向地理编码之外,我让一切都按照我想要的方式工作。当我在回调函数中运行代码时,我能够显示格式化的地址,但我找不到存储地址以供以后使用的方法(对于动态事件,例如当用户单击标记时显示完整地址(。
有没有办法将地址存储在回调函数中,然后稍后获取?每当我尝试时,它都会说地址未定义。见下文:
var address;
var geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(lat, lng);
geocoder.geocode({'latLng': latlng}, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[1]) {
address = results[1].formatted_address;
alert(address); // this displays correctly
}
else {
alert("No results found");
}
}
else {
alert("Geocoder failed due to: " + status);}
}
);
alert(address); // this displays 'undefined'
有没有办法将地址存储在回调函数中,然后稍后获取?
是的,但问题是你以后不想得到它。您正在尝试立即获得它。
让我解释一下。与JavaScript中常见的一样,geocoder.geocode
是异步的。这意味着它做了一些工作,当工作完成时,它会调用回调,但这里有一个问题:它会立即返回。这意味着当您在最后一行执行alert(address)
时,geocoder.geocode
仍在工作,您的回调尚未被调用,并且尚未设置address
。
解决方案是在回调中使用address
,或者(为了组织起见(定义一个函数,从回调中调用该函数以执行后续工作。
相关文章:
- 从新的WordPress媒体上传程序获取JS回调
- 如何在没有回调的情况下获取有关元素的信息
- 使用reactjs setState回调获取上一个输入值的计算值
- javascript/获取滚动条位置的回调
- Angular 2中Observable中获取数据后的队列/回调函数
- Yii ajaxbutton : 如何在成功回调函数中获取 $(this)
- 从异步回调中获取值
- DimpleJS-在getTooltipText回调中获取原始数据
- 使用回调获取图像像素数据
- 如何获取 jQuery 回调触发返回值
- 从 Spotify 应用程序中的回调获取专辑数据
- less.js - 在解析器的回调中获取变量值
- jQueryUI FullCalendar:从服务器获取事件后的回调
- 从回调函数获取xhr状态
- 无法获取函数的ajax回调
- 从回调中获取更详细的错误信息
- NodeJS异步模块:如何在回调中获取results对象
- 无法在pubnub javascript回调中获取错误
- 获取完整页面上加载的幻灯片.js slideload回调
- Parsley.JS-使用回调获取错误列表