0

Googleマップのどこが悪いのか知りたいです。Googleマップを使用するために、あるクラスの緯度と経度の値を別のクラスに解析しようとすると、うまくいきません。

「 」から URL を取得しています。Google マップに解析するには、「緯度」と「経度」の値が必要です。緯度と経度のデータを取得できます。

ただし、値をGoogleマップに解析しようとすると、強制終了エラーが発生して機能しません。私のコードの何が問題なのかを知ることができますか?

私の onclick 部分のコード:

public void onClick(View v) {
    // TODO Auto-generated method stub
        Log.d("coords", "lat: " + KEY_LATITUDE + " long: " + KEY_LONGITUDE);
        Intent intent = new Intent(SingleMenuItemActivity.this, map.class);
        intent.putExtra("LAT", KEY_LATITUDE.toString());
        intent.putExtra("LON", KEY_LONGITUDE.toString());
        startActivity(intent);

map.java

public class map extends FragmentActivity {
    // double lat;
    // double lng;

    private GoogleMap map;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.map_shown);

        SupportMapFragment fm = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        map = fm.getMap();
        map.animateCamera(CameraUpdateFactory.zoomIn());
        String lat = null;
        String lon = null;
        map.moveCamera(CameraUpdateFactory.newLatLngZoom(LatLng(lat, lon),
                14.0f));

    }

    private LatLng LatLng(String lat, String lon) {
        // TODO Auto-generated method stub

        Bundle extras = getIntent().getExtras();
        lat = extras.getString("LAT");
        lon = extras.getString("LON");
        return null;
    }

}

logcat エラー:

08-14 15:21:47.300: E/AndroidRuntime(24718): FATAL EXCEPTION: main
08-14 15:21:47.300: E/AndroidRuntime(24718): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.fambond/com.example.fambond.map}: java.lang.NullPointerException
08-14 15:21:47.300: E/AndroidRuntime(24718):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
08-14 15:21:47.300: E/AndroidRuntime(24718):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
08-14 15:21:47.300: E/AndroidRuntime(24718):    at android.app.ActivityThread.access$1500(ActivityThread.java:117)
08-14 15:21:47.300: E/AndroidRuntime(24718):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
08-14 15:21:47.300: E/AndroidRuntime(24718):    at android.os.Handler.dispatchMessage(Handler.java:99)
08-14 15:21:47.300: E/AndroidRuntime(24718):    at android.os.Looper.loop(Looper.java:130)
08-14 15:21:47.300: E/AndroidRuntime(24718):    at android.app.ActivityThread.main(ActivityThread.java:3691)
08-14 15:21:47.300: E/AndroidRuntime(24718):    at java.lang.reflect.Method.invokeNative(Native Method)
08-14 15:21:47.300: E/AndroidRuntime(24718):    at java.lang.reflect.Method.invoke(Method.java:507)
08-14 15:21:47.300: E/AndroidRuntime(24718):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:912)
08-14 15:21:47.300: E/AndroidRuntime(24718):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:670)
08-14 15:21:47.300: E/AndroidRuntime(24718):    at dalvik.system.NativeStart.main(Native Method)
08-14 15:21:47.300: E/AndroidRuntime(24718): Caused by: java.lang.NullPointerException
08-14 15:21:47.300: E/AndroidRuntime(24718):    at maps.al.a.a(Unknown Source)
08-14 15:21:47.300: E/AndroidRuntime(24718):    at maps.ag.af.a(Unknown Source)
08-14 15:21:47.300: E/AndroidRuntime(24718):    at maps.ag.s.a(Unknown Source)
08-14 15:21:47.300: E/AndroidRuntime(24718):    at maps.ag.an.a(Unknown Source)
08-14 15:21:47.300: E/AndroidRuntime(24718):    at bkw.onTransact(SourceFile:83)
08-14 15:21:47.300: E/AndroidRuntime(24718):    at android.os.Binder.transact(Binder.java:279)
08-14 15:21:47.300: E/AndroidRuntime(24718):    at com.google.android.gms.maps.internal.IGoogleMapDelegate$a$a.moveCamera(Unknown Source)
08-14 15:21:47.300: E/AndroidRuntime(24718):    at com.google.android.gms.maps.GoogleMap.moveCamera(Unknown Source)
08-14 15:21:47.300: E/AndroidRuntime(24718):    at com.example.fambond.map.onCreate(map.java:28)
08-14 15:21:47.300: E/AndroidRuntime(24718):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1050)
08-14 15:21:47.300: E/AndroidRuntime(24718):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
08-14 15:21:47.300: E/AndroidRuntime(24718):    ... 11 more
4

2 に答える 2

2

まず、LatLng メソッドには 2 つの double がパラメーターとして含まれています。

次に、LatLng メソッドが null を返すため、明らかに NPE が発生し、アプリがシャットダウンします。

それに応じてコードを変更してみてください。

public void onClick(View v) {
// TODO Auto-generated method stub
    Log.d("coords", "lat: " + KEY_LATITUDE + " long: " + KEY_LONGITUDE);
    Intent intent = new Intent(SingleMenuItemActivity.this, map.class);
    intent.putExtra("LAT", KEY_LATITUDE);
    intent.putExtra("LON", KEY_LONGITUDE);
    startActivity(intent);

それで。

public class map extends FragmentActivity {
 double lat;
 double lng;

private GoogleMap map;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.map_shown);

    lat = getIntent().getDoubleExtra("LAT");
    lon = getIntent().getDoubleExtra("LON");

    SupportMapFragment fm = (SupportMapFragment) getSupportFragmentManager()
            .findFragmentById(R.id.map);
    map = fm.getMap();
    map.animateCamera(CameraUpdateFactory.zoomIn());
    map.moveCamera(CameraUpdateFactory.newLatLngZoom(getLatLng()),
            14.0f));

}

private LatLng getLatLng() {
    // TODO Auto-generated method stub
    return new LatLng(lat,lon);
}

}

また、あなたのコードから、Java を扱うにはまだ作業が必要であると想定しています! もっと練習しないと、Android でアプリ開発をする余裕がなくなります。

于 2013-08-14T07:53:58.910 に答える
0

コード行にいくつかの変更を加える必要があります。プライベート LatLng LatLng(String lat, String lon) メソッドで:

private LatLng LatLng(String lat, String lon) {
    // TODO Auto-generated method stub

    Bundle extras = getIntent().getExtras();
    lat = extras.getString("LAT");
    lon = extras.getString("LON");

    // Add these lines of changed code
    Double slatObject = Double.parseDouble(lat) / 1E6;
    Double slngObject = Double.parseDouble(lon) / 1E6;
    LatLng latlng_points = new LatLng(slatObject,slngObject);
    return latlng_points;
}
于 2013-08-14T08:05:09.127 に答える