谷歌地图V2 Android和iOS放置latlng小数位

有一个Android,以及我正在开发的iOS应用程序。 这两个应用程序使用谷歌的PlaceAutocomplete控制器来获取位置的经纬度。 在iOS中,我们可以得到lat-long,最多6个小数位。 在Android中,我们得到了六位以上的小数位。 Android和iOS的相同位置坐标的精度不同。

For example consider location Pune Android Latlng: 18.520431,73.856744 iOS Latlng: 18.52043,73.856744 

所以你可以看到同一位置的纬度精度有差异。

有没有办法避免这种情况,因为我的应用程序需要比较这些经纬度?

您不应该依赖坐标的精度来比较它们,因为它们可以更改,或者如您所试验的,在不同平台之间变化。

相反,您可以设置容差来确定两个位置是否相同。 例如:

 float YOUR_TOLERANCE = 1; // 1 meter if (location.distanceTo(otherLocation) < YOUR_TOLERANCE) { // Both locations are considered the same } 

在android中也有三种types的位置:

  1. GPS_PROVIDER
  2. NETWORK_PROVIDER
  3. PASSIVE_PROVIDER

所以,根据我的编码经验,我知道如果你使用:

 locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 10, new MyLocationListener()); 

你会得到像14+以上的小数点精度,如果你将使用它们的融合:

 LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, my_google_listener); 

那么你会得到6到7位数的精度。 尝试一下 !!!