2016-09-24 49 views
-1

我想创建一个活动,它将限制用户访问某些位置参数内的活动。如果他们在外面,则他们不能访问该活动。位置参数是大的或大的区域,所以甚至高达50Km的访问不是问题。但如何使其限制在特定的限制内?根据位置开始活动

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

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

+1

有什么问题恰好之间的距离?如果你在禁区内,我会说不要开始活动。它不清楚你问什么。 – greenapps

+0

我在问如何定义位置限制?我在问,如果位置是100N和100E,那么我将如何限制,还是我可以限制它使用地名? –

+0

你整合了Location api吗? – Saadi

回答

0

在集成的位置API,你可以用它来计算出你的具体位置和当前位置

Location currentLoc; 

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

这里PARTICULAR_LOCATION之间的距离是一些区域的位置,你mentiond

+0

好吧,我会试试 –

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(); 
     } 

    } 

如果你想检查一个特定的c ountry或城市,你可以使用IP位置:

只需发送一个简单的GET请求http://ip-api.com/json网址,你会得到约含国家,城市,邮编等信息一个JSON数据

+0

这只是一个点。而禁区是一个圆圈。如何知道该地点在英国? – greenapps

+0

您的应用程序使用Internet吗?我可能有一个不同的简单的解决方案 – Saadi

+0

这是一个很好的服务Saadi! – greenapps

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 
    }