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

我在获取经度和纬度值进行地理编码,然后在信息窗口中显示相关地址时遇到问题。我尝试了多种方法都没有成功,但是我必须承认我对javascript不太熟悉。我不断地以值的形式返回:“未定义”

以下是我的代码片段,其中显示了主要组件:


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