col*_*web 6 javascript google-maps google-maps-api-3
以下是我想要的结果

我想知道的是:
我使用中心点lat lang和它周围的半径创建了圆.现在我想知道,如果你可以在Javascript中给我代码示例,如何检查(计算)纬度和经度是否在该区域内部或外部我将不胜感激.我正在使用Google Maps 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;
}
Run Code Online (Sandbox Code Playgroud)
任何帮助都会很棒..提前感谢!!
Guf*_*ffa 27
对于如此短的距离,当精度不必精确到厘米时,您可以将地球表面视为平坦的.计算中心点纬度从度数到公里的转换,然后可以使用毕达哥拉定理得到实例:
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;
}
Run Code Online (Sandbox Code Playgroud)
演示:http://jsfiddle.net/Guffa/57gQa/
注意:如果您传递0/360经度,则不会考虑代码.如果是这种情况,您首先必须将经度标准化.
| 归档时间: |
|
| 查看次数: |
11672 次 |
| 最近记录: |