2012-04-21 127 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本身没有可见性。