百度地图实现 区域高亮

已经封装位 api , 直接调用就可以

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <style>
    .bmap {
      height: 100vh;
    }
  </style>
  <!-- 百度 -->
  <script src="https://api.map.baidu.com/api?v=3.0&ak=xxxx&styleId="></script>
  <!-- echarts -->
  <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts@5/dist/echarts.min.js"></script>
  <!-- 扩展地图插件 -->
  <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts@5/dist/extension/bmap.min.js"></script>

  <div id="bmap" class="bmap"></div>
  <script src='./index.js'></script>
  <script>
    var myChart = echarts.init(document.getElementById('bmap'))
    option = {
      title: {
        text: '',
        left: 'center',
        textStyle: {
          color: '#fff'
        }
      },
      tooltip: {
        trigger: 'item',
        formatter: function (res) {
          return res.name + ':' + res.value[2]
        }
      },
      bmap: {
        center: [121.480509, 31.23592, 10],
        zoom: 10,
        roam: true,
        mapStyle: {
        },
      },
      series: [
        {
          name: '测试',
          type: 'effectScatter',
          coordinateSystem: 'bmap',
          data: [
            { name: '上海', value: [121.480509, 31.23592, 10] },
            { name: '南京', value: [118.804147, 32.070037, 10] }
          ],
          symbolSize: function (val) {
            return val[2]
          },
          rippleEffect: {
            brushType: 'stroke'
          },
          itemStyle: {
            normal: {
              color: '#ff0000',
              shadowBlur: 10,
              shadowColor: '#333'
            }
          }
        }
      ]
    }
    myChart.setOption(option)
    var bmap = myChart.getModel().getComponent('bmap').getBMap();
    bmap.setMapStyleV2({
      styleId: '5c067ea626775da3d2131d4b41d04363'
    });

    // getBoundary()

    const distirctList = [{ name: '南京', color: 'red' }, { name: '上海', color: 'black' }]

    const mapHightLight = new MapHightLight(BMap, bmap)

    mapHightLight.getDistricts(distirctList)
  </script>
</body>

</html>
class MapHightLight {
  constructor(BMap, bmapInstance) {
    this.BMap = BMap
    this.bmapInstance = bmapInstance
  }
  /**
   * @description: 获取当前区域的路径坐标
   * @param {*} distirct
   * @return {*}
   */
  #getDistrict(distirct) {
    const bdary = new this.BMap.Boundary();
    return new Promise((resolve, reject) => {
      bdary.get(distirct.name, function (res) {
        resolve({
          ...distirct,
          points: res.boundaries.reduce((pre, next) => {
            pre.push(next)
            return pre
          }, [])
        })
      });
    })
  }


  #drawBoundary(districts) {
    const pointArray = [];
    for (const district of districts) {
      const { name, color } = district
      for (const point of district.points) {
        const ply = new this.BMap.Polygon(point, {
          strokeWeight: 1, //边框宽度
          strokeColor: "red", //边框颜色
          fillColor: color //填充颜色
        }); //建立多边形覆盖物
        ply.name = name;
        this.bmapInstance.addOverlay(ply);
        const path = ply.getPath();
        pointArray.push(...path);
      }
    }
    this.bmapInstance.setViewport(pointArray)
  }

  /**
   * @description: 获取当前区域的路径坐标
   * @param { Array<any> } distirct
   * @return {*}
   */
  getDistricts(distirctList) {
    const promiseList = distirctList.reduce((pre, distirct) => {
      pre.push(this.#getDistrict(distirct))
      return pre
    }, [])

    Promise.all(promiseList).then(res => {
      this.#drawBoundary(res)
    })
  }

}

在这里插入图片描述
百度地图
百度地图 api 类文档
ecahrts amap
高亮参考

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
要在 Echarts 中实现地图部分区域高亮显示,你可以使用 Echarts 提供的地图组件和相关配置项来实现。下面是一个简单的示例代码: 首先,确保你已经引入了 Echarts 的 JavaScript 文件。然后,创建一个包含地图的容器,例如一个 `<div>` 元素,并为其设置一个固定的宽度和高度。 ```html <div id="map" style="width: 600px; height: 400px;"></div> ``` 接下来,使用 JavaScript 代码来初始化 Echarts 并配置地图的数据和样式。 ```javascript // 初始化 Echarts var myChart = echarts.init(document.getElementById('map')); // 地图数据配置 var option = { series: [{ type: 'map', map: 'china', // 使用中国地图 itemStyle: { normal: { // 设置默认状态下的地图区域样式 areaColor: '#ccc', borderColor: '#fff', borderWidth: 1 }, emphasis: { // 设置鼠标悬停时的高亮样式 areaColor: '#ff0000', borderColor: '#fff', borderWidth: 1 } }, data: [ {name: '北京', value: 100}, {name: '上海', value: 200}, {name: '广州', value: 300}, // 其他省份的数据... ] }] }; // 将配置项设置给 Echarts 实例 myChart.setOption(option); ``` 在上面的代码中,通过设置 `itemStyle` 中的 `normal` 和 `emphasis` 分别配置了默认状态和高亮状态下的地图区域样式。你可以根据自己的需求来调整这些样式。 最后,使用 `setOption` 方法将配置项设置给 Echarts 实例,即可在页面上显示出地图实现区域高亮效果。 请注意,上面的示例中使用的是中国地图,你可以根据需要更换为其他地图数据。此外,你还可以根据自己的需求对其他 Echarts 地图配置项进行进一步的调整和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值