看看多了那三个小图片就是我们的效果结果。点击一下也会有相应的。试一下吧!
某个类型的覆盖物,包含多个类型相同、显示方式相同、处理方式相同的项时,使用此类:
ItemizedOverlay是Overlay的一个基类,包含了一个OverlayItem列表。 从南到北的处理item,用于绘制、创建平移边界、为每个点绘制标记点,和维护一个焦点选中的item,同时也负责把一个屏幕点击匹配到item上去,分发焦点改变事件给备选的监听器。
类型 | 名称 |
---|---|
static int | ITEM_STATE_FOCUSED_MASK
|
static int | ITEM_STATE_NORMAL_MASK
|
static int | ITEM_STATE_PRESSED_MASK
|
static int | ITEM_STATE_SELECTED_MASK
|
protected Drawable | mMarker
|
protected GeoPoint | mPoint
|
protected java.lang.String | mSnippet
|
protected java.lang.String | mTitle
|
返回类型 | 方法 |
---|---|
Drawable | getMarker(int stateBitset)
|
GeoPoint | getPoint()
|
java.lang.String | getSnippet()
|
java.lang.String | getTitle()
|
java.lang.String | routableAddress()
|
void | setMarker(Drawable marker)
|
static void | setState(Drawable drawable, int stateBitset)
|
package xiaosi.baiduMap; import java.util.ArrayList; import java.util.List; import android.content.Context; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.widget.Toast; import com.baidu.mapapi.BMapManager; import com.baidu.mapapi.GeoPoint; import com.baidu.mapapi.ItemizedOverlay; import com.baidu.mapapi.MapActivity; import com.baidu.mapapi.MapController; import com.baidu.mapapi.MapView; import com.baidu.mapapi.OverlayItem; public class BaiduMapActivity extends MapActivity { /** Called when the activity is first created. */ private BMapManager mapManager = null; private String key = "1B79478DA01F7800AEA8602517A6D89B38151105"; private MapView mapView = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mapManager = new BMapManager(getApplication()); mapManager.init(key, null); super.initMapActivity(mapManager); mapView = (MapView) findViewById(R.id.mapsView); mapView.setBuiltInZoomControls(true); // 设置启用内置的缩放控件 MapController mapController = mapView.getController(); // 得到mMapView的控制权,可以用它控制和驱动平移和缩放 mapController.setZoom(12); // 设置地图zoom级别 Drawable marker = getResources().getDrawable(R.drawable.d); //得到需要标在地图上的资源 mapView.getOverlays().add(new OverItemT(marker, this)); //添加ItemizedOverlay实例到mMapView } class OverItemT extends ItemizedOverlay<OverlayItem> { private List<OverlayItem> GeoPointList = new ArrayList<OverlayItem>(); private Context mContext; //三个坐标 private double coordinateX1= 39.90923; private double coordinateY1 = 116.397428; private double coordinateX2 = 39.9022; private double coordinateY2 = 116.3922; private double coordinateX3 = 39.917723; private double coordinateY3 = 116.3722; private double coordinateX4 = 39.90923; private double coordinateY4 = 116.3922; public OverItemT(Drawable marker, Context context) { //调整一个drawable边界,使得(0,0)是这个drawable底部最后一行中心的一个像素。 super(boundCenterBottom(marker)); this.mContext = context; // 用给定的经纬度构造GeoPoint,单位是微度 (度 * 1E6) GeoPoint point1 = new GeoPoint((int) (coordinateX1 * 1E6), (int) (coordinateY1 * 1E6)); GeoPoint point2 = new GeoPoint((int) (coordinateX2 * 1E6), (int) (coordinateY2 * 1E6)); GeoPoint point3 = new GeoPoint((int) (coordinateX3 * 1E6), (int) (coordinateY3 * 1E6)); GeoPoint point4 = new GeoPoint((int) (coordinateX4 * 1E6), (int) (coordinateY4 * 1E6)); /*OverlayItem(GeoPoint point, String title, String snippet) * point 该item的位置 * title 该item的标题文本 * snippet 该item的文字片段 */ GeoPointList.add(new OverlayItem(point1, "P1", "写字楼")); GeoPointList.add(new OverlayItem(point2, "P2", "西城区政府")); GeoPointList.add(new OverlayItem(point3, "P3", "招待所")); GeoPointList.add(new OverlayItem(point4, "P4", "小学")); // createItem(int)方法构造item。一旦有了数据,在调用其它方法前,首先调用这个方法 populate(); } @Override protected OverlayItem createItem(int i) { return GeoPointList.get(i); } @Override public int size() {System.out.println("Size;" + GeoPointList.size()); return GeoPointList.size(); } @Override // 处理当点击事件 protected boolean onTap(int i) { //getSnippet() 该item的文字片段 Toast.makeText(this.mContext, GeoPointList.get(i).getSnippet(), Toast.LENGTH_SHORT).show(); return true; } } @Override protected boolean isRouteDisplayed() { return false; } @Override protected void onDestroy() { if (mapManager != null) { mapManager.destroy(); mapManager = null; } super.onDestroy(); } @Override protected void onPause() { if (mapManager != null) { mapManager.stop(); } super.onPause(); } @Override protected void onResume() { if (mapManager != null) { mapManager.start(); } super.onResume(); } }