如何在javascript中生成具有已知中心和半径的随机Lat-lng值?

我想在100米半径上创建一个热图图层,因此我想在该特定半径中生成随机的lat-long值,因此希望将其替换为

 var taxiData = [
{location: new google.maps.LatLng(41.8819, -87.6278),weight: 2},
{location: new google.maps.LatLng(41.8820, -87.6279),weight: 1},
 new google.maps.LatLng(41.8821, -87.6280),
{location: new google.maps.LatLng(41.8822, -87.6281),weight: 2},
{location: new google.maps.LatLng(41.8823, -87.6282),weight: 5},
{location: new google.maps.LatLng(41.8824, -87.6283),weight: 3},
];

请帮忙

解决方法:

这应该允许你这样做.

代码的作用:

首先,我们在三角形内生成一个相当均匀的随机点,并将其转换为半径圆内的一个点.然后我们将该点转换为偏移坐标并将它们添加到原始坐标.

返回包含两个值纬度和经度的对象.

var getRandomLocation = function (latitude, longitude, radiusInMeters) {

    var getRandomCoordinates = function (radius, uniform) {
        // Generate two random numbers
        var a = Math.random(),
            b = Math.random();

        // Flip for more uniformity.
        if (uniform) {
            if (b < a) {
                var c = b;
                b = a;
                a = c;
            }
        }

        // It's all triangles.
        return [
            b * radius * Math.cos(2 * Math.PI * a / b),
            b * radius * Math.sin(2 * Math.PI * a / b)
        ];
    };

    var randomCoordinates = getRandomCoordinates(radiusInMeters, true);

    // Earths radius in meters via WGS 84 model.
    var earth = 6378137;

    // Offsets in meters.
    var northOffset = randomCoordinates[0],
        eastOffset = randomCoordinates[1];

    // Offset coordinates in radians.
    var offsetLatitude = northOffset / earth,
        offsetLongitude = eastOffset / (earth * Math.cos(Math.PI * (latitude / 180)));

    // Offset position in decimal degrees.
    return {
        latitude: latitude + (offsetLatitude * (180 / Math.PI)),
        longitude: longitude + (offsetLongitude * (180 / Math.PI))
    }
};
上一篇:SpringMVC 文件上传配置,多文件上传,使用的MultipartFile(转)


下一篇:在Python中创建信息图