vue3 + 高德地图——实现部分市级地区高亮

本文介绍了如何在Vue项目中使用高德地图API,包括引入地图、设置安全密钥、初始化地图并展示市级行政区的高亮效果,以及使用行政区查询服务和多边形绘制功能。
摘要由CSDN通过智能技术生成

1. 在项目中引入高德地图,注意要给装地图的盒子设置宽高!!

<template>
  <div class="tourism">
    <div style="background-color: #ffffff;">
      <div id="container"></div>
    </div>
  </div>
</template>

<script setup>
import AMapLoader from '@amap/amap-jsapi-loader';
import { onMounted  } from "vue";

// 注意:要想市级区域正常显示,必须添加安全密钥 
window._AMapSecurityConfig = {
  securityJsCode: '你的安全密钥', 
}
// 初始化地图
function initMap() {
  AMapLoader.load({
    key: "你申请的key",  // 申请好的Web端开发者Key,首次调用 load 时必填
    version: "2.0",      // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
    plugins: [ ],
  }).then((AMap) => {
    const map = new AMap.Map("container", {  //设置地图容器id
      viewMode: "2D",    //是否为3D地图模式
      zoom: 4,           //初始化地图级别
      center: [113.808299, 34.791787], //初始化地图中心点位置 
    });
  }).catch(e => {
    console.log(e);
  })
}
onMounted(() => {
  initMap()
})
</script>

运行代码后,效果图如下所示:

2. 在初始化函数中,引入高德地图行政区查询服务,创建DistrictSearch对象,遍历数组查询后采用高德地图多边形绘制(AMap.Polygon)改变样式

详细可参考官网:

行政区查询-服务-教程-地图 JS API 1.4 | 高德地图API (amap.com)

多边形绘制和编辑-面-进阶教程-地图 JS API 2.0|高德地图API (amap.com)

// 初始化地图
function initMap() {
  AMapLoader.load({
    key: "你申请的key",             // 申请好的Web端开发者Key,首次调用 load 时必填
    version: "2.0",      // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
    plugins: ["AMap.DistrictSearch"],
  }).then((AMap) => {
    const map = new AMap.Map("container", {  //设置地图容器id
      viewMode: "2D",    //是否为3D地图模式
      zoom: 4,           //初始化地图级别
      center: [113.808299, 34.791787], //初始化地图中心点位置 
    });
    var districtSearch = new AMap.DistrictSearch({
      subdistrict: 0,   //获取边界不需要返回下级行政区
      extensions: 'all',  //返回行政区边界坐标组等具体信息
      level: 'district'  //查询行政级别为 市
    })
    var polygons = [];
    let arr = ["郑州市","青岛市","徐州市","安阳市","泰安市"]  //此处为高亮的市名
    arr.forEach(item => {
      districtSearch.search(item, function (status, result) {  // 查询成功时,result即为对应的行政区信息
        map.remove(polygons)//清除上次结果
        var bounds = result.districtList[0].boundaries;
        if (bounds) {
          for (var i = 0, l = bounds.length; i < l; i++) {
            //生成行政区划polygon
            var polygon = new AMap.Polygon({
              strokeWeight: 1,
              path: bounds[i],
              fillOpacity: 0.4,
              fillColor: '#80d8ff',
              strokeColor: '#0091ea'
            });
            polygons.push(polygon);
          }
        }
        map.add(polygons)
        map.setFitView(polygons);//视口自适应
      })
    })
  }).catch(e => {
    console.log(e);
  })
}

运行代码后,我们想要的市级地区高亮效果就完成啦!

3. 其他行政区级别也可参考本文章,通过修改 AMap.DistrictSearch 中的 level 属性实现级别切换。

若还想更为深入的了解其他相关属性,可前往高德地图官网浏览学习:

搜索服务-参考手册-地图 JS API 1.4 | 高德地图API (amap.com)

4. 完整代码如下所示:

<template>
  <div class="tourism">
    <div style="background-color: #ffffff;">
      <div id="container"></div>
    </div>
  </div>
</template>

<script setup>
import AMapLoader from '@amap/amap-jsapi-loader';
import { onMounted  } from "vue";

