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) {
    }

};