Android百度地圖(二)

百度地圖(一)的基礎上,進行的操作

1.地圖圖層

public boolean onKeyDown(int keyCode, KeyEvent event) {
        switch (keyCode) {
        case KeyEvent.KEYCODE_1:
            // 顯示普通地圖
            baiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);
            baiduMap.setTrafficEnabled(false);
            break;
        case KeyEvent.KEYCODE_2:
            // 顯示衛星圖
            baiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);
            baiduMap.setTrafficEnabled(false);
            break;
        case KeyEvent.KEYCODE_3:
            // 交通圖
            baiduMap.setTrafficEnabled(true);
            break;
        }
        return super.onKeyDown(keyCode, event);
    }

2.圓形覆蓋物

public void init() {
        CircleOptions options = new CircleOptions();    // 創建一個圓形覆蓋物的參數
        options.center(mZafu_donghu)    // 圓心
                .radius(1000)   // 半徑
                .stroke(new Stroke(20, 0x55FF0000))// 線條寬度、顏色
                .fillColor(0x5500FF00); // 圓的填充顏色
        baiduMap.addOverlay(options);   // 添加一個覆蓋物
    }

3.文字覆蓋物

public void init() {
        TextOptions options = new TextOptions();
        options.position(mZafu_donghu)          // 位置
                .text("zafu")           // 文字內容
                .fontSize(20)           // 文字大小
                .fontColor(0XFF000000)  // 文字顏色
                .bgColor(0X55FF0000)    // 背景顏色
                .rotate(30);            // 旋轉
        baiduMap.addOverlay(options);
    }

4.標誌覆蓋物

private View pop;
    private TextView tv_title;

    @Override
    public void init() {
        initMarker();
        baiduMap.setOnMarkerClickListener(mOnMarkerClickListener);
        baiduMap.setOnMarkerDragListener(mOnMarkerDragListener);
    }

    /** 標誌拖動監聽器 */
    OnMarkerDragListener mOnMarkerDragListener = new OnMarkerDragListener() {

        /** 標誌開始拖動 */
        @Override
        public void onMarkerDragStart(Marker marker) {
            mapView.updateViewLayout(pop, createLayoutParams(marker.getPosition()));
        }

        /** 標誌拖動結束 */
        @Override
        public void onMarkerDragEnd(Marker marker) {
            mapView.updateViewLayout(pop, createLayoutParams(marker.getPosition()));
        }

        /** 標誌正在拖動 */
        @Override
        public void onMarkerDrag(Marker marker) {
            mapView.updateViewLayout(pop, createLayoutParams(marker.getPosition()));
        }
    };

    OnMarkerClickListener mOnMarkerClickListener = new OnMarkerClickListener() {

        @Override
        public boolean onMarkerClick(Marker marker) {
            // 顯示一個泡泡
            if (pop == null) {
                pop = View.inflate(MarkerOverlayActivity.this, R.layout.pop, null);
                tv_title = (TextView) pop.findViewById(R.id.tv_title);
                mapView.addView(pop, createLayoutParams(marker.getPosition()));
            } else {
                mapView.updateViewLayout(pop, createLayoutParams(marker.getPosition()));
            }
            tv_title.setText(marker.getTitle());
            return true;
        }
    };

    /** 初始化標誌 */
    private void initMarker() {
        MarkerOptions options = new MarkerOptions();
        BitmapDescriptor icon = BitmapDescriptorFactory.fromResource(R.drawable.icon_eat);
        options.position(mZafu_donghu)      // 位置
                .title("zafu")      // title
                .icon(icon)         // 圖標
                .draggable(true);   // 設置圖標可以拖動

        baiduMap.addOverlay(options);

        // 添加一個向北的標誌
        options = new MarkerOptions().icon(icon)
                .title("向北")
                .position(new LatLng(mZafu_donghu.latitude + 0.001, mZafu_donghu.longitude))
                .draggable(true);
        baiduMap.addOverlay(options);

        // 添加一個向東的標誌
        options = new MarkerOptions().icon(icon)
                .title("向東")
                .position(new LatLng(mZafu_donghu.latitude, mZafu_donghu.longitude + 0.001))
                .draggable(true);
        baiduMap.addOverlay(options);

        // 添加一個向西南的標誌
        options = new MarkerOptions().icon(icon)
                .title("向西南")
                .position(new LatLng(mZafu_donghu.latitude - 0.001, mZafu_donghu.longitude - 0.001))
                .draggable(true);
        baiduMap.addOverlay(options);
    }

    /**
     * 創建一個佈局參數
     * @param position
     * @return
     */
    private MapViewLayoutParams createLayoutParams(LatLng position) {
        MapViewLayoutParams.Builder buidler = new MapViewLayoutParams.Builder(); 
        buidler.layoutMode(ELayoutMode.mapMode);    // 指定座標類型爲經緯度
        buidler.position(position);     // 設置標誌的位置
        buidler.yOffset(-25);           // 設置View往上偏移
        MapViewLayoutParams params = buidler.build();
        return params;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章