首先定义一个overlay extends ItemizedOverlay,例如:
class RestaurantOverlay extends ItemizedOverlay<OverlayItem> {
private List<OverlayItem> items = new ArrayList<OverlayItem>();
private Drawable marker = null;
public RestaurantOverlay(Drawable defaultMarker) {
super(defaultMarker);
this.marker = defaultMarker;
}
//添加OverlayItem对象
public void addOverlay(OverlayItem overlay) {
items.add(overlay);
populate();
}
protected boolean isRouteDisplayed() {
return false;
}
@Override
protected OverlayItem createItem(int i) {
return items.get(i);
}
@Override
public int size() {
return items.size();
}
@Override
public void draw(Canvas canvas, MapView mapView, boolean shadow) {
super.draw(canvas, mapView, shadow);
boundCenterBottom(marker);
}
}
其次,获取要加载overlay的mapview句柄,调用mapview.getOverlays()方法,返回一个List<OverLay>对象。
然后,定义自己的overlay,如:RestaurantOverlay me = new RestaurantOverlay(Drawable对象);通过List<Overlay>对象的add(),把自己的Overlay添加上去。但还要为me添加OverlayItem对象,既可以显示图标在地图上。
最后,就是怎么点击标记图标,显示详细信息的泡泡呢?可以通过ItemizedOverlay内部类OnFocusChangeListener的onFocusChanged方法实现。如:
private final ItemizedOverlay.OnFocusChangeListener onFocusChangeListener = new ItemizedOverlay.OnFocusChangeListener() {
public void onFocusChanged(ItemizedOverlay overlay, OverlayItem newFocus) {
if (popView != null) {
popView.setVisibility(View.GONE);
}
if (newFocus != null) {
MapView.LayoutParams geoLP = (MapView.LayoutParams) popView
.getLayoutParams();
geoLP.point = newFocus.getPoint();// 这行用于popView的定位
TextView title = (TextView) popView
.findViewById(R.id.map_bubbleTitle);
title.setText(newFocus.getTitle());
TextView desc = (TextView) popView
.findViewById(R.id.map_bubbleText);
if (newFocus.getSnippet() == null
|| newFocus.getSnippet().length() == 0) {
desc.setVisibility(View.GONE);
} else {
desc.setVisibility(View.VISIBLE);
desc.setText("距离当前位置:"+newFocus.getSnippet()+"公里");
}
citymap.updateViewLayout(popView, geoLP);
popView.setVisibility(View.VISIBLE);
}
}
};
基本上完成了,第一次写东西,有点没有层次。继续努力!
本文介绍如何使用自定义的RestaurantOverlay类来在地图上添加图标,并通过ItemizedOverlay的OnFocusChangeListener实现在点击图标时弹出包含详细信息的泡泡窗口。
304

被折叠的 条评论
为什么被折叠?



