在http://blog.csdn.net/lj102800/article/details/13998543基础上添加
Drawable drawable=getResources().getDrawable(R.drawable.iconmarka);
mapView.getOverlays().add(new MyOverLayItem(drawable));
//Overlay是一个基类,它表示可以显示在地图上方的覆盖overlay
public class MyOverLay extends Overlay{
//构建地图的一个点
private GeoPoint geoPoint=new GeoPoint(((int)(39.915*1E6)), ((int)(116.404*1E6)));
//声明一个画笔的工具
private Paint paint=new Paint();
@Override
public void draw(Canvas canvas, MapView mapView, boolean shadow) {
super.draw(canvas, mapView, shadow);
Point point=mapView.getProjection().toPixels(geoPoint, null);
canvas.drawText("*这里天安门", point.x, point.y, paint);
}
}
调用代码
//需要定义一个经纬度:北京天安门
mapView.getOverlays().add(new MyOverLay());
多个建筑物的标注
public class MyOverLayItem extends ItemizedOverlay<OverlayItem>{
//定义一组坐标,都是一个double类型定义
private List<OverlayItem> list=new ArrayList<OverlayItem>();
//
private double mLat1=39.915;//表示经度
private double mLon1=116.404;//表示纬度
private double mLat2=39.922;
private double mLon2=116.422;
private double mLat3=39.923;
private double mLon3=116.423;
//用于在地图上标识坐标,用一个图片标注
public MyOverLayItem(Drawable arg0) {
super(arg0);
GeoPoint geoPoint1=new GeoPoint((int)(mLat1*1E6), (int)(mLon1*1E6));
GeoPoint geoPoint2=new GeoPoint((int)(mLat2*1E6), (int)(mLon2*1E6));
GeoPoint geoPoint3=new GeoPoint((int)(mLat3*1E6), (int)(mLon3*1E6));
list.add(new OverlayItem(geoPoint1, "Point1", "Point1"));
list.add(new OverlayItem(geoPoint2, "Point2", "Point2"));
list.add(new OverlayItem(geoPoint3, "Point3", "Point3"));
populate();//刷新地图功能
}
//返回指定的list集合中每一个坐标
@Override
protected OverlayItem createItem(int arg0) {
return list.get(arg0);
}
@Override
public int size() {
return list.size();
}
//处理一个点击事件
@Override
protected boolean onTap(int arg0) {//getSnippet()对应第三个参数Point1
Toast.makeText(MainActivity.this, list.get(arg0).getSnippet(),1).show();
return true;
}
}
调用代码
Drawable drawable=getResources().getDrawable(R.drawable.iconmarka);
mapView.getOverlays().add(new MyOverLayItem(drawable));