0

マップ上のユーザー選択にカスタム マーカーを追加しようとしています。これは私が今持っているコードですが、「mapView.getOverlays().add(mapView);」の「add」でエラーが発生するようです。ユーザーにさまざまなアイコンを選択して、それらを地図上の場所に配置してもらいたいです。

import java.util.List;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.OverlayItem;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.MotionEvent;

 public class MainActivity extends MapActivity {



@Override
  public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 MapView mapView = (MapView) findViewById(R.id.mapview);
 mapView.setBuiltInZoomControls(true);
 List<Overlay> mapOverlays = mapView.getOverlays();
 Drawable drawable = this.getResources().getDrawable(R.drawable.androidmarker);
 CustomOverlay itemizedoverlay = new CustomOverlay(drawable, this);
 GeoPoint point = new GeoPoint((int)(24.0110 * 1E6), (int)(31.4850 * 1E6));
 MapController controller = mapView.getController();
 controller.setCenter(point);
 controller.setZoom(11);
 OverlayItem overlayitem = new OverlayItem(point, "Hello!", "Guess where I am?")
 itemizedoverlay.addOverlay(overlayitem);
 mapOverlays.add(itemizedoverlay);

 }

public boolean onTouchEvent(MotionEvent event, MapView mapView) {
    if (event.getAction() == 1) {
        GeoPoint p = mapView.getProjection().fromPixels((int) event.getX(),
                (int) event.getY());
        MainActivity Overlay = new MainActivity(); 
        mapView.getOverlays().add(mapView);

        mapView.invalidate();
        GeoPoint point = mapView.getProjection().fromPixels((int) event.getX(),(int) event.getY ());
        Drawable srcdrawable = getApplicationContext().getResources().getDrawable (R.drawable.icon);
        CustomOverlay srcitemizedOverlay = new CustomOverlay(srcdrawable, getApplicationContext ());
        OverlayItem srcoverlayitem = new OverlayItem(p, "Hello!", "This is your Location.");
        srcitemizedOverlay.addOverlay(srcoverlayitem);
        mapView.getOverlays().clear();
        mapView.getOverlays().add(srcitemizedOverlay);

    }
    return false;
 }


 @Override
 protected boolean isRouteDisplayed() {
 return false;
 }
 }

私は書き込みトラックにいますか?私のコードは正しいですか?そして、誰かがこれを行う方法に関するチュートリアルへのリンクを持っているかもしれません.

4

1 に答える 1

0

MapViewをとしてに追加しようとしOverlayていますmapView。したがって、この行でを追加したい にmapView.getOverlays().add(mapView);置き換えます。しかし、それは必要ないので、次のようにする必要があります。mapViewOverlayonTouchEvent()

public boolean onTouchEvent(MotionEvent event, MapView mapView) {
    if (event.getAction() == 1) {
        GeoPoint point = mapView.getProjection().fromPixels((int) event.getX(),(int) event.getY ());
        Drawable srcdrawable = getApplicationContext().getResources().getDrawable (R.drawable.icon);
        CustomOverlay srcitemizedOverlay = new CustomOverlay(srcdrawable, getApplicationContext ());
        OverlayItem srcoverlayitem = new OverlayItem(point, "Hello!", "This is your Location.");
        srcitemizedOverlay.addOverlay(srcoverlayitem);
        mapView.getOverlays().clear();
        mapView.getOverlays().add(srcitemizedOverlay);

    }
    return false;
 }
于 2012-11-12T14:35:36.443 に答える