1. 效果图

2. 思路

  1. 使用 AMap.DistrictSearch 插件获取中国 省级和市级数据
  2. 使用 AMap.DistrictLayer 和 AMap.LabelsLayer ,分别创建 国家和省级的行政区图层和文字标注 。
  3. 为地图绑定 complete 事件,当地图加载完成后,使用 AMap.LabelMarker 在地图上标注出省级数据。
  4. 为地图绑定 click 事件,当用户点击某一省份时,获取点击省级信息,隐藏国家图层,显示省级图层。
  5. 并在点击的省份上标注出市级数据

3. 代码

<!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" /><script src="https://webapi.amap.com/maps?v=1.4.15&key=03526e76418d9af743a39c09e6083a52&plugin=AMap.DistrictLayer,AMap.DistrictSearch"></script><title>国家和省份切换</title><style type="text/css">html,body,.map {width: 100%;height: 100%;background: white !important;margin: 0px;}</style></head><body><div id="container" class="map"></div></body><script type="text/javascript">var provinceData = [];var cityData = [];var disCountry = new AMap.DistrictLayer.Country({zIndex: 10,SOC: "CHN",depth: 1,styles: {"province-stroke": "#888888",fill: "#5470c6",},});var disProvince = new AMap.DistrictLayer.Province({zIndex: 12,adcode: "",depth: 1,styles: {"city-stroke": "#888888",fill: "#5470c6",},});var layerProvince = new AMap.LabelsLayer({collision: false, // 开启标注避让animation: true, // 开启标注淡入动画});var layerCity = new AMap.LabelsLayer({collision: false,animation: true,});var map = new AMap.Map("container", {zooms: [4, 10],center: [106.122082, 33.719192],zoom: 4,isHotspot: false, // 是否开启地图热点和标注的 hover 效果defaultCursor: "pointer",layers: [disCountry, disProvince],viewMode: "2D",resizeEnable: true,});var districtSearch = new AMap.DistrictSearch({level: "country",subdistrict: 2, //  显示下级行政区级数});districtSearch.search("中国", function (status, result) {provinceData = result.districtList[0].districtList;});map.on("complete", function () {for (var i = 0; i < provinceData.length; i++) {var province = provinceData[i];var marker = new AMap.LabelMarker({name: province.name,position: [province.center.lng, province.center.lat],zIndex: 10,text: {content: province.name,direction: "center",style: {fontSize: 10,fontWeight: "normal",fillColor: "#fff",backgroundColor: "rgb(246,137,38)",borderColor: "#fff",},},});layerProvince.add(marker);}map.add(layerProvince);});map.on("click", function (ev) {var px = ev.pixel;var props = disCountry.getDistrictByContainerPos(px); // 拾取所在位置的行政区disProvince.setDistricts(props.adcode + ""); // 显示当前点击的省份disCountry.hide();map.remove(layerProvince);map.setCenter([props.x, props.y]);map.setZoom(7);// 获取当前点击省份下的市级数据for (var i = 0; i < provinceData.length; i++) {if (props.NAME_CHN === provinceData[i].name) {cityData = provinceData[i].districtList;}}for (var i = 0; i < cityData.length; i++) {var city = cityData[i];var marker = new AMap.LabelMarker({name: city.name,position: [city.center.lng, city.center.lat],zIndex: 10,text: {content: city.name,direction: "center",style: {fontSize: 10,fontWeight: "normal",fillColor: "#fff",backgroundColor: "rgb(246,137,38)",borderColor: "#fff",},},});layerCity.add(marker);}map.add(layerCity);});</script>
</html>

参考链接:

  1. 行政区查询:https://developer.amap.com/api/jsapi-v2/guide/services/district-search
  2. 文字图层 :https://developer.amap.com/api/jsapi-v2/documentation#labelslayer
  3. 海量标注:https://developer.amap.com/api/jsapi-v2/documentation#labelmarker
  4. 行政区图层 :https://developer.amap.com/api/jsapi-v2/documentation#districtlayer
  5. 地图:https://developer.amap.com/api/jsapi-v2/documentation#map

