http://book.51cto.com/art/201007/213758.htm
http://hi.baidu.com/nearthegreen/blog/item/aab29ff492456205b17ec507.html
http://www.linuxidc.com/Linux/2011-07/38864.htm 百度地图API
OverlayItem使用ItemizedOverlay类来向MapView提供简单的标记功能。
可以通过创建自己的覆盖来向地图上绘制标记,但是ItemizedOverlay提供了一种快捷的方法,可以把标记图片和相关的文本分配给特定的地理位置。ItemizedOverlay实例可以处理每一个OverlayItem标记的绘制、放置、单击处理、焦点控制和布局优化。
注意:
在本书即将印刷的时候,ItemizedOverlay/OverlayItem功能并不是完全被支持的。虽然它可以实现每一个要求的类,但是标记却并不能在地图上显示。
要向你的地图中添加一个ItemizedOverlay标记层,首先要创建一个扩展了ItemizedOverlay<OverlayItem>的新类,如下面的框架代码所示:
- import android.graphics.drawable.Drawable;
- import com.google.android.maps.GeoPoint;
- import com.google.android.maps.ItemizedOverlay;
- import com.google.android.maps.OverlayItem;
- public class MyItemizedOverlay extends ItemizedOverlay<OverlayItem> {
- public MyItemizedOverlay(Drawable defaultMarker) {
- super(defaultMarker);
- // 创建这一层中包含的每一个overlay item
- populate();
- }
- @Override
- protected OverlayItem createItem(int index) {
- switch (index) {
- case 1:
- Double lat = 37.422006*1E6;
- Double lng = -122.084095*1E6;
- GeoPoint point = new GeoPoint(lat.intValue(), lng.intValue());
- OverlayItem oi;
- oi = new OverlayItem(point, "Marker", "Marker Text");
- return oi;
- }
- return null;
- }
- @Override
- public int size() {
- // 返回集合中的标记的数目
- return 1;
- }
- }
提示:
ItemizedOverlay是一个基本类,你可以在任何由OverlayItem所派生的子类的基础上进行扩展。
在实现中,重写size来返回要显示的标记的数目,并且重写createItem从而在每一个标记索引的基础上创建新的item条目,i还需要调用类的构造函数中的populate。这个调用是必需的,它用来触发每一个OverlayItem的创建;因此,一旦拥有了要求创建所有的项目的数据,那么就必须调用它。
要在地图中添加一个ItemizedOverlay实现,需要创建一个新的实例(并传递给它要使用的默认的图片标记),并把它添加到地图的Overlay列表中,如下面的代码所示:
- List<Overlay> overlays = mapView.getOverlays();
- MyItemizedOverlay markrs = new MyItemizedOverlay (r.getDrawable(R.drawable. marker));
- overlays.add(markrs);