1

Android用のGoogleマップAPI V2を使用しています。マップをロードすると完全にロードされましたが、https://developers.google.com/maps/documentation/android/views#changeing_a_maps_viewからこのコードを使用しようとすると

 public class MainActivity extends FragmentActivity {

    private static final LatLng SYDNEY = new LatLng(-33.88,151.21);
    private static final LatLng MOUNTAIN_VIEW = new LatLng(37.4, -122.1);
    SupportMapFragment fragment = new SupportMapFragment();
    private GoogleMap map = fragment.getMap();
     @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);


            getSupportFragmentManager().beginTransaction()
                    .add(android.R.id.content, fragment).commit();

            map.moveCamera(CameraUpdateFactory.newLatLngZoom(SYDNEY,15));

            // Zoom in, animating the camera.
            map.animateCamera(CameraUpdateFactory.zoomIn());

            // Zoom out to zoom level 10, animating with a duration of 2 seconds.

              map.animateCamera(CameraUpdateFactory.zoomTo(10), 2000, null);

            // Construct a CameraPosition focusing on Mountain View and animate the camera to that position.
            CameraPosition cameraPosition = new CameraPosition.Builder()
                .target(MOUNTAIN_VIEW)      // Sets the center of the map to Mountain View
                .zoom(17)                   // Sets the zoom
                .bearing(90)                // Sets the orientation of the camera to east
                .tilt(30)                   // Sets the tilt of the camera to 30 degrees
                .build();                   // Creates a CameraPosition from the builder
            map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));

    }

xml:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 tools:context=".MainActivity" >

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.MapFragment"/>

 <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:text="@string/hello_world" />


    </RelativeLayout> 

コードを実行すると、アプリケーションが起動する前にクラッシュします

これを使用したときだけでなく、UiSettings クラスを使用しようとしたときにも。したがって、私は何かが欠けているかもしれません:)

私の問題を解決するための助けをいただければ幸いです。

エラー:

     02-15 17:44:41.701: E/AndroidRuntime(17078): FATAL EXCEPTION: main
     02-15 17:44:41.701: E/AndroidRuntime(17078): java.lang.RuntimeException: Unable to s     tart activity   ComponentInfo{com.example.anywhere_reminder/com.example.anywhere_reminder.MainActivity}:   java.lang.NullPointerException: CameraUpdateFactory is not initialized
     02-15 17:44:41.701: E/AndroidRuntime(17078):   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1970)
     02-15 17:44:41.701: E/AndroidRuntime(17078):   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1995)
     02-15 17:44:41.701: E/AndroidRuntime(17078):   at android.app.ActivityThread.access$600(ActivityThread.java:128)
     02-15 17:44:41.701: E/AndroidRuntime(17078):   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1161)
     02-15 17:44:41.701: E/AndroidRuntime(17078):   at android.os.Handler.dispatchMessage(Handler.java:99)
     02-15 17:44:41.701: E/AndroidRuntime(17078):   at android.os.Looper.loop(Looper.java:137)
   02-15 17:44:41.701: E/AndroidRuntime(17078):     at android.app.ActivityThread.main(ActivityThread.java:4517)
   02-15 17:44:41.701: E/AndroidRuntime(17078):     at java.lang.reflect.Method.invokeNative(Native Method)
   02-15 17:44:41.701: E/AndroidRuntime(17078):     at java.lang.reflect.Method.invoke(Method.java:511)
   02-15 17:44:41.701: E/AndroidRuntime(17078):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:995)
   02-15 17:44:41.701: E/AndroidRuntime(17078):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762)
   02-15 17:44:41.701: E/AndroidRuntime(17078):     at dalvik.system.NativeStart.main(Native Method)
    02-15 17:44:41.701: E/AndroidRuntime(17078): Caused by: java.lang.NullPointerException: CameraUpdateFactory is not initialized
   02-15 17:44:41.701: E/AndroidRuntime(17078):     at com.google.android.gms.internal.at.a(Unknown Source)
   02-15 17:44:41.701: E/AndroidRuntime(17078):     at com.google.android.gms.maps.CameraUpdateFactory.J(Unknown Source)
   02-15 17:44:41.701: E/AndroidRuntime(17078):     at com.google.android.gms.maps.CameraUpdateFactory.newLatLngZoom(Unknown Source)
    02-15 17:44:41.701: E/AndroidRuntime(17078):    at com.example.anywhere_reminder.MainActivity.onCreate(MainActivity.java:30)
  02-15 17:44:41.701: E/AndroidRuntime(17078):  at android.app.Activity.performCreate(Activity.java:4579)
 02-15 17:44:41.701: E/AndroidRuntime(17078):   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1053)
02-15 17:44:41.701: E/AndroidRuntime(17078):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1934)
 02-15 17:44:41.701: E/AndroidRuntime(17078):   ... 11 more
4

2 に答える 2

1

これらはあなたのコードの問題だと思います。

SupportMapFragment fragment = new SupportMapFragment();
private GoogleMap map = fragment.getMap();

オブジェクト フラグメントが空で、GoogleMap マップ オブジェクトが null の可能性があります。このようにする必要があります。

    SupportMapFragment sMapFragment;
    GoogleMap map;

   protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //get the MapFragment in your layout
        fragment =(SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map);
        //get the GoogleMap object
        map = fragment.getMap();

   }

これで、マップ上で何かを行う準備が整いました。例 特定の場所にズームします。

    if(map!=null){
      LatLng SYDNEY = new LatLng(-33.88,151.21);
      CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(latLng, 16);
      map.animateCamera(cameraUpdate);
    }

これが役立つことを願っています。ハッピーコーディング:)

于 2013-02-23T18:56:15.587 に答える
0

GoogleMap が利用可能な場合にのみ、CameraUpdateFactory を使用できます。

私は次のことを試してみます。プライベート GoogleMap map = fragment.getMap();

onCreate メソッドで。マップが null でない場合は、CameraUpdateFactory を呼び出すことができます。

map = fragment.getMap();
if(map != null){
   map.moveCamera(CameraUpdateFactory.newLatLngZoom(SYDNEY,15));

            // Zoom in, animating the camera.
            map.animateCamera(CameraUpdateFactory.zoomIn());

            // Zoom out to zoom level 10, animating with a duration of 2 seconds.

              map.animateCamera(CameraUpdateFactory.zoomTo(10), 2000, null);

            // Construct a CameraPosition focusing on Mountain View and animate the camera to that position.
            CameraPosition cameraPosition = new CameraPosition.Builder()
                .target(MOUNTAIN_VIEW)      // Sets the center of the map to Mountain View
                .zoom(17)                   // Sets the zoom
                .bearing(90)                // Sets the orientation of the camera to east
                .tilt(30)                   // Sets the tilt of the camera to 30 degrees
                .build();                   // Creates a CameraPosition from the builder
            map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));

}
于 2013-02-15T16:00:40.170 に答える