编程语言
首页 > 编程语言> > javascript – 在纬度和长度的某个范围内查找一组坐标

javascript – 在纬度和长度的某个范围内查找一组坐标

作者:互联网

我正在开发一个涉及谷歌地图的JavaScript项目.

目标是在一组纬度经度坐标的n公里内找出16-20个坐标点,使得如果连接的16个点将围绕原始坐标形成圆.

最终的目标是使它能够找到坐标以绘制和连接谷歌地图,以围绕给定的坐标集创建一个圆圈.

代码将类似于:

var coordinates = Array();
function findCoordinates(lat, long, range) {
}
coordinates = findCoordinates(-20, 40, 3);

现在让findCoordinates()函数发生魔术.

解决方法:

基本上你要做的是在给定半径的给定点的圆的半径上找到N个点.一种简单的方法是将360度的圆分成N个相等的块,并以规则的间隔找到点.

以下应该大致完成你所追求的 –

function findCoordinates(lat, long, range)
{
    // How many points do we want? (should probably be function param..)
    var numberOfPoints = 16;
    var degreesPerPoint = 360 / numberOfPoints;

    // Keep track of the angle from centre to radius
    var currentAngle = 0;

    // The points on the radius will be lat+x2, long+y2
    var x2;
    var y2;
    // Track the points we generate to return at the end
    var points = [];

    for(var i=0; i < numberOfPoints; i++)
    {
        // X2 point will be cosine of angle * radius (range)
        x2 = Math.cos(currentAngle) * range;
        // Y2 point will be sin * range
        y2 = Math.sin(currentAngle) * range;

        // Assuming here you're using points for each x,y..             
        p = new Point(lat+x2, long+y2);

        // save to our results array
        points.push(p);

        // Shift our angle around for the next point
        currentAngle += degreesPerPoint;
    }
    // Return the points we've generated
    return points;
}

然后,您可以轻松地使用您获得的点数组在Google地图上绘制您想要的圆圈.

但是,如果你的总体目标只是在一个点附近以固定半径绘制一个圆,那么一个更容易的解决方案可能是使用叠加.我发现KMBox非常容易设置 – 你给它一个中心点,一个半径和一个图像叠加(在你的情况下,一个透明的圆圈,边缘有一条可见的线),它会照顾其他一切,包括在放大/缩小时调整大小.

标签:javascript,google-maps,coordinates,latitude-longitude
来源: https://codeday.me/bug/20190930/1836244.html