以下是期望的结果,我正在寻找

我想知道的是:

我已使用中心点lat lang及其周围的半径创建了圆。现在我想知道,如何检查(计算)纬度和经度是在区域内还是在区域外,如果可以在Java中给我代码示例,我将不胜感激。我正在使用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;
}

任何帮助将是巨大的..预先感谢!

最佳答案

对于这么短的距离,并且当精度不必精确到厘米时,可以将地球表面视为平坦的。计算中心点的纬度从度到公里的转换,然后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;
}
演示:http://jsfiddle.net/Guffa/57gQa/
注意:如果您传递的是0/360经度,则代码不会考虑在内。如果是这种情况,则必须首先将经度标准化。

关于javascript - 检查经度和纬度是否在Google map 的圆圈内,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24680247/

10-15 15:24