2012-04-21 113 views
2

這是我的代碼:的onClick監聽器映射

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 

是不是點擊監聽器上一個GeoPoint工作?

回答

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); 
0

你只能一個對象,它是一個視圖的子類上設置onClickListener。基本上,這意味着像Button或TextView或屏幕上有可見性的任何東西,以便您可以點擊或觸摸它。 GeoPoint本身沒有可見性。