Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 如何将当前用户纬度和经度与其他用户纬度和经度进行比较_Angularjs_Google Maps_Firebase_Ionic Framework_Ionic2 - Fatal编程技术网

Angularjs 如何将当前用户纬度和经度与其他用户纬度和经度进行比较

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 =

如何将当前用户的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 = 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 );
    }