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));

最終效果圖:

發佈留言