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。也许你访问不正确?你能分享问题中的输出吗?解决了。非常感谢