我正在开发一个关注应用程序。当用户到达办公室时它会登录用户,否则它会显示一条消息"不在办公室"。所以对于这个我需要获取用户位置并需要检查它是否在办公室经度纬度值之间。只有当用户处于办公室的经度纬度值之间时,用户才能登录。如何开发这个应用程序。
答案 0 :(得分:1)
获取用户的位置后,如果用户在你提到的标记范围内,你就可以检查你办公室(lat,Lon)原点的距离。
float[] results = new float[1];
Location.distanceBetween(currentlatitude, currentlongitude, originLat, originLon, results);
float distanceInMeters = results[0];
boolean isWithinRange = distanceInMeters < 3000;
if (isWithinRange) {
//write your code what ever you wanna perform
}
答案 1 :(得分:0)
创建一个由办公区域定义的地理围栏(按照this来确定如何做到这一点)例如,填充名为mGeofenceList的列表对象:
mGeofenceList.add(new Geofence.Builder()
// Set the request ID of the geofence. This is a string to identify this
// geofence.
.setRequestId(entry.getKey())
.setCircularRegion(
entry.getValue().latitude,
entry.getValue().longitude,
Constants.GEOFENCE_RADIUS_IN_METERS
)
.setExpirationDuration(Constants.GEOFENCE_EXPIRATION_IN_MILLISECONDS)
.setTransitionTypes(Geofence.GEOFENCE_TRANSITION_ENTER |
Geofence.GEOFENCE_TRANSITION_EXIT)
.build());
每次登录时获取用户的位置,并检查它是否属于该地理围栏。如果在里面,让他/她登录,否则说出区域。使用此公式检查:
<强>更新强> 公式说明: 如果你知道一个圆的半径以及它的中心是什么,你可以通过该公式得到该圆的内部或外部。如果从点到中心的距离大于半径,那么它的外部,反之亦然。
如果有帮助,您还可以看到this方法。
轻松!