Android百度地图(二)

本文继续探讨Android中百度地图的使用,详细介绍了如何进行地图图层操作,创建圆形覆盖物,添加文字覆盖物以及设置标志覆盖物等高级功能。
摘要由CSDN通过智能技术生成

百度地图(一)的基础上,进行的操作

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;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值