【问题标题】:How to get exact latitude and longitude using GPS tracker?如何使用 GPS 追踪器获得准确的纬度和经度?
【发布时间】:2017-12-05 04:44:19
【问题描述】:

我正在使用 GPS 追踪器获得经纬度,但我没有得到我的确切当前位置 我得到的是距离我当前位置 50 米的位置 我只使用 GPS 追踪器。每个答案都会很明显。我的正如上一个问题中提到的那样,位置并没有因设备而异。我没有得到任何有用的答案。

【问题讨论】:

标签: android google-maps


【解决方案1】:

使用谷歌客户端api获取准确位置

你可以参考- https://www.androidhive.info/2015/02/android-location-api-using-google-play-services/

【讨论】:

  • 我已经实现了这个例子,但没有得到确切的位置。谢谢。
【解决方案2】:

您可以使用 Google location api 中的 FusedLocationProviderClient 只需在 gradle(应用程序级别)中应用位置库。

compile 'com.google.android.gms:play-services-location:11.6.0'

并在应用级别 gradle 的底部添加此行

apply plugin: 'com.google.gms.google-services'

这是我在 mainActivity 中的代码

public class MainActivity extends Service implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {
LocationRequest mLocationRequest;
GoogleApiClient mGoogleApiClient;
Location mLastLocation;
FusedLocationProviderClient mFusedLocationClient;

private static final String TAG="Logs Details";


@Override
public int onStartCommand(Intent intent, int flags, int startId) {

     buildGoogleApiClient();
    mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
    return super.onStartCommand(intent, flags, startId);

}

@Override
public void onCreate() {
    super.onCreate();

}


@Nullable
@Override
public IBinder onBind(Intent intent) {
    return null;
}
protected synchronized void buildGoogleApiClient() {
    mGoogleApiClient = new GoogleApiClient.Builder(this)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .addApi(LocationServices.API)
            .build();
    mGoogleApiClient.connect();
}


@Override
public void onConnected(@Nullable Bundle bundle) {
    Log.e(TAG,"app is connected");

    mLocationRequest = new LocationRequest();
    mLocationRequest.setInterval(10000);
    mLocationRequest.setFastestInterval(10000);
    mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
    if (ContextCompat.checkSelfPermission(this,
            android.Manifest.permission.ACCESS_FINE_LOCATION)
            == PackageManager.PERMISSION_GRANTED) {
        mFusedLocationClient.requestLocationUpdates(mLocationRequest, mLocationCallback, Looper.myLooper());
    }

}
LocationCallback mLocationCallback = new LocationCallback() {
    @Override
    public void onLocationResult(LocationResult locationResult) {
        for (Location location : locationResult.getLocations()) {
            mLastLocation = location;

            Log.e("latitude",location.latitude);
            Log.e("longitude",location.longitude);



        }
    }



};

@Override
public void onConnectionSuspended(int i) {

}

@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {

}

}

希望这会有所帮助。:)

【讨论】:

  • 我正在使用融合 API,但一直没有得到准确的纬度,但比 GPS 好得多。 lat long 使用融合 API 只能得到 7 个小数点我可以使用 fused API 获得 7 个以上的 lat long 小数点。
  • 它不会总是给出准确的纬度,但根据我的经验它更准确
【解决方案3】:

使用谷歌的 Fused location api,我们可以获得更准确的纬度和经度,但并非总是 100%。Fused location api 比 GPS 跟踪器更好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-08
    相关资源
    最近更新 更多