根据用户当前位置设置2公里以外的随机地理围栏位置

时间:2017-07-25 23:32:04

标签: android geolocation geofencing

我使用Google-Play-Services-Location来跟踪用户的位置。

当用户点击按钮时,它将开始挑战,用户需要到当前经度和纬度2km内的随机位置(由应用程序逻辑随机计算)。

对该位置进行地理围栏以确定它们是否到达。

是否有可能以这种方式设置地理围栏,我将如何尝试呢?

2 个答案:

答案 0 :(得分:1)

<强>第一

1度经度= 111km

1度纬度= 111km

因此经度和纬度均为2km,等于.018度

<强>第二

您可以获取用户位置经度和纬度,然后添加等于.018的随机经度和纬度。

例如:将经度为.007,纬度为.011(等于.018)添加到用户位置。这将为您提供距离您的用户2公里的位置。

如果你想要最近的围栏部分距离2公里,只需将度数加倍到.036,并使你的围栏半径为2公里。

<强>最后

要获得地理围栏,您可以执行类似于上述4次的操作,这将为您提供方形围栏。或者一次给你一个半径。这个距离高达你希望围栏的大小

答案 1 :(得分:0)

我不确定这是不是在寻找与否。我使用此代码在给定位置的给定半径处创建随机标记。

private void getLocation() {


    double x0 = 38.423734;
    double y0 = 27.142826000000014;
    int radius = 50000;

    for (int i = 0; i < 50; i++) {
        Random random = new Random();

        // Convert radius from meters to degrees
        double radiusInDegrees = radius / 111000f;

        double u = random.nextDouble();
        double v = random.nextDouble();
        double w = radiusInDegrees * Math.sqrt(u);
        double t = 2 * Math.PI * v;
        double x = w * Math.cos(t);
        double y = w * Math.sin(t);

        // Adjust the x-coordinate for the shrinking of the east-west distances
        double new_x = x / Math.cos(Math.toRadians(y0));

        double foundLongitude = new_x + x0;
        double foundLatitude = y + y0;
        LatLng position = new LatLng(foundLongitude, foundLatitude);


        MarkerOptions mo = new MarkerOptions()
                .position(position)
                .title(i + "").alpha(0.87f)
                .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));

        Marker marker = mMap.addMarker(mo);


    }




}

50000表示半径50km,x0和y0表示半径