我有一个地图活动,其中包含许多地图引脚,当我单击一个引脚时,会打开一个自定义气球,显示有关该引脚的一些信息。另外,我有一个搜索栏,如果您在其中键入旋钮的名称,信息就会出现在那里,但我希望它转到搜索到的图钉。 示例: 在地图上你有不同的蔬菜别针,当你搜索胡萝卜时,搜索列表会显示元素胡萝卜,当你点击它时,胡萝卜别针的气球会膨胀。所以,我的问题是:是否有某种OnTap () void 方法?我知道,OnTap (int index) 返回一个布尔值。
问问题
1313 次
1 回答
4
创建您自己的逐项叠加,并覆盖 onTap 方法,并在您的主类中,创建逐项叠加的实例,并调用 overlay.onTap(point)
示例代码:
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);
}
}
于 2011-06-29T15:51:11.720 回答