以下是我正在寻找的期望结果
我想知道的是:
我使用中心点纬度和周围半径创建了圆。现在我想知道,如何检查(计算)纬度和经度是否在该区域之内或之外,如果您能给我 JavaScript 代码示例,我将不胜感激。我正在使用 Google 地图 API V3。
我发现了这个功能,但没有按我的预期工作:
function arePointsNear(checkPoint, centerPoint) {
var sw = new google.maps.LatLng(centerPoint.lat() - 0.005, centerPoint.lng() - 0.005);
var ne = new google.maps.LatLng(centerPoint.lat() + 0.005, centerPoint.lng() + 0.005);
var bounds = new google.maps.LatLngBounds(sw, ne);
if (bounds.contains (checkPoint)){
return true;
}
return false;
}
任何帮助都会很棒..提前致谢!
对于如此短的距离,并且当精度不必精确到厘米时,您可以将地球表面视为平坦的。计算中心点纬度从度到公里的换算,然后勾股定理 http://en.wikipedia.org/wiki/Pythagorean_theorem可用于获取距离:
function arePointsNear(checkPoint, centerPoint, km) {
var ky = 40000 / 360;
var kx = Math.cos(Math.PI * centerPoint.lat / 180.0) * ky;
var dx = Math.abs(centerPoint.lng - checkPoint.lng) * kx;
var dy = Math.abs(centerPoint.lat - checkPoint.lat) * ky;
return Math.sqrt(dx * dx + dy * dy) <= km;
}
Demo: http://jsfiddle.net/Guffa/57gQa/ http://jsfiddle.net/Guffa/57gQa/
注意:如果您传递 0/360 经度,代码不会考虑在内。如果是这种情况,您必须首先标准化经度。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)