Angularjs 无法读取未定义lat的属性

Angularjs 无法读取未定义lat的属性,angularjs,ionic-framework,ionic2,ionic3,Angularjs,Ionic Framework,Ionic2,Ionic3,我真的不知道为什么会出现这种情况 这是我的谷歌地图脚本标签: <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&libraries=places,geometry"></script> 如下所示,我将纬度定义为lat()。它将误差指向120行,距离为米 openMapPage() { // GETTING THE CURRENT USER ADDRESS FOR LA

我真的不知道为什么会出现这种情况

这是我的谷歌地图脚本标签:

<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&libraries=places,geometry"></script>

如下所示,我将纬度定义为lat()。它将误差指向120行,距离为米

  openMapPage()
  { 

    // GETTING THE CURRENT USER ADDRESS FOR LATITUDE AND LONGTITUDE
    var uid = firebase.auth().currentUser.uid;
    var ref = firebase.database().ref("request/" + uid);
    ref.once("value").then((snapshot) => { // <------ Here!
        var a = snapshot.exists();  // true
        var c = snapshot.hasChild("reqdetails"); // true
        var d = snapshot.child('reqdetails').exists();
        var requestsKey = snapshot.key;
        var requestsValue = snapshot.val();


       ref.once('value', (request) => {
  var currentUserAddress = request.val().regdetails.address;
  var geocoder = new google.maps.Geocoder();

  geocoder.geocode( { 'address': currentUserAddress}, function(results, status) {
    if (status == google.maps.GeocoderStatus.OK) {
      var latitude = results[0].geometry.location.lat();
      var longitude = results[0].geometry.location.lng();
      var latlng = new LatLng(latitude, longitude);
      var meterLimit  = latlng;
      //var userAddress = new LatLng(currentUserAddress);
      console.log("SURESH IS COOL");
      console.log(meterLimit);

    } 
  }); 

});           

//END OF CURRENT USER 
}); 


  // GETTING THE ALL  USER ADDRESS FOR LATITUDE AND LONGTITUDE
    var ref1 = firebase.database().ref("request");
    ref1.once("value").then((snapshot1) => { // <------ Here!
        var a = snapshot1.exists();  // true
        var c = snapshot1.hasChild("reqdetails"); // true
        var d = snapshot1.child('reqdetails').exists();
        var requestsKey = snapshot1.key;
        var requestsValue = snapshot1.val();


        snapshot1.forEach((childSnapshot) => { // <------ And here!
            var requestKey = childSnapshot.key;
            var requestValue = childSnapshot.val();
            var reqdetails = requestValue.reqdetails;
            var AllUserAddress = requestValue.regdetails.address;

            //console.log("ALL USER ADDRESS");
            //console.log(AllUserAddress);

        var geocoder1 = new google.maps.Geocoder();

  geocoder1.geocode( { 'address': AllUserAddress}, function(results, status) {
    if (status == google.maps.GeocoderStatus.OK) {
      var latitude1 = results[0].geometry.location.lat();
      var longitude1 = results[0].geometry.location.lng();
      var latlng1 = new LatLng(latitude1, longitude1);
      //var userAddress = new LatLng(currentUserAddress);
      //console.log("SURESH IS COOL");
      //console.log(latlng1);
      var distanceInMeters = google.maps.geometry.spherical.computeDistanceBetween (this.latlng, this.latlng1);
      console.log("DISTANCE");
      console.log(distanceInMeters);


    } 
  }); 



        });

    });







  }
openMapPage()
{ 
//获取纬度和经度的当前用户地址
var uid=firebase.auth().currentUser.uid;
var ref=firebase.database().ref(“请求/”+uid);
参考一次(“值”)。然后((快照)=>{//{
var currentUserAddress=request.val().regdetails.address;
var geocoder=new google.maps.geocoder();
geocoder.geocode({'address':currentUserAddress},函数(结果,状态){
if(status==google.maps.GeocoderStatus.OK){
var latitude=results[0]。geometry.location.lat();
var longitude=results[0]。geometry.location.lng();
var latlng=新latlng(纬度、经度);
var meterLimit=latlng;
//var userAddress=新LatLng(当前用户地址);
log(“SURESH很酷”);
console.log(meterLimit);
} 
}); 
});           
//当前用户的结束
}); 
//获取纬度和经度的所有用户地址
var ref1=firebase.database().ref(“请求”);

参考文献1.once(“value”)。然后((snapshot1)=>{/{/我认为情况是您没有在全局范围内定义
this.latlng,this.latlng1
,因此您无法访问它们,您正在尝试访问函数中声明的局部变量,这就是为什么您无法获取
distanceInMeters
。请尝试以下操作:

public latlng; // DECLARE THEM ABOVE THE CONSTRUCTOR OF YOUR CLASS
public latlng1;

constructor(){
}

/* 
  DO THE FOLLOWING TO BOTH YOUR GEOCODERS:
  - GET BOTH LATITUDE AND LONGITUDE OF YOUR.
  - ACCESS YOUR GLOBAL latlng WITH this.
*/
geocoder1.geocode( { 'address': AllUserAddress}, function(results, status) {
  if (status == google.maps.GeocoderStatus.OK) {
    let latitude1 = results[0].geometry.location.lat();
    let longitude1 = results[0].geometry.location.lng();
    this.latlng1 = new LatLng(latitude1, longitude1);
    let distanceInMeters = google.maps.geometry.spherical.computeDistanceBetween (this.latlng, this.latlng1);
    console.log("DISTANCE");
    console.log(distanceInMeters);
  } 
});

希望这有帮助

你能提供你全部的代码吗?请看一看。谢谢看起来
位置
没有定义。你能记录
结果[0]吗。几何。位置
?是的,我能得到所有用户地址的所有lat和lng。也许你访问不正确?你能分享问题中的输出吗?解决了。非常感谢