// 注意:要想市级区域正常显示,必须添加安全密钥 
window._AMapSecurityConfig = {
  securityJsCode: '你的安全密钥', 
}
// 初始化地图
function initMap() {
  AMapLoader.load({
    key: "你申请的key",             // 申请好的Web端开发者Key,首次调用 load 时必填
    version: "2.0",      // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
    plugins: ["AMap.DistrictSearch"],
  }).then((AMap) => {
    const map = new AMap.Map("container", {  //设置地图容器id
      viewMode: "2D",    //是否为3D地图模式
      zoom: 4,           //初始化地图级别
      center: [113.808299, 34.791787], //初始化地图中心点位置 
    });
    var districtSearch = new AMap.DistrictSearch({
      subdistrict: 0,   //获取边界不需要返回下级行政区
      extensions: 'all',  //返回行政区边界坐标组等具体信息
      level: 'district'  //查询行政级别为 市
    })
    var polygons = [];
    let arr = ["郑州市","青岛市","徐州市","安阳市","泰安市"]  //此处为高亮的市名
    arr.forEach(item => {
      districtSearch.search(item, function (status, result) {  // 查询成功时,result即为对应的行政区信息
        map.remove(polygons)//清除上次结果
        var bounds = result.districtList[0].boundaries;
        if (bounds) {
          for (var i = 0, l = bounds.length; i < l; i++) {
            //生成行政区划polygon
            var polygon = new AMap.Polygon({
              strokeWeight: 1,
              path: bounds[i],
              fillOpacity: 0.4,
              fillColor: '#80d8ff',
              strokeColor: '#0091ea'
            });
            polygons.push(polygon);
          }
        }
        map.add(polygons)
        map.setFitView(polygons);//视口自适应
      })
    })
  }).catch(e => {
    console.log(e);
  })
}
onMounted(() => {
  initMap()
})
</script>

<style>
.tourism {
  width: 80%;
  margin: 0 auto;
  padding-top: 60px;
  box-sizing: border-box;
}

#container {
  padding: 0px;
  margin: 0px auto;
  width: 100%;
  height: 400px;
}
</style>

  • 10
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用高德地图 JavaScript API 中的 AMap.Geolocation 对象来确认用户当前的位置。具体步骤如下: 1. 引入高德地图 JavaScript API: ```html <script src="https://webapi.amap.com/maps?v=1.4.15&key=您的高德地图API Key"></script> ``` 2. 创建地图实例: ```javascript var map = new AMap.Map('map-container', { zoom: 13 }); ``` 3. 创建 AMap.Geolocation 实例: ```javascript var geolocation = new AMap.Geolocation({ enableHighAccuracy: true, // 是否使用高精度定位,默认为false timeout: 10000, // 超过10秒后停止定位,默认为5s maximumAge: 0, // 定位结果缓存0毫秒,默认值为0 convert: true, // 是否使用坐标转换服务,默认为true showButton: true, // 是否显示定位按钮,默认为false buttonPosition: 'RB', // 定位按钮的位置,默认为'LB',左下角 buttonOffset: new AMap.Pixel(10, 10), // 定位按钮距离地图边缘的偏移量 showMarker: true, // 是否显示定位点,默认为true markerOptions: { icon: new AMap.Icon({ size: new AMap.Size(24, 24), image: 'https://webapi.amap.com/theme/v1.3/markers/n/mark_b.png', imageSize: new AMap.Size(24, 24) }) }, // 定位点的图标样式 showCircle: true, // 是否显示定位精度圆,默认为true circleOptions: { strokeColor: '#0093FF', fillColor: '#0093FF', strokeWeight: 1, fillOpacity: 0.3 } // 定位精度圆的样式 }); ``` 4. 调用 AMap.Geolocation 的 getCurrentPosition 方法进行定位: ```javascript geolocation.getCurrentPosition(function(status, result) { if (status === 'complete') { // 定位成功 var position = result.position; // 获取定位结果的经纬度信息 map.setCenter(position); // 将地图中心移动到定位结果的位置 } else { // 定位失败 console.log('定位失败:' + result.message); } }); ``` 以上代码将会在地图中心显示当前位置的定位点,并在定位精度圆内显示精度范围。 注意:在使用高德地图 JavaScript API 进行地图开发时,需要在高德开放平台申请 API Key 并进行授权。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值