Google Maps v2 Android出错

时间:2014-05-12 20:11:24

标签: android google-maps nullpointerexception google-maps-android-api-2

我正在使用Google地图V2。 我在那里得到了nullpointerexception。

地图活动

public class Mapa extends FragmentActivity {

private GoogleMap googleMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_mapa);     
    SetUpMapIfNeeded();
}

private void SetUpMapIfNeeded() {
    if(googleMap == null){
        googleMap = ((SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.mvMapa)).getMap();
        if(googleMap != null){
            setUpMap();
        }
    }
}

private void setUpMap() {   

    googleMap.setMyLocationEnabled(true);

    //Get LocationManager object from System Service LOCATION_SERVICE
    LocationManager locationM = (LocationManager)getSystemService(LOCATION_SERVICE);

    //Create a criteria object to retrieve provider
    Criteria criteria = new Criteria();

    //Get the name of the best provider
    String provider = locationM.getBestProvider(criteria, true);

    //Get Current Location
    Location miUbicacion = locationM.getLastKnownLocation(provider);

    //Set map type
    googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);                

    //Get Latitude of the current location
    double latitud = miUbicacion.getLatitude();

    //Get Longitude of the current location
    double longitud = miUbicacion.getLongitude();

    //Create a latLng object for the current location
    LatLng latLng = new LatLng(latitud, longitud);

    googleMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));

    //Zoom in the Google Map
    googleMap.animateCamera(CameraUpdateFactory.zoomTo(15));
    googleMap.addMarker(new MarkerOptions().position(new LatLng(latitud, longitud)).title("Te encuentras aquí!"));
}


}

logcat的

05-12 14:11:02.806: E/AndroidRuntime(29687): FATAL EXCEPTION: main
05-12 14:11:02.806: E/AndroidRuntime(29687): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.proyectosetit/com.example.proyectosetit.Mapa}: java.lang.NullPointerException
05-12 14:11:02.806: E/AndroidRuntime(29687):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2071)
05-12 14:11:02.806: E/AndroidRuntime(29687):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2096)
05-12 14:11:02.806: E/AndroidRuntime(29687):    at android.app.ActivityThread.access$600(ActivityThread.java:138)
05-12 14:11:02.806: E/AndroidRuntime(29687):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1207)
05-12 14:11:02.806: E/AndroidRuntime(29687):    at android.os.Handler.dispatchMessage(Handler.java:99)
05-12 14:11:02.806: E/AndroidRuntime(29687):    at android.os.Looper.loop(Looper.java:213)
05-12 14:11:02.806: E/AndroidRuntime(29687):    at android.app.ActivityThread.main(ActivityThread.java:4787)
05-12 14:11:02.806: E/AndroidRuntime(29687):    at java.lang.reflect.Method.invokeNative(Native Method)
05-12 14:11:02.806: E/AndroidRuntime(29687):    at java.lang.reflect.Method.invoke(Method.java:511)
05-12 14:11:02.806: E/AndroidRuntime(29687):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
05-12 14:11:02.806: E/AndroidRuntime(29687):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
05-12 14:11:02.806: E/AndroidRuntime(29687):    at dalvik.system.NativeStart.main(Native Method)
05-12 14:11:02.806: E/AndroidRuntime(29687): Caused by: java.lang.NullPointerException
05-12 14:11:02.806: E/AndroidRuntime(29687):    at com.example.proyectosetit.Mapa.setUpMap(Mapa.java:54)
05-12 14:11:02.806: E/AndroidRuntime(29687):    at com.example.proyectosetit.Mapa.SetUpMapIfNeeded(Mapa.java:29)
05-12 14:11:02.806: E/AndroidRuntime(29687):    at com.example.proyectosetit.Mapa.onCreate(Mapa.java:22)
05-12 14:11:02.806: E/AndroidRuntime(29687):    at android.app.Activity.performCreate(Activity.java:5008)
05-12 14:11:02.806: E/AndroidRuntime(29687):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
05-12 14:11:02.806: E/AndroidRuntime(29687):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2035)
05-12 14:11:02.806: E/AndroidRuntime(29687):    ... 11 more

此处出现错误

Mapa.java: line 54

double latitud = miUbicacion.getLatitude();

我正在尝试检索设备的位置,但我遇到了一些问题。 请帮我。谢谢 ..

。 。 。

1 个答案:

答案 0 :(得分:0)

我建议在获取myLastKnownLocation

之前首先实现onConnect方法
@Override
public void onConnected(Bundle dataBundle) {
    // Display the connection status
    Toast.makeText(this, "Connected", Toast.LENGTH_SHORT).show();

}

看看这个链接,按照教程将有所帮助 http://developer.android.com/training/location/retrieve-current.html

希望有所帮助