获取存储在数据库中的与我当前位置相比较的附近位置的列表

get a list of nearby location stored in the database compared to my current position

本文关键字:位置 相比较 列表 存储 数据库 获取      更新时间:2023-09-26

我使用jQuery移动和html5,我想有附近的列表(可变固定)的位置存储在我的数据库中,与我目前的位置相比,我应该使用函数ComputeDistanceBetween??怎么选择呢?拜托,我需要帮助这是我的尝试:

<!DOCTYPE html>
<html>
 <head>
<script src="http://maps.google.com/maps/api/js?sensor=false&v=3&libraries=geometry">        </script>
</head>
 <body>
<p id="demo"></p>
<button onclick="getLocation()" id="demo">get current location</button>
<button onclick="console.log(distance)">get ditance from current location to other location</button>
<script>

    var x=document.getElementById("demo");
    function getLocation() {
   navigator.geolocation.getCurrentPosition(
            function(position) {
             var latLngA = new     google.maps.LatLng(position.coords.latitude,position.coords.longitude);
              var latLngB = new google.maps.LatLng(40.778721618334295,             -73.96648406982422);
            var distance =                
    google.maps.geometry.spherical.computeDistanceBetween
   (latLngA, latLngB);
            alert(distance);//In metres
        },
        function() {
            alert("geolocation not supported!!");
        }
  );
   }
    </script>
   </body>
   </html>

我需要与数据库中的所有列表进行比较,而不是与一个点修复

如果您处理的数据量非常小,那么您可以查询数据库中的所有数据点并比较距离,然后选择距离最小的那个。这是非常低效的如果你只有几个数据点。

一个更好的解决方案可能是将地理点划分为象限,并将象限信息与点一起存储到数据库中。

然后,当您想要找到靠近给定点的点时,您从所讨论的点计算象限,并在数据库中查询象限中的所有点。然后,你只需比较那个象限中的那些。

您忘记提及的另一个重要事实是您的数据库后端是什么。这一点很重要,因为例如,如果你使用SQL Server 2008或更新版本,它内置了对空间数据的支持。