我想创建一个活动,限制用户访问某些位置参数内的活动。如果他们在外面,那么他们就无法访问该活动。位置参数是大区域或大区域,因此外部访问甚至高达50Km不是问题。但如何限制在特定的限制内?
编辑:
我问如何定义位置限制?,我问的是该位置是100N还是100E,那么我将如何限制,或者我可以使用地名来限制它?
任何人都可以用一些例子或一些代码解释一下!?
答案 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
}