Javascript 资讯窗口及;地理编码器
我在获取经度和纬度值进行地理编码,然后在信息窗口中显示相关地址时遇到问题。我尝试了多种方法都没有成功,但是我必须承认我对javascript不太熟悉。我不断地以值的形式返回:“未定义” 以下是我的代码片段,其中显示了主要组件:Javascript 资讯窗口及;地理编码器,javascript,jquery,google-maps-api-3,google-geocoder,Javascript,Jquery,Google Maps Api 3,Google Geocoder,我在获取经度和纬度值进行地理编码,然后在信息窗口中显示相关地址时遇到问题。我尝试了多种方法都没有成功,但是我必须承认我对javascript不太熟悉。我不断地以值的形式返回:“未定义” 以下是我的代码片段,其中显示了主要组件: var position=new google.maps.LatLng(position.coords.lation,position.coords.longitude); var geocoder=new google.maps.geocoder(); var地址 i
var position=new google.maps.LatLng(position.coords.lation,position.coords.longitude);
var geocoder=new google.maps.geocoder();
var地址
if (geocoder) {
geocoder.geocode({ 'latLng': position }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
address = (results[0].formatted_address);
} else {
address = (position.coords.latitude + ', ' + position.coords.longitude);
}
});
}
var info =
('<span class="txt_bld">Location:</span> ' + address + '<br />' +
'<span class="txt_bld">Accuracy:</span> ' + position.coords.accuracy + '<br />' +
'<span class="txt_bld">Time:</span> ' + position.timestamp);
if (geocoder) {
geocoder.geocode({ 'latLng': position }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
address == (results[0].formatted_address);
} else {
address == (position.coords.latitude + ', ' + position.coords.longitude);
}
var info =
('<span class="txt_bld">Location:</span> ' + address + '<br />' +
'<span class="txt_bld">Accuracy:</span> ' + position.coords.accuracy + '<br />' +
'<span class="txt_bld">Time:</span> ' + position.timestamp);
if(!infowindow){
infowindow = new google.maps.InfoWindow({
content: info
});
}else{
infowindow.setContent(info);
}
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map,marker);
setTimeout(function () {
infowindow.close();
}, 5000);
});
});
}
if(地理编码器){
地理代码({'latLng':位置},函数(结果,状态){
if(status==google.maps.GeocoderStatus.OK){
地址=(结果[0]。格式化的地址);
}否则{
地址=(position.coords.latitude+','+position.coords.longitude);
}
});
}
变量信息=
(“位置:”+地址+“
”+
'精度:'+position.coords.accurity+'
'+
“时间:”+位置。时间戳);
有人能告诉我如何将lat/lng转换为地址,以便在我的信息窗口中显示它们吗
编辑
更新代码:
var position=new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
var geocoder=new google.maps.geocoder();
var infowindow=new google.maps.infowindow();
var地址
if (geocoder) {
geocoder.geocode({ 'latLng': position }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
address = (results[0].formatted_address);
} else {
address = (position.coords.latitude + ', ' + position.coords.longitude);
}
});
}
var info =
('<span class="txt_bld">Location:</span> ' + address + '<br />' +
'<span class="txt_bld">Accuracy:</span> ' + position.coords.accuracy + '<br />' +
'<span class="txt_bld">Time:</span> ' + position.timestamp);
if (geocoder) {
geocoder.geocode({ 'latLng': position }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
address == (results[0].formatted_address);
} else {
address == (position.coords.latitude + ', ' + position.coords.longitude);
}
var info =
('<span class="txt_bld">Location:</span> ' + address + '<br />' +
'<span class="txt_bld">Accuracy:</span> ' + position.coords.accuracy + '<br />' +
'<span class="txt_bld">Time:</span> ' + position.timestamp);
if(!infowindow){
infowindow = new google.maps.InfoWindow({
content: info
});
}else{
infowindow.setContent(info);
}
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map,marker);
setTimeout(function () {
infowindow.close();
}, 5000);
});
});
}
if(地理编码器){
地理代码({'latLng':位置},函数(结果,状态){
if(status==google.maps.GeocoderStatus.OK){
地址==(结果[0]。格式化的地址);
}否则{
地址==(position.coords.latitude+','+position.coords.longitude);
}
变量信息=
(“位置:”+地址+“
”+
'精度:'+position.coords.accurity+'
'+
“时间:”+位置。时间戳);
如果(!infowindow){
infowindow=新建google.maps.infowindow({
内容:信息
});
}否则{
infowindow.setContent(info);
}
google.maps.event.addListener(标记'click',函数(){
信息窗口。打开(地图、标记);
setTimeout(函数(){
infowindow.close();
}, 5000);
});
});
}
如果(!标记){
marker=新的google.maps.marker({
职位:职位,,
map:this.map,
图标:markericon,
可拖动:错误
});
}否则{
标记器。设置位置(点);
}
地理编码器是异步的。您需要在回调函数中使用它返回的数据。类似于此(未经测试):
var position=new google.maps.LatLng(位置.坐标.纬度,位置.坐标.经度);
var geocoder=new google.maps.geocoder();
var infowindow=new google.maps.infowindow();
var地址;
if(地理编码器){
地理代码({'latLng':位置},函数(结果,状态){
if(status==google.maps.GeocoderStatus.OK){
地址=(结果[0]。格式化的地址);
}否则{
地址=(position.coords.latitude+','+position.coords.longitude);
}
变量信息=
(“地点:”+地址
+“
”+
“精度:”+position.coords.accurity
+“
”+
“时间:”+位置。时间戳);
infowindow.setContent(info);
信息窗口。设置位置(位置);
打开(地图);
});
}
地理编码器是异步的。您需要在回调函数中使用它返回的数据。类似于此(未经测试):
var position=new google.maps.LatLng(位置.坐标.纬度,位置.坐标.经度);
var geocoder=new google.maps.geocoder();
var infowindow=new google.maps.infowindow();
var地址;
if(地理编码器){
地理代码({'latLng':位置},函数(结果,状态){
if(status==google.maps.GeocoderStatus.OK){
地址=(结果[0]。格式化的地址);
}否则{
地址=(position.coords.latitude+','+position.coords.longitude);
}
变量信息=
(“地点:”+地址
+“
”+
“精度:”+position.coords.accurity
+“
”+
“时间:”+位置。时间戳);
infowindow.setContent(info);
信息窗口。设置位置(位置);
打开(地图);
});
}
我们使用地理编码器按地址获取Lat long,因为我们没有Lat long,所以需要通过地理编码器找到Lat long。如果我们有Lat-long坐标,那么我们可以直接使用
var position=new google.maps.LatLng(markers[i][1],markers[i][2]);
扩展(位置);
marker=新的google.maps.marker({
职位:职位,,
地图:地图,
标题:标记[i][0]
});代码>
我们使用geocoder按地址获取Lat long,因为我们没有Lat long,所以需要通过geocoder找到Lat long。如果我们有Lat-long坐标,那么我们可以直接使用
var position=new google.maps.LatLng(markers[i][1],markers[i][2]);
扩展(位置);
marker=新的google.maps.marker({
职位:职位,,
地图:地图,
标题:标记[i][0]
});代码>
我已经更新了问题中的代码。这就是我得出的结论,但是我仍然得到未定义的位置。这里是未定义的“位置”吗?标记在哪里定义?您能提供一个显示问题的JSFIDLE吗?标记是在if(地理编码器)之后定义的。我更新了代码a