高德地图-----国家和省级地图切换相关推荐

  1. vue中基于高德地图,获取省级地图(以安徽为例)

    效果图展示 <template><div><div id="mapId" class="rescure-map"></ ...

  2. echart之全国地图切换省级地图

    这是在基础地图地图的基础上结合echarts2的改进版本,echarts2中的版本只有左上角的全国地图的比较简单的实例代码. <一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实 ...

  3. echarts的中国地图,点击进入省级地图,点击省级地图,返回中国地图

    先上效果图, 鼠标放上去时的效果,如下图所示: 点击进入到的省级地图,如下图所示: 中国地图,鼠标放上去时的代码: myChart.on('mouseover', function (params) ...

  4. echarts从全国地图切换成省级地图地图不居中的问题

    我的项目会有全国.省级两种版本.我在写全国地图的时候地图自己居中自适应.可是数据变成省级数据后,就会缩成一坨. 全国地图如下: 切换成省级数据变成如下: 我就很疑惑,我也没有设置地图的位置啥的,应该就 ...

  5. vue中基于echarts和基于高德地图的两种地图下钻与上浮方式

    ** vue中基于echarts和基于高德地图的两种地图下钻与上浮方式 ** 基于echarts的地图下钻与上浮(浙江省为例) 第一步:在<template>中构建承载echarts的do ...

  6. 使用vue和高德地图,仿58地图找房pc端,且解决marker过多卡顿

    使用vue和高德地图,仿58地图找房pc端,且解决marker过多卡顿 1.在index.html引入高德地图链接 https://webapi.amap.com/maps?v=1.4.15& ...

  7. 基于Cesium使高德地图、百度地图、腾讯地图与天地图无偏移叠加

    基于Cesium使高德地图.百度地图.腾讯地图与天地图无偏移叠加 需求的产生 方法的探索 经验总结 需求的产生 在Cesium框架中,可以支持很多ImageryProvider,但是Viewer只用一 ...

  8. 百度、搜狗、高德、腾讯等地图完美处理偏移

    工具:WOLFMAP 地图下载器 做GIS行业的朋友应该清楚,在我朝的发布的地图必须经过加密后才能使用,也就是俗称的火星坐标,有的地图还在它的基础上进行二次加密.给我们使用造成一定的困扰. 该软件通过 ...

  9. Android百度地图、高德地图、腾讯地图导航路线规划问题

      Android百度地图.高德地图.腾讯地图导航路线规划 在最近的项目中,需求是用户选择某个地址需要进行导航时,弹出百度地图.高德地图和腾讯地图让用户选择.如果该用户手机中已安装对应的地图App,则 ...

最新文章

  1. php gd测试代码,PHP: GD - Manual
  2. linux dmp文件大小,MAX_DUMP_FILE_SIZE参数:限制trace files及alert file大小
  3. windows7 配置iis技巧
  4. 计算机网络的功能分类,计算机网络的功能与分类
  5. Python项目:Django员工管理系统
  6. 西门子s7-200解密软件下载_西门子S7200plc软件仿真软件使用方法
  7. BT文件分享服务器,bt是什么意思服务(bt资源库)
  8. 【前端】三种方法将文字垂直居中
  9. localbridge.exe 参数错误
  10. Axure8日期控件原型
  11. CPU GPU 扫盲帖
  12. face_recognition小实战:显示未知图片中已知人物的脸
  13. 想进Google,先来做做Google招聘题
  14. linux无线usb网卡,Linux下USB无线网卡WL-167G驱动安装过程
  15. MT4客户端通讯分析(一)——登录部分分析
  16. 利用jFreeChart插件生产各种图形的报表
  17. 单片机如何优雅的读取0-10V传感器信号(一)
  18. php调用 打印机,web端调用打印机方案总结(示例代码)
  19. 手机阅读行业SWOT分析
  20. Argo CD使用指南:如何构建一套完整的GitOps?

热门文章

  1. 北斗由“高大上”转为“接地气” 芯片成国内智能手机标配
  2. C语言枚举变量定义,请问C语言枚举类型是什么意思
  3. usercity 小程序_微信小程序API 用户信息
  4. 如何利用工具低成本构建阿里云灾备方案?
  5. 极简风格的演讲型幻灯片设计
  6. 利用python中basemap库绘制地图
  7. 海康威视视频在页面中展示
  8. 小程序调取相机照片添加水印(时间水印)
  9. 资产证券化(ABS)+ 特殊目的信托(SPV)
  10. 10计算机管理员权限获得,Win10永久获取管理员权限的方法