将纬度、经度转换为地址字符串
Convert latitude, longitude in to address as a string
请帮我解决这个问题。
我想从谷歌地图的经纬度获取地址。下面是我的函数:
function codeLatLng() {
var geocoder = new google.maps.Geocoder();
var lati = document.getElementById("latitude_value").value;
var lngi = document.getElementById("longitude_value").value;
var latlng = new google.maps.LatLng(lati, lngi);
var infowindow = new google.maps.InfoWindow();
var ngo;
geocoder.geocode({'latLng': latlng}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[1]) {
map.setZoom(11);
marker = new google.maps.Marker({
position: latlng,
map: map
});
ngo = results[1].formatted_address;
infowindow.setContent(results[1].formatted_address);
infowindow.open(map, marker);
}
} else {
alert("Geocoder failed due to: " + status);
}
});
return ngo;
}
函数执行时。该地址显示在"地图"中。
然而,这不是我需要的。我只是想把这个地址作为字符串赋值给变量'ngo'。
这个函数返回'ngo',在文本字段中显示为' undefined '。
我需要一些帮助来解决这个问题。谢谢。
我只是想把这个地址作为字符串赋值给变量'ngo'。
这就是问题所在。你不能这么做。JavaScript不是这样工作的。地理编码器调用是异步的。它在从服务器接收数据之前返回。在调用地理编码器回调函数之前,数据还没有准备好。
你需要做的是在回调函数本身中使用ngo
数据,或者调用另一个函数并传递数据,并在那里使用数据。
例如,这里有这样一行:
ngo = results[1].formatted_address;
可以替换为:
useNGO( results[1].formatted_address );
其中useNGO
是您定义的函数(任何地方),如下所示:
function useNGO( ngo ) {
// Do stuff with ngo here
}
我相信你的问题是在声明var ngo
时使用var
关键字使ngo
成为局部变量,因此它不存在于codeLatLng()
之外。尝试删除var ngo
,将ngo = "";
放置在任何函数声明之外的某个地方(如function codeLatLng() {
之前),并让我知道这是否有效:)
相关文章:
- 如何将字符串地址传递到传单路由机,以根据字符串地址获得方向
- 谷歌地图自动完成删除空格并在地址字符串中插入加号(+)
- 检查地址栏中的字符串是否与 li ID 匹配
- jquery ajax 返回地址栏中的查询字符串
- 正则表达式以匹配地址中的任何字符串组
- 如何从描述地址的字符串访问对象子项
- Angular i18n 字符串中的电子邮件地址
- 将字符串中的 url 替换为 href 链接 - 适用于多种地址类型
- 如何在javascript中从字符串变量中提取ip地址
- 用javascript将单独的地址字符串序列化为一个
- 将整数MAC地址转换为Javascript中的字符串
- regex从地址字符串中提取英国邮编的一部分
- Regex将电子邮件地址从字符串包装为mailto
- 找出字符串是街道地址、套房号码、购物中心还是其他东西
- Regex -匹配电子邮件地址中的字符串
- 立即用字符串地址加载gmap,而不是用latlng
- 将纬度、经度转换为地址字符串
- 生成带有地址字符串的谷歌地图
- 创建有效的电子邮件地址字符串(仅剩下@sign需要)
- 使用jquery从地址字符串中提取数字和单词