2

これは私のコードです:

geopoint =  new GeoPoint((int) (1.352566007* 1E6), (int) (103.78921587* 1E6));
        mapView.getOverlays().add( new  DrawableMapOverlay(this,geopoint,R.drawable.pushpin, "test"));
        geopoint.setOnClickListener(new OnClickListener()
          {   
              public void onClick(View v)
              {
              System.out.println("Clicked");
              }
          }); 

そして、私はこのエラーが発生しています:

The method setOnClickListener(new View.OnClickListener(){}) is undefined for the type GeoPoint  

オン クリック リスナーがジオポイントで動作していませんか??

4

2 に答える 2

1

ItemizedOverlay<>クラスを拡張してメソッドをオーバーライドする必要がありonTap()ます。

このようなもの:

public class MapOverlay extends ItemizedOverlay<OverlayItem> {

    private ArrayList<OverlayItem> mapOverlay = new ArrayList<OverlayItem>();
    Context mContext;


    public MapOverlay(Drawable itemMarker) {
        super(boundCenterBottom(itemMarker));
        // TODO Auto-generated constructor stub
    }

    public void addItem(OverlayItem item){
        mapOverlay.add(item);
        populate();
    }

    @Override
    protected OverlayItem createItem(int i) {
        // TODO Auto-generated method stub
        return mapOverlay.get(i);
    }

    @Override
    public int size() {
        // TODO Auto-generated method stub
        return mapOverlay.size();
    }


    public MapOverlay(Drawable itemMarker, Context context){
        super(boundCenterBottom(itemMarker));
        mContext = context;
    }


    @Override
    protected boolean onTap(int index) {
        // TODO Auto-generated method stub
        final OverlayItem item = mapOverlay.get(index);
        AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);

        dialog.setTitle(item.getTitle());
        dialog.setMessage(item.getSnippet());

        dialog.show();

        return true;
    }
}

アイテムを追加するアクティビティで:

Drawable voltaIcon = this.getResources().getDrawable(R.drawable.arch);
MapOverlay volte = new MapOverlay(voltaIcon, this);

GeoPoint p_Volta = new GeoPoint(45373024, 14348799); 
OverlayItem volta = new OverlayItem(p_Volta,
            getResources().getStringArray(R.array.volta)[0], 
            getResources().getStringArray(R.array.volta)[1]);
volte.addItem(volta);
于 2012-04-21T20:21:52.730 に答える
0

View のサブクラスであるオブジェクトにのみ onClickListener を設定できます。基本的にこれは、Button や TextView など、画面に表示されるものを意味、クリックまたはタッチできます。GeoPoint 自体には可視性がありません。

于 2012-04-21T20:24:57.640 に答える