当前位置:操作系统 > 安卓/Android >>

Android百度地图开发--地图覆盖物

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 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,