根据位置启动活动

时间:2016-09-24 08:30:28

标签: android google-maps

我想创建一个活动,限制用户访问某些位置参数内的活动。如果他们在外面,那么他们就无法访问该活动。位置参数是大区域或大区域,因此外部访问甚至高达50Km不是问题。但如何限制在特定的限制内?

编辑:
我问如何定义位置限制?,我问的是该位置是100N还是100E,那么我将如何限制,或者我可以使用地名来限制它?

任何人都可以用一些例子或一些代码解释一下!?

3 个答案:

答案 0 :(得分:0)

如果您整合了位置api,则可以使用它来计算您的特定位置与当前位置之间的距离

Location currentLoc;

float radius = 50.0;
float distance = loc.distanceTo(PARTICULAR_LOCATION);
if (distance < radius) {
  //start activity
}

此处,PARTICULAR_LOCATION是您提及的某个区域的位置

答案 1 :(得分:0)

在onLocationChanged中,您可以检查用户是否在指定位置

 @Override
    public void onLocationChanged(Location location) {
        float[] distance = new float[2];
        Location.distanceBetween( location.getLatitude(), location.getLongitude(),
                locationtomonitor.latitude, locationtomonitor.longitude, distance);

        /// distance in meters
        if( distance[0] > 1 ){
            Toast.makeText(getBaseContext(), " Outside, Distance in meters: " + locationtomonitor.getRadius(), Toast.LENGTH_LONG).show();
        } else {
            Toast.makeText(getBaseContext(), "Inside, distance in meters : " + distance[0] , Toast.LENGTH_LONG).show();
        }

    }

如果您想查看特定国家/地区或城市,可以使用IP到位置:

只需向 http://ip-api.com/json 网址发送简单的获取请求即可获得包含有关国家,城市,邮政编码等信息的json数据。

答案 2 :(得分:0)

您可以计算人员位置位置参数之间的距离

    Location personLocation =...; // Person's Location
    Location restrictedLocation =...; // Location with constraints

    // Calculate distance in meters to person's location from restricted location
    float distance = restrictedLocation.distanceTo(personLocation);
    float distanceInKms = distance / 1000;

    if (distanceInKms > 50) {
        // Place code for person outside restricted location's 50 KM radius
    } else {
        // Place code for person inside restricted location's 50 KM radius
    }