Angularjs 如何将当前用户纬度和经度与其他用户纬度和经度进行比较
如何将当前用户的lat和lng与其他用户的lat和lng进行比较,我有点不知所措。我试过以下方法。我想要所有的用户密钥谁是lat和lng谁是在当前用户lat和lng附近。我试过以下方法 这是我的密码:Angularjs 如何将当前用户纬度和经度与其他用户纬度和经度进行比较,angularjs,google-maps,firebase,ionic-framework,ionic2,Angularjs,Google Maps,Firebase,Ionic Framework,Ionic2,如何将当前用户的lat和lng与其他用户的lat和lng进行比较,我有点不知所措。我试过以下方法。我想要所有的用户密钥谁是lat和lng谁是在当前用户lat和lng附近。我试过以下方法 这是我的密码: openMapPage() { // GETTING THE CURRENT USER ADDRESS FOR LATITUDE AND LONGTITUDE var uid = firebase.auth().currentUser.uid; var ref =
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 userAddress = new LatLng(currentUserAddress);
console.log("SURESH IS COOL");
console.log(latlng);
}
});
});
// 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 latitude = results[0].geometry.location.lat();
var longitude = results[0].geometry.location.lng();
var latlng1 = new LatLng(latitude, longitude);
//var userAddress = new LatLng(currentUserAddress);
//console.log("SURESH IS COOL");
//console.log(latlng1);
var distanceInMeters = google.maps.geometry.spherical.computeDistanceBetween (this.latlng, this.latlng1);
if(distanceInMeters)
{
console.log("NEARBY ADDRESS that is near current user address");
console.log(latlng1);
}
}
});
});
});
//END OF CURRENT USER
});
}
由于您使用的是谷歌地图,请使用以下内容:
var distanceInMeters = google.maps.geometry.spherical.computeDistanceBetween (latlng, latlng1);
if( distanceInMeters < meterLimit ) //decide some threshold value for 'nearby' places.
{
console.log("NEARBY ADDRESS that is near current user address");
console.log( distanceInMeters );
}
var distanceInMeters=google.maps.geometry.spherical.ComputedDistanceBeween(latlng,latlng1);
if(distanceInMeters
要使用上述内容,需要将“&libraries=geometry”附加到google地图脚本标记的src值
可以将多个库指定为逗号分隔的列表
编辑:
如果您的首要任务是显示最近的地址,而不是附近的地址,那么您应该计算所有距离(在一个循环中),将它们存储在一个数组中,然后将它们排序到另一个数组中。现在比较两者,找出哪个元素/地址对应于最低距离。@Suresh如果你想问如何附加两个库,你必须用逗号将它们分开。确定一个以米为单位的限制,如果计算的距离小于该限制,则认为“附近”存在,否则将忽略。这是你的判断。多少米对你有好处?通常,100-300米就在附近。非常感谢开发人员。我感谢您在geocoder之外声明latlng。geocode…方法并在调用computeDistanceBetween()时使用latlng和latlng1,而不使用“this”。
var distanceInMeters = google.maps.geometry.spherical.computeDistanceBetween (latlng, latlng1);
if( distanceInMeters < meterLimit ) //decide some threshold value for 'nearby' places.
{
console.log("NEARBY ADDRESS that is near current user address");
console.log( distanceInMeters );
}