Android 谷歌地图当前位置NullPointerException
地图问题 我有这个代码来获取当前位置并将地图移动到该位置 但这段代码有时会显示我以前所在的位置,而不是现在所在的位置,而且出于某种原因,它现在已经开始关闭Android 谷歌地图当前位置NullPointerException,android,maps,Android,Maps,地图问题 我有这个代码来获取当前位置并将地图移动到该位置 但这段代码有时会显示我以前所在的位置,而不是现在所在的位置,而且出于某种原因,它现在已经开始关闭 private void initilizeMap() { if (googleMap == null) { FragmentManager fragmentManager = getSupportFragmentManager(); SupportMapFragment mapFragment =
private void initilizeMap() {
if (googleMap == null) {
FragmentManager fragmentManager = getSupportFragmentManager();
SupportMapFragment mapFragment = (SupportMapFragment)
fragmentManager.findFragmentById(R.id.iqamah_map);
googleMap = mapFragment.getMap();
googleMap.getUiSettings().setCompassEnabled(true);
googleMap.getUiSettings().setZoomControlsEnabled(true);
googleMap.getUiSettings().setMyLocationButtonEnabled(true);
googleMap.getUiSettings().setZoomControlsEnabled(false);
googleMap.setMyLocationEnabled(true); // false to disable
// Getting LocationManager object from System Service LOCATION_SERVICE
LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
// Creating a criteria object to retrieve provider
Criteria criteria = new Criteria();
// Getting the name of the best provider
String provider = locationManager.getBestProvider(criteria, true);
// Getting Current Location
Location location = locationManager.getLastKnownLocation(provider);
googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
// CameraPosition cameraPosition = new CameraPosition.Builder().target(
// new LatLng(17.385044, 78.486671)).zoom(12).build();
// googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
// Getting latitude of the current location
double latitude = location.getLatitude();
// Getting longitude of the current location
double longitude = location.getLongitude();
url = "https://codingsquared-prod.apigee.net/masaajid?lat="+Double.toString(latitude)+"&long="+Double.toString(longitude);
// Creating a LatLng object for the current location
LatLng latLng = new LatLng(latitude, longitude);
TextView txtview = (TextView) findViewById(R.id.iqamah_listview_text);
txtview.setText("latitude="+Double.toString(latitude)+" longitude="+Double.toString(longitude));
// Showing the current location in Google Map
googleMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
// Zoom in the Google Map
googleMap.animateCamera(CameraUpdateFactory.zoomTo(15));
}
}
日志:
06-28 01:05:01.554: E/AndroidRuntime(13477): FATAL EXCEPTION: main
06-28 01:05:01.554: E/AndroidRuntime(13477): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.sahaab.android.muslimzone.test/com.sahaab.muslimzone.activity.IqamahActivity}: java.lang.NullPointerException
06-28 01:05:01.554: E/AndroidRuntime(13477): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2266)
06-28 01:05:01.554: E/AndroidRuntime(13477): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2316)
06-28 01:05:01.554: E/AndroidRuntime(13477): at android.app.ActivityThread.access$600(ActivityThread.java:150)
06-28 01:05:01.554: E/AndroidRuntime(13477): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1298)
06-28 01:05:01.554: E/AndroidRuntime(13477): at android.os.Handler.dispatchMessage(Handler.java:99)
06-28 01:05:01.554: E/AndroidRuntime(13477): at android.os.Looper.loop(Looper.java:213)
06-28 01:05:01.554: E/AndroidRuntime(13477): at android.app.ActivityThread.main(ActivityThread.java:5225)
06-28 01:05:01.554: E/AndroidRuntime(13477): at java.lang.reflect.Method.invokeNative(Native Method)
06-28 01:05:01.554: E/AndroidRuntime(13477): at java.lang.reflect.Method.invoke(Method.java:525)
06-28 01:05:01.554: E/AndroidRuntime(13477): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:741)
06-28 01:05:01.554: E/AndroidRuntime(13477): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
06-28 01:05:01.554: E/AndroidRuntime(13477): at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:132)
06-28 01:05:01.554: E/AndroidRuntime(13477): at dalvik.system.NativeStart.main(Native Method)
06-28 01:05:01.554: E/AndroidRuntime(13477): Caused by: java.lang.NullPointerException
06-28 01:05:01.554: E/AndroidRuntime(13477): at com.sahaab.muslimzone.activity.IqamahActivity.initilizeMap(IqamahActivity.java:155)
06-28 01:05:01.554: E/AndroidRuntime(13477): at com.sahaab.muslimzone.activity.IqamahActivity.onCreate(IqamahActivity.java:103)
06-28 01:05:01.554: E/AndroidRuntime(13477): at android.app.Activity.performCreate(Activity.java:5133)
06-28 01:05:01.554: E/AndroidRuntime(13477): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
06-28 01:05:01.554: E/AndroidRuntime(13477): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2230)
06-28 01:05:01.554: E/AndroidRuntime(13477): ... 12 more
还尝试了当前位置:
Location myLocation = googleMap.getMyLocation();
LatLng myLatLng = new LatLng(myLocation.getLatitude(),
myLocation.getLongitude());
CameraPosition myPosition = new CameraPosition.Builder()
.target(myLatLng).zoom(17).bearing(90).tilt(30).build();
googleMap.animateCamera(
CameraUpdateFactory.newCameraPosition(myPosition));
试试这个,这是我用来获取用户当前位置的工具:- (检查GPS或网络提供商是否可用)
从代码中删除以下代码
// Getting LocationManager object from System Service LOCATION_SERVICE
LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
// Creating a criteria object to retrieve provider
Criteria criteria = new Criteria();
// Getting the name of the best provider
String provider = locationManager.getBestProvider(criteria, true);
// Getting Current Location
Location location = locationManager.getLastKnownLocation(provider);
添加此代码
LocationManager locationManager;
boolean hasNetwrokProvider;
if (locationManager == null) {
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
}
hasNetwrokProvider = locationManager
.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
if (!hasNetwrokProvider) {
// Alert for no gps available.
//ConstantsMethod.buildAlertMessageNoGps(HomeActivity.this);
return;
}
locationManager.requestLocationUpdates(
LocationManager.NETWORK_PROVIDER, 0, 100,
locationListenerNetwork);
location = locationManager
.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
实现LocationClient并在活动中添加以下代码
public LocationListener locationListenerNetwork = new LocationListener() {
public void onLocationChanged(Location location) {
// locationResult.gotLocation(location);
locationManager.removeUpdates(this);
locationManager.removeUpdates(locationListenerGps);
}
public void onProviderDisabled(String provider) {
}
public void onProviderEnabled(String provider) {
}
public void onStatusChanged(String provider, int status, Bundle extra) {
}
};
首先检查n/w状态和gps状态是否已启用。然后尝试获取位置的lat和lng值。第155行中有什么内容@
IqamahActivity
?双纬度=位置。getLatitude()第155行Prakash我应该怎么做??顺便说一句,我的谷歌定位服务是打开的,这是在我打开gps后开始的。我想位置是空的,检查一下,嘿,我试过这个,它工作得很好,但只有当gps被启用时,它似乎不工作,当它不工作时,我再试试看
public LocationListener locationListenerNetwork = new LocationListener() {
public void onLocationChanged(Location location) {
// locationResult.gotLocation(location);
locationManager.removeUpdates(this);
locationManager.removeUpdates(locationListenerGps);
}
public void onProviderDisabled(String provider) {
}
public void onProviderEnabled(String provider) {
}
public void onStatusChanged(String provider, int status, Bundle extra) {
}
};