百度地图开发探索 angular7地图原始宽高固定、初始化、工具条/比例尺、缩略图/混合图,地图类型切换(卫星、三位、混合)、定位/版权/城市列表控件

1、地图宽高固定(整页背景)

通过ID获取地图,高度随窗口变化而变化

const height = window.innerHeight - 123;
const map = document.getElementById('allmap');
map.style.height = height + 'px';

2、地图初始化

<div id="allmap"></div>
	this.map = new BMap.Map('allmap', { enableMapClick: false });
    // 判断时候从围栏详情过来,是则不设置地图初始中心点,避免调整围栏视野后在加载调整至地图中心
    if (!this.isPassedValue) {
      this.map.centerAndZoom('青岛'); // 初始化地图,设置中心点坐标和地图级别
    }
    // this.map.enableInertialDragging();   // 两秒后开启惯性拖拽
    this.map.enableScrollWheelZoom(); // 启用滚轮放大缩小,默认禁用
    // 更改背景样式
    // setTimeout(() => {
    //   this.map.setMapStyle({ styleJson: styleJson });
    // }, 5000);
    this.toolControl();

centerAndZoom(‘青岛’,11) // 地图初始化:未初始化的地图不能进行任何操作 前面可以是点也可以是地区名称 如果是点(Point)则必须限定等级(3-19) 移动端(3-18),如果是地区则可忽略 触发的回调方法–load()

enableInertialDragging() // 开启惯性拖拽,默认禁用
enableScrollWheelZoom() 启用滚轮放大缩小

换底图(背景图)–过于卡顿 未成功
setMapStyle
setMapStyleV2({styleJson:样式})

2、工具条 – 比例尺:

// 工具条控件
  toolControl() {
    // 比例尺
    const top_left_control = new BMap.ScaleControl({
      anchor: BMAP_ANCHOR_BOTTOM_RIGHT,
      offset: new BMap.Size(180, 110),
    }); // 左上角,添加比例尺
    this.map.addControl(top_left_control);
    // 缩放平移控件
    // const top_left_navigation = new BMap.NavigationControl();
    // this.map.addControl(top_left_navigation);
    // 平移和缩放按钮
    const top_right_navigation = new BMap.NavigationControl({
      anchor: BMAP_ANCHOR_BOTTOM_RIGHT,
      offset: new BMap.Size(100, 100), // 偏离值
    });
    this.map.addControl(top_right_navigation);
  }

ScaleControl:创建比例尺
NavigationControl: 平移缩放控件
anchor:比例尺位置
declare let BMAP_ANCHOR_TOP_LEFT: any; // 左上
declare let BMAP_ANCHOR_TOP_RIGHT: any; // 右上
declare let BMAP_ANCHOR_BOTTOM_LEFT: any; // 左下
declare let BMAP_ANCHOR_BOTTOM_RIGHT: any; // 右下
offset: 偏移值 要使用 new BMap.Size();转化 上下/左右 不过偏移后会有阴影尽量不要做偏移

3、缩略图、混合图

// 地图、混合地图
    const mapType = new BMap.MapTypeControl({
      // BMAP_HYBRID_MAP
      // mapTypes: [BMAP_NORMAL_MAP, BMAP_HYBRID_MAP],
      anchor: BMAP_ANCHOR_TOP_RIGHT,
      type: BMAP_MAPTYPE_CONTROL_HORIZONTAL,
    });
    this.map.addControl(mapType);
    // 默认关闭的缩略图  右下角有个小箭头
    const overView = new BMap.OverviewMapControl();
    this.map.addControl(overView);
    // 打开的缩略图
    const overViewOpen = new BMap.OverviewMapControl({
      isOpen: true,
      anchor: BMAP_ANCHOR_BOTTOM_LEFT,
    });
    this.map.addControl(overViewOpen);

MapTypeControl:创建缩略图
anchor:设置控件停靠的位置 设置控件停靠位置
BMAP_ANCHOR_BOTTOM_RIGHT 右下 其他的类似
offset: 偏移量Size类型
isOpen:是否打开

4、地图类型切换–点击事件触发

// 切换地图类型 卫星、三维
  setMapType(type: number) {
    switch (type) {
      case 1:
        // 地图
        this.map.setMapType(BMAP_NORMAL_MAP);
        break;
      case 2:
        // 卫星
        this.map.setMapType(BMAP_SATELLITE_MAP);
        break;
      case 3:
        // 混合图
        this.map.setMapType(BMAP_HYBRID_MAP);
        break;
      default:
        break;
    }
  }

5、定位控件

// 定位控件
  locationControl() {
    // 添加带有定位的导航控件,就是缩放控件+定位按钮
    const navigationControl = new BMap.NavigationControl({
      // 靠左上角位置
      anchor: BMAP_ANCHOR_TOP_LEFT,
      // LARGE类型
      type: BMAP_NAVIGATION_CONTROL_LARGE,
      // 启用显示定位
      enableGeolocation: true,
    });
    this.map.addControl(navigationControl);

    // 添加定位控件
    const geolocationControl = new BMap.GeolocationControl();
    geolocationControl.addEventListener('locationSuccess', (e: any) => {
      // 定位成功事件
      let address = '';
      address += e.addressComponent.province;
      address += e.addressComponent.city;
      address += e.addressComponent.district;
      address += e.addressComponent.street;
      address += e.addressComponent.streetNumber;
      alert('当前定位地址为:' + address);
    });
    geolocationControl.addEventListener('locationError', (e: any) => {
      // 定位失败事件
      alert(e.message);
    });
    this.map.addControl(geolocationControl);
  }

NavigationControl 此类是地图的平移缩放控件,可以对地图上下左右四个方向平移和缩放。
enableGeolocation:控件是否继承定位功能 使用H5浏览器定位功能
GeolocationControl:创建特定样式的地图定位控件:如下
选项-GeolocationControlOptions:
anchor
offset
showAddressBar(是否显示定位信息面板)
enableAutoLocation(添加控件时是否进行定位)
locationIcon(自定义图标)
定位成功事件:locationSuccess 失败事件:locationError

6、第三方版权控件

// 第三方版权控件
  thirdControl() {
    const cr = new BMap.CopyrightControl({ anchor: BMAP_ANCHOR_TOP_RIGHT }); // 设置版权控件位置
    this.map.addControl(cr); // 添加版权控件

    const bs = this.map.getBounds(); // 返回地图可视区域
    cr.addCopyright({
      id: 1,
      content:
        '<a href="#" style="font- size: 20px; background: yellow">中瑞glcrm</a>',
      bounds: bs,
    });
    // Copyright(id,content,bounds)类作为CopyrightControl.addCopyright()方法的参数
  }

可以在地图上添加自己的版权信息。每一个版权信息需要包含如下内容:版权的唯一标识、版权内容和其适用的区域范围。
CopyrightControl.addCopyright():包含以上三部分
id: 版权信息的唯一标识
content:版权信息的文本内容,支持HTML
bounds:该版权信息所适用的地理区域 Bounds类型
Bounds(sw,ne):基础类,创建一个给定点坐标的矩形区域,
参数:1、sw,西南角 2、ne,东北角 Point

7、城市列表控件

CityListControl 城市列表控件
事件:
onChangeBefore :切换城市之前事件
onChangeAfter:切换城市之后事件
onChangeSuccess(e):切换城市成功之后的事件 e为城市的地址编号等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值