地理编码器不返回城市的值
Geocoder not returning the value of the city
我的map.js文件中有一个名为getNameOfCity()(函数如下)通过执行以下var city = getNameOfCity();
从我的操作.js文件中调用它,然后我提醒城市,它说未定义。
这是地图中的函数.js
function getNameOfCity() {
geocoder.geocode({'latLng': map.getCenter()}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[0]){
jQuery.each(results[0].address_components, function(key, value){
if(value.types[0] == 'locality') {
return value.long_name;
}
});
}
} else {
return false;
}
});
}
当我在返回之前提醒value.long_name正确的城市时。但是当我从调用函数的位置向城市发出警报时,它返回未定义。有什么想法吗?
谢谢
你在匿名函数中返回一个值 - 所以你把它返回为空。
你需要做的是在返回响应时调用一个函数,说"我完成了,这是城市名称"。
正如亚当所说,问题是你返回到匿名函数。 请改为执行以下操作:
function getNameOfCity() {
var city = '';
geocoder.geocode({'latLng': map.getCenter()}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[0]){
jQuery.each(results[0].address_components, function(key, value){
if(value.types[0] == 'locality') {
city = value.long_name;
}
});
return city;
}
} else {
return false;
}
});
}
更新回调方式,正如您所建议的那样...
function getNameOfCity(callback) {
geocoder.geocode({'latLng': map.getCenter()}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[0]){
jQuery.each(results[0].address_components, function(key, value){
if(value.types[0] == 'locality') {
callback(value.long_name); // call the function, pass the city name.
}
});
}
} else {
callback(false); // not found? pass false instead.
}
});
}
更新 2
现在,您可以使用此函数以这种方式获取城市名称:
getNameOfCity(function(city) {
alert(city); // or do something less useless.
});
相关文章:
- 节点导出返回一个空对象
- ES6构造函数返回基类的实例
- 监视函数从服务返回不起作用,但作用域函数起作用
- 控制台返回var不是't定义,但它是
- 从函数返回角度承诺
- Javascript返回值只在循环中返回一次
- 从控制器返回后Ajax启动事件激发
- 从城市名称获取惊喜
- CKFinder 3为所选文件返回错误的URL
- 如何在d3.js中返回路径的y坐标
- 如何从jquery函数返回变量
- Angular js-返回一个包含类似
- JSONP请求返回结果,但也触发error_callback
- 如何从谷歌地图API返回的结果数组中提取城市名称
- 使用字符串验证从反向地理编码返回的城市
- 地理编码器不返回城市的值
- 从城市返回国家名称
- Onsubmit用于邮政编码文本输入.XMLhttprequest:输入zip,返回城市
- 根据邮政编码返回城市和州
- Google Geocoder为几个不同的地址返回同一组lat/lng.Lat/Lng是城市或乡镇的坐标,而不是地址