2017-02-23 97 views
-3

我正在开发关注应用程序。它在用户到达办公室时登录用户,否则会显示“不在办公室”的消息。所以为此我需要获取用户位置,并且需要检查它是否在办公室经度纬度值之间。只有当用户处于办公室的经度纬度值之间时,用户才能登录。如何开发这个应用程序。如何根据位置纬度经度限制用户登录

回答

0

获取用户位置后,如果用户属于您提及的范围,只需将其标记即可检查距离您办公室(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 
} 
+0

哇感谢简单的代码。效果不错 –

+0

最受欢迎:) –

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

采取用户的位置,每次同时登录和检查它是否属于该地理围栏。如果在里面,让他/她登录,否则说出区域。使用这个公式来检查:

enter image description here

更新 公式解释: 如果你知道一个圆的半径,什么是它的中心,你可以得到任何点在内部或外部通过该公式的圆圈。如果从点到中心的距离大于半径,那么它的外侧,反之亦然。

如果有帮助,你也可以看到this方法。

简单!

+0

@JebinCThaliyan答案更新 –

+0

感谢你,非常实用:) –

相关问题