【发布时间】:2015-07-16 07:32:08
【问题描述】:
我在我的 Android 应用中使用 Google Maps API 并通过
LocationManager 和 getLongitude()、getLatitude()。
但是现在手机上必须有奇怪的设置才能得到地图。必须将位置设置更改为仅使用 GPS,即使如此,它也始终无法正常工作,有时地图无法加载。如果未加载,应用程序将在第一个标记被设置时关闭,因为NullPointerException。
为什么会这样,我该如何预防?
我已经尝试过getMapAsync,但没有帮助。
GoogleMap googleMap;
LocationManager locationManager;
String provider;
Criteria criteria;
Location myLocation;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map);
try {
if(googleMap == null) {
googleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
}
googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
googleMap.setMyLocationEnabled(true);
googleMap.setTrafficEnabled(true);
googleMap.setIndoorEnabled(true);
googleMap.setBuildingsEnabled(true);
googleMap.getUiSettings().setZoomControlsEnabled(true);
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
criteria = new Criteria();
provider = locationManager.getBestProvider(criteria, true);
myLocation = locationManager.getLastKnownLocation(provider);
double latitude = myLocation.getLatitude();
double longitude = myLocation.getLongitude();
LatLng latLng = new LatLng(latitude, longitude);
googleMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
googleMap.animateCamera(CameraUpdateFactory.zoomTo(14));
iconDone = R.drawable.markerdone;
icon = R.drawable.marker;
}
catch(Exception e) {
e.printStackTrace();
}
Marker marker1 = googleMap.addMarker(new MarkerOptions()
.position(new LatLng(49.793012, 9.926201))
.title(getString(R.string.Title1))
.snippet("")
.icon(BitmapDescriptorFactory.fromResource(icon)));
【问题讨论】:
-
显示您的代码,以便更好地了解您的问题发生的原因。你在使用 FusedLocationProvider 吗?
-
第一次打开应用没有加载?还是在参加另一个活动/片段之后?并且它不会加载和崩溃(如果是这样,请发布您的 logcat)!还是加载时没有任何内容?请澄清你的问题。帮助我们帮助您
标签: android google-maps gps