当我尝试从地图获取我的位置时,我收到空指针异常
I am receiving null pointer exception , when i try to get mylocation from map
我无法从地图获取我的位置,它抛出空指针异常。
if (mMap == null) {
// Try to obtain the map from the SupportMapFragment.
try {
mMap = ((SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.mapFrag)).getMap();
} catch (Exception e) {
e.printStackTrace();
}
}
// Check if we were successful in obtaining the map.
if (mMap != null) {
mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
mMap.setMyLocationEnabled(true);
mMap.getUiSettings().setMyLocationButtonEnabled(true);
mMap.getUiSettings().setZoomControlsEnabled(true);
putMarkerOnMap(mMap.getMyLocation().getLatitude(),mMap.getMyLocation().getLongitude());
}
它在我调用函数 putMarkerOnMap(lat,lng) 的行抛出错误
这是那个函数
public void putMarkerOnMap(double la , double lo){
LatLng position = new LatLng(la,lo);
mMap.addMarker(new MarkerOptions().position(new LatLng(la, lo)).title("Your Location"));
CameraPosition campos = new CameraPosition.Builder().target(position).zoom(15)
.bearing(90)
.tilt(40)
.build();
mMap.animateCamera(CameraUpdateFactory.newCameraPosition(campos));
}
我觉得NPE是这一行造成的
mMap.getMyLocation().getLatitude()
此外,如果您想获取当前位置,您应该使用不同的方法,例如使用 Google 播放服务或 Android 内置库
Google 播放服务:
http://developer.android.com/training/location/retrieve-current.html
Android内置库:
http://developer.android.com/guide/topics/location/strategies.html
方法 getMyLocation()
已弃用。所以不要使用它。而是使用 Google Play 服务提供的 FusedLocation API 来获取当前位置。
勾选this
我无法从地图获取我的位置,它抛出空指针异常。
if (mMap == null) {
// Try to obtain the map from the SupportMapFragment.
try {
mMap = ((SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.mapFrag)).getMap();
} catch (Exception e) {
e.printStackTrace();
}
}
// Check if we were successful in obtaining the map.
if (mMap != null) {
mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
mMap.setMyLocationEnabled(true);
mMap.getUiSettings().setMyLocationButtonEnabled(true);
mMap.getUiSettings().setZoomControlsEnabled(true);
putMarkerOnMap(mMap.getMyLocation().getLatitude(),mMap.getMyLocation().getLongitude());
}
它在我调用函数 putMarkerOnMap(lat,lng) 的行抛出错误 这是那个函数
public void putMarkerOnMap(double la , double lo){
LatLng position = new LatLng(la,lo);
mMap.addMarker(new MarkerOptions().position(new LatLng(la, lo)).title("Your Location"));
CameraPosition campos = new CameraPosition.Builder().target(position).zoom(15)
.bearing(90)
.tilt(40)
.build();
mMap.animateCamera(CameraUpdateFactory.newCameraPosition(campos));
}
我觉得NPE是这一行造成的
mMap.getMyLocation().getLatitude()
此外,如果您想获取当前位置,您应该使用不同的方法,例如使用 Google 播放服务或 Android 内置库
Google 播放服务: http://developer.android.com/training/location/retrieve-current.html
Android内置库: http://developer.android.com/guide/topics/location/strategies.html
方法 getMyLocation()
已弃用。所以不要使用它。而是使用 Google Play 服务提供的 FusedLocation API 来获取当前位置。
勾选this