我使用以下行确保我的地图显示设备的当前位置以及将相机置于该位置中心的按钮
mMap.setMyLocationEnabled(true);
这是非常标准的东西,但这意味着该应用程序会持续触发位置请求耗尽电量。在我的用例中,这不是必需的,每次onResume只检查一次位置就足够了。
然而,我无法找到解决方案。我可以创建一个LocationRequest并使其只更新一次(见下文),但这似乎不适用于setMyLocationEnabled函数。
mLocationRequest = LocationRequest.create();
mLocationRequest.setInterval(15000) // 15 seconds
.setFastestInterval(16) // 16ms = 60fps
.setNumUpdates(1)
.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
我知道我可以将setMyLocationEnabled设置为false,但这也会从屏幕中删除我不想要的当前位置。
答案 0 :(得分:1)
所以这样做的方法是实现LocationSource并使用你自己的监听器。
private OnLocationChangedListener mMapLocationListener;
当地图设置时调用
mMap.setLocationSource(this);
然后使用GoogleApiclient和融合api获取最后一个位置(并将地图相机设置为它)
Location mLastLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
LatLng currentPos = new LatLng(mLastLocation.getLatitude(), mLastLocation.getLongitude());
mMap.animateCamera(CameraUpdateFactory.newLatLng(currentPos));