我正在使用 Google Maps API V3 和 jQuery 创建 Phonegap 应用程序。
当检测到坑洼时,应用程序将经度和纬度值分别存储在 MySQL 数据库中。我需要做的是选择任何相对接近且很可能是相同坑洞的值。
jQuery/PHP/SQL 中有没有什么方法可以获取相对接近的值,找到它们的均值点,然后使用该值继续处理其他一些事情?
基本上我需要的是,一旦检测到某个特定的坑洼 5 次,它就会在谷歌地图上绘制出来。然而,只有当达到这个阈值时。困难在于,根据报告设备的准确性,可能会在略有不同的经度和纬度值下报告相同的坑洼。
你需要的是半正矢公式 http://en.wikipedia.org/wiki/Haversine_formula计算两个给定地点的经度和纬度坐标之间的距离。基于此,您可以编写一个方法来使用公里范围检查接近/靠近给定坐标的所有值。
计算距离的半正矢公式
$('some_element').click(function(){
var location1 = [lat, lon] // Specify Longitude and latitude
var location2 = [lat, lon] // Specify Longitude and latitude
var lat1 = location1[0], lon1 = location1[1];
var lat2 = location2[0], lon2 = location2[1];
var earth = 6371 // Earth's Radius in Kms
var dLat = (lat2-lat1) * Math.PI / 180;
var dLon = (lon2-lon1) * Math.PI / 180;
var nlat1 = (lat1) * Math.PI / 180;
var nlat2 = (lat2) * Math.PI / 180;
// Calculation
var a = Math.sin(dLat/2) * Math.sin(dLat/2) + Math.sin(dLon/2) * Math.sin(dLon/2) * Math.cos(nlat1) * Math.cos(nlat2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = earth * c;
var distance = Math.round(d*Math.pow(10,2)) / Math.pow(10,2); //Round off to 2 decimal places
alert(distance);
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)