我使用jQuery mobile和html5,我希望将我的数据库中存储的附近(可变固定)位置列表与我当前的位置相比较, 我应该使用ComputeDistanceBetween函数和select如何? 拜托,我需要帮助 这是我的尝试:
<!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>
我需要与数据库中的所有列表进行比较,而不是使用单点修复
答案 0 :(得分:0)
如果您正在处理非常少量的数据,那么您可以查询数据库中的所有数据点并比较距离,然后选择最小化距离的数据点。如果你有一些数据点,那么非常不足。
更好的解决方案可能是将您的地理点划分为象限,并将象限信息与点一起存储到数据库中。
然后,当您想要找到接近给定点的点时,您可以从相关点计算象限,并在数据库中查询象限中的所有点。然后,您只需比较该象限中的那些。
<强>更新强>
您忘记提及的另一个重要事实是您的数据库后端是什么。这很重要,因为例如,如果您使用SQL Server 2008或更新版本,则它具有built-in support for spatial data。你可能想看看这个..