gpt4 book ai didi

java - 何时使用 LocationManager/LocationListener VS。 LocationServices/LocationCallback 来跟踪用户位置?

转载 作者:行者123 更新时间:2023-12-02 10:26:32 26 4
gpt4 key购买 nike

我通过以下方式实现了用户地理位置跟踪:

#1

    locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
locationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
mMap.clear();
repaintUserLocationPin(location);
}

#2

locationProviderClient = LocationServices.getFusedLocationProviderClient(this);

locationRequest = new LocationRequest();
locationRequest.setInterval(3000);
locationRequest.setFastestInterval(3000);
locationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);

LocationCallback locationCallback = new LocationCallback() {
@Override
public void onLocationResult(LocationResult locationResult) {
List<Location> locationList = locationResult.getLocations();
if (locationList.size() > 0) {
//The last location in the list is the newest
Location location = locationList.get(locationList.size() - 1);

mLastLocation = location;
if (mCurrLocationMarker != null) {
mCurrLocationMarker.remove();
}

repaintUserLocationPin(mLastLocation);
}
}
};

总结一下恕我直言:

  • 这两者似乎都实现了相同的目的,即跟踪和更新当前用户的位置。
  • 归根结底,它们都同样冗长且复杂。
  • #2 需要新的“实现”库,但这并不是太大的开销

另一方面,有一个第三解决方案,但这不允许我获取更新的当前位置除非,我点击地理定位 map 中的按钮。我说的是:

    map.setOnMyLocationButtonClickListener(new GeolocateBtnClickListener(MapsActivity.this));
map.setOnMyLocationClickListener(new GeolocateClickListener(MapsActivity.this));

这有一个很大的优势,那就是标记是自动创建的,并且它对用户的 Action 更加敏感。例如,它指向用户所指向的方向。

那么,为什么要使用其中一种而不是另一种,或者在什么情况下您会建议使用其中一种?

最佳答案

以下仅代表个人观点

These both seem to achieve the same,track and update the current user's location.

可以通过位置获取方式来实现差异。 LocationManager 使我们有机会选择位置源。这样我们就可以从 GPS、网络和无源替代方案中选择任何来源。但LocationServices 并没有提供这样的机会,而是提供了位置的体验、质量和电池使用之间的动力。

At the end of the day, they are both equally verbose and have the same complexity.

配置它们似乎有点相同,但 LocationServices 可能是第一个选择。决定质量/功率似乎比与提供商打交道更合理。

#2 needs new 'implementation' libraries but, this isn't much of an overhead

LocationManager 从版本 1 开始可用,而 LocationServices 在设备支持播放服务时可用。

关于java - 何时使用 LocationManager/LocationListener VS。 LocationServices/LocationCallback 来跟踪用户位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53917417/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com