根据本教程,我有一个带有谷歌地图的应用程序。根据本教程,我还获得了用户的当前位置。
截至 09/15,两者都使用最新的 API。
谷歌地图位于视图中的片段内。我一直试图让地图从public void onMapReady(GoogleMap map)
函数内加载用户的当前位置,只有失败的结果和大量的NullPointerExceptions。就像是...
@Override
public void onMapReady(GoogleMap map) {
mMap = map;
mMap.setMyLocationEnabled(true);
mLastLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
mLoadLocation = new LatLng(mLastLocation.getLatitude(), mLastLocation.getLongitude());
if(mLastLocation != null){
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(mLoadLocation, 18.0f));
}else{
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(37.422611, -122.0840577), 18.0f));
}
}
但mLastLocation
总是返回 NULL。所以我把moveCamera
电话移到了onConnected
,如下
@Override
public void onConnected(Bundle bundle) {
mLastLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
if (mLastLocation != null) {
mLoadLocation = new LatLng(mLastLocation.getLatitude(), mLastLocation.getLongitude());
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(mLoadLocation, 18.0f));
} else {
Toast.makeText(this, "No Location", Toast.LENGTH_LONG).show();
}
}
就像我想要的那样,这很有魅力。但是地图视图会在调用时始终准备就绪吗?onConnected
或者这是逐设备的事情?无论采用何种方法,我都想保留功能。
我已经尝试了所有我能找到的使用用户当前位置启动地图的 SO 方法,但它们都没有奏效。大量崩溃和 NULL 值。
提前致谢。