Android百度地图开发(二)地图覆盖物
16lz
2021-01-26
上一篇文章写道如何在一个mapview中简单的显示地图;本次学习一下如何在地图上添加一些覆盖物。
1.设置显示交通地图:
1 // 显示交通地图2 mapView.setTraffic(true);
2.设置显示为卫星地图:
// 显示交通地图//mapView.setTraffic(true); // 显示卫星地图mapView.setSatellite(true);
当然卫星地图和交通地图也可以同时显示
3.百度地图提API供了一下几种覆盖物
// MyLocationOverlay:负责显示用户当前位置// PoiOverlay:本地搜索图层,提供某一特定区域的位置搜索服务// RouteOverlay:不行、驾车导航线路图层,将步行、驾车出行方案的线路及关键点显示在地图上。// TransitOverlay:公交换乘路线图层,将某一特定区域的公交出行方案的线路及换乘位置显示在地图上
4.给一个覆盖物添加一些标注
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 arg0, MapView arg1, boolean arg2) { // TODO Auto-generated method stub super.draw(arg0, arg1, arg2); Point point = mapView.getProjection().toPixels(geoPoint, null); arg0.drawText("*这里是天安门*", point.x, point.y, paint); } }
然后在MainActivity中将这个点添加进去
mapView.getOverlays().add(new MyOverlay());
5.给多个覆盖物添加标注
@SuppressLint("NewApi") public class MyOverlayItem extends ItemizedOverlay<OverlayItem> { private List<OverlayItem> list = new ArrayList<OverlayItem>(); // 定义一个坐标,double类型 private double mLat1 = 39.90923; // 表示经度 private double mLon1 = 116.397428;// 表示纬度 private double mLat2 = 39.9022; // 表示经度 private double mLon2 = 116.3922;// 表示纬度 private double mLat3 = 39.917723; // 表示经度 private double mLon3 = 116.37222;// 表示纬度 // 用于在地图上标识坐标,用一个图片标注 public MyOverlayItem(Drawable arg0) { super(arg0); // TODO Auto-generated constructor stub 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中把这几个点添加进去 list.add(new OverlayItem(geoPoint1, "Point01", "Point01")); list.add(new OverlayItem(geoPoint2, "Point02", "Point02")); list.add(new OverlayItem(geoPoint3, "Point03", "Point03")); //地图刷新的功能 populate(); } // 返回制定的list集合中每一个坐标 @Override protected OverlayItem createItem(int arg0) { // TODO Auto-generated method stub return list.get(arg0); } // 返回地图上点的个数 @Override public int size() { // TODO Auto-generated method stub return list.size(); } @Override public boolean onTap(int i) { // TODO Auto-generated method stub Toast.makeText(MainActivity.this, list.get(i).getSnippet(), 1).show(); return true; } }
然后在MainActivity中添加一下代码(需要在项目中导入一张图片,命名为:iconmarka):
Drawable drawable = getResources().getDrawable(R.drawable.iconmarka); mapView.getOverlays().add(new MyOverlayItem(drawable));
最终效果图:
更多相关文章
- android添加第三方库以及JNI接口封装
- Android(安卓)如何用HttpClient 以Get方式获取数据并添加http头
- 【Android】 textview 中超出屏幕宽度的字符 省略号显示
- android照相机竖屏显示的图像出现旋转的问题,但成像被拉伸了
- 在android工程中导入jar包或lib
- Android(安卓)MTK 8.1 预制应用 (讯飞输入法)
- android user模式下切换为root权限方法
- android ContentResolver的使用(获取和修改联系人信息demo)
- Android进行短信备份的一个工具类,支持进度条显示