0

完全に機能するマップ アクティビティがありますが、マーカーを追加しようとするとエラーが発生し、問題を解決する方法が見つかりませんでした。

public class MapActiv extends FragmentActivity {

//private GoogleMap map;

@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.map_fragment);
    GoogleMap mGMap = ((MapFragment) 
            getFragmentManager().findFragmentById(R.id.map)).getMap();
    mGMap.addMarker(new MarkerOptions().position(new LatLng(46.24801, 26.76173))
    .title("Title").draggable(false));
}

}

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:map="http://schemas.android.com/apk/res-auto"
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    class="com.google.android.gms.maps.SupportMapFragment"
    map:cameraTargetLat="46.24801"
    map:cameraTargetLng="26.76173"
    map:cameraTilt="30"
    map:cameraZoom="18"
    map:uiCompass="false"
    map:uiRotateGestures="true"
    map:uiScrollGestures="true"
    map:uiTiltGestures="true"
    map:uiZoomControls="false"
    map:uiZoomGestures="true"/>

01-19 19:48:15.805: E/AndroidRuntime(16616): 致命的な例外: メイン 01-19 19:48:15.805:E/AndroidRuntime(16616): java.lang.NoSuchMethodError:com.ex.myschoolapp.MapActiv. getFragmentManager 01-19 19:48:15.805: E/AndroidRuntime(16616): com.ex.myschoolapp.MapActiv.onCreate(MapActiv.java:23) 01-19 19:48:15.805: E/AndroidRuntime(16616): android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 01-19 19:48:15.805: E/AndroidRuntime(16616): android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1623) 01-19 19 :48:15.805: E/AndroidRuntime(16616): android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1675) 01-19 19:48:15.805: E/AndroidRuntime(16616): android.app.ActivityThread で。 access$1500(ActivityThread.java:121) 01-19 19:48:15.805: E/AndroidRuntime(16616): android.app.ActivityThread$H.handleMessage(ActivityThread.java:943) 01-19 19:48:15.805: E/AndroidRuntime(16616): android.os.Handler.dispatchMessage(Handler.java:99) 01-19 19:48: 15.805: E/AndroidRuntime(16616): android.os.Looper.loop(Looper.java:123) 01-19 19:48:15.805: E/AndroidRuntime(16616): android.app.ActivityThread.main(ActivityThread) .java:3701) 01-19 19:48:15.805: E/AndroidRuntime(16616): java.lang.reflect.Method.invokeNative(ネイティブ メソッド) 01-19 19:48:15.805: E/AndroidRuntime(16616) : java.lang.reflect.Method.invoke(Method.java:507) 01-19 19:48:15.805: E/AndroidRuntime(16616): com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit .java:862) 01-19 19:48:15.805: E/AndroidRuntime (16616): com.android.internal.os.ZygoteInit.main (ZygoteInit.java:620) 01-19 19:48:15.805: E /AndroidRuntime(16616):dalvik.system.NativeStart.main (ネイティブ メソッド) で

4

2 に答える 2

0

これを試してください (バージョン < 3.0 を使用している場合は、Android サポート ライブラリを使用する必要があることに注意してください)

import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import android.view.LayoutInflater;
import android.view.View;

    import com.google.android.gms.maps.GoogleMap;
    import com.google.android.gms.maps.GoogleMap.InfoWindowAdapter;
    import com.google.android.gms.maps.GoogleMap.OnMapClickListener;
    import com.google.android.gms.maps.GoogleMap.OnMapLongClickListener;
    import com.google.android.gms.maps.GoogleMap.OnMarkerClickListener;
    import com.google.android.gms.maps.SupportMapFragment;
    import com.google.android.gms.maps.model.LatLng;
    import com.google.android.gms.maps.model.Marker;
    import com.google.android.gms.maps.model.MarkerOptions;
    public class MainActivity extends android.support.v4.app.FragmentActivity implements OnMapClickListener, OnMapLongClickListener{
        private GoogleMap myMap;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            FragmentManager myFragmentManager = getSupportFragmentManager();
            SupportMapFragment myMapFragment 
               = (SupportMapFragment)myFragmentManager.findFragmentById(R.id.map);
              myMap = myMapFragment.getMap();
              myMap.setOnMapLongClickListener(this);
              myMap.setOnMapClickListener(this);
              myMap.setInfoWindowAdapter(new MiInfoWindowAdapter());
              myMap.setOnMarkerClickListener(new OnMarkerClickListener() {

                @Override
                public boolean onMarkerClick(Marker marker) {
                    // TODO Auto-generated method stub
                    marker.hideInfoWindow();
                    return false;
                }
            });

        }

         @Override
         public void onMapLongClick(LatLng point) {

             myMap.addMarker(new MarkerOptions().position(point).title(point.toString()));
         }

        @Override
        public void onMapClick(LatLng point) {
            // TODO Auto-generated method stub
            myMap.addMarker(new MarkerOptions().position(point).title(point.toString()));

        }

        public class MiInfoWindowAdapter implements InfoWindowAdapter{

            @Override
            public View getInfoContents(Marker marker) {
                LayoutInflater inflater = getLayoutInflater().from(getApplicationContext());
                View view = inflater.inflate(R.layout.info, null);
                marker.setDraggable(true);
                return view;
            }

            @Override
            public View getInfoWindow(Marker marker) {
                LayoutInflater inflater = getLayoutInflater().from(getApplicationContext());
                View view = inflater.inflate(R.layout.info, null);
                marker.setDraggable(true);
                return view;
            }

        }
    }
于 2013-03-01T10:53:32.570 に答える