2011-05-22 48 views
2

我有一个地图活动,有许多地图的销钉,当我点击一个销钉时,一个自定义气球打开,显示有关该销钉的一些信息。另外,我有一个搜索栏,如果你输入一个旋钮的名字,信息就会出现在那里,但是我想让它去找那个搜索到的引脚。 例如:在地图上你有不同的蔬菜销,当你搜索胡萝卜时,搜索列表将显示胡萝卜元素,当你点击它时,胡萝卜销的气球将膨胀。所以,我的问题是:是否有某种OnTap()void方法?我知道,OnTap(int index)返回一个布尔值。当物品被选中时充气气球

回答

4

创建自己的逐项覆盖,并覆盖和Ontap方法,并在你的主类,使逐项叠加的一个实例,并调用overlay.onTap(点)

示例代码:

public class MyItemizedOverlay<Item> extends ItemizedOverlay<OverlayItem> { 
    private ArrayList<OverlayItem> m_overlays; 
    private MapView mapView; 
    final MapController mc; 

    public MyItemizedOverlay(Drawable defaultMarker, MapView mapView) { 
     super(boundCenterBottom(defaultMarker), mapView); 
     m_overlays = new ArrayList<OverlayItem>(); 
     mc = mapView.getController(); 
     populate(); 
    } 

    public void addOverlay(OverlayItem overlay) { 
     m_overlays.add(overlay); 
     setLastFocusedIndex(-1); 
     populate(); 
    } 

    public ArrayList<OverlayItem> getOverlays() { 
     return m_overlays; 
    } 

    public final boolean onTap(int index) { 
     GeoPoint point; 
     point = createItem(index).getPoint(); 
     mc.animateTo(point);  
     return true; 
    } 

    ... 
} 

主类

public class Main extends MapActivity { 
    private MapView mapView; 
private List<Overlay> mapOverlays; 
    private MyItemizedOverlay overlay; 
private Drawable pin; 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     doAction(); 
    } 

    private void doAction() { 
    mapView = (MapView)findViewById(R.id.map_view); 
     pin = res.getDrawable(R.drawable.pin); 

     overlay = new MyItemizedOverlay(pin, mapView); 

     GeoPoint point = new GeoPoint((int)(7*1E6),(int)(42*1E6)); 
     overlayItem = new OverlayItem(point, "title", "text"); 

    overlay.addOverlay(overlayItem); 

     mapOverlays = mapView.getOverlays(); 
    mapOverlays.add(overlay); 

     //we tap the point here 
     overlay.onTap(0); 
    } 
}