我在我的Android应用中使用谷歌地图。一切都很好但是当我没有启用GPS服务时,我会显示一个快餐栏消息以启用。当我启用GPS并在我的Fragment der map中返回时,只有当我按下位置按钮时,才会自动返回我的位置。
我试图通过在我的更新方法中使用线程来解决问题,但没有。改变。有时候它有效,但有时候还不够好。
my onCreate:
public void init(){
gps = new GPSTracker();
gps.init(mActivity,mActivity);
if (!gps.canGetLocation()) {
gps.showSettingsAlert(mActivity,rootView);
}else {
initMap();
}
我的initMap
private void initMap(){
try {
MapsInitializer.initialize(mActivity.getApplicationContext());
} catch (Exception e) {
e.printStackTrace();
}
mMapView.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(GoogleMap mMap) {
googleMap = mMap;
if (ActivityCompat.checkSelfPermission(mActivity, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
googleMap.setMyLocationEnabled(true);
}
moveSearchCircle(new LatLng(gps.getLatitude(), gps.getLongitude()));
updateMapPosition();
googleMap.setIndoorEnabled(true);
addMarker();
}
});
}
updateMapPosition
private void updateMapPosition(){
googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(gps.getLatitude(), gps.getLongitude()), 15));
}
的onResume
@Override
public void onResume() {
super.onResume();
init();
}
答案 0 :(得分:1)
也许gps.getLatitude(), gps.getLongitude()
会返回零值,并且地图相机的焦点会尝试设置到此位置。
通常,获取设备位置操作需要一些时间,您应该异步执行此操作。
因此,请检查您的GPSTracker
课程并查找异步方法,或查看this tutorial。