vue使用高德地图点击下钻上浮效果的实现思路


Posted in Javascript onOctober 12, 2019

这里给使用高德地图下钻提供一个思路

先讲下我的思路,高德地图api有一个地图绘制区域,你只要提供区码,就可以绘制该区域。以浙江省为例,我一开给浙江省的区码就可以绘制出浙江省的区域,接下来我要进入杭州市,当我点击杭州市的时候我先清空地图上的覆盖层并且能获取到‘杭州市'这个字符串,通过对比这个字符串我就可以给出杭州市的区码,最后绘制出杭州市的覆盖层。
接下来看代码:

第一步

绘制地图:

//创建地图
  this.map = new AMap.Map("container", {
   cursor: "default",
   resizeEnable: true,
   expandZoomRange: true,
   gestureHandling: "greedy",
   // zooms: [8, 20],
   zoom: 12,
   defaultCursor: "pointer",
   mapStyle: "amap://styles/f6e3818366ba5268d50ea3f2296eb3eb",
   showLabel: true
  });

第二步(关键)

let that = this;
  AMapUI.loadUI(["geo/DistrictExplorer"], DistrictExplorer => {
   //创建一个实例
   that.districtExplorer = new DistrictExplorer({
   eventSupport: true,
   map: this.map
   });

   //设置绘制的子区域和父区域的自身属性(包括线颜色,透明度等)执行renderAreaNode()就可以开始绘制区域了
   function renderAreaNode(areaNode) {
   //绘制子级区划
   that.districtExplorer.renderSubFeatures(areaNode, function(
    feature,
    i
   ) {
    return {
    cursor: "default",
    bubble: true,
    // strokeColor: "#00a4ce", //线颜色
    strokeColor: "#03d7a1",
    strokeOpacity: 1, //线透明度
    strokeWeight: 1.5, //线宽
    // fillColor: "#09152a", //填充色
    fillColor: "#072942",
    fillOpacity: 0.1 //填充透明度
    };
   });
   //绘制父区域
   that.districtExplorer.renderParentFeature(areaNode, {
    cursor: "default",
    bubble: true,
    // strokeColor: "#00a4ce", //线颜色
    strokeColor: "#03d7a1",
    strokeOpacity: 1, //线透明度
    strokeWeight: 1.5, //线宽
    // fillColor: "#09152a", //填充色
    fillColor: "#072942",
    fillOpacity: 0.6 //填充透明度
   });
   }

   // var adcodes = [];
   // //根据角色来绘制不同的区域
   // that.adcodes = [
   // 330200 //浙江
   // ];
   that.map.clearMap(); //清空所有绘制物
   //绘制多区域
   that.districtExplorer.loadMultiAreaNodes(this.adcodes, function(
   error,
   areaNodes
   ) {
   //设置定位节点,支持鼠标位置识别
   //注意节点的顺序,前面的高优先级
   that.districtExplorer.setAreaNodesForLocating(areaNodes);
   //清除已有的绘制内容
   that.districtExplorer.clearFeaturePolygons();
   for (var i = 0, len = areaNodes.length; i < len; i++) {
    renderAreaNode(areaNodes[i]);
   }
   //更新地图视野
   that.map.setFitView(that.districtExplorer.getAllFeaturePolygons());
   });
   //添加点标记
   that.addMarker(data);
  });

this.adcodes是区码,这里的关键在于清空,利用好 that.map.clearMap(); //清空所有绘制物 再重新进行绘制,再通过 that.map.setFitView(that.districtExplorer.getAllFeaturePolygons()); 就可以达到下钻的效果,上浮也是同理。

区码以浙江省为例

if (data.result.rows[0].cities_name == "杭州市") {
   this.adcodes = [330100];
   } else if (data.result.rows[0].cities_name == "宁波市") {
   this.adcodes = [330200];
   } else if (data.result.rows[0].cities_name == "温州市") {
   this.adcodes = [330300];
   } else if (data.result.rows[0].cities_name == "嘉兴市") {
   this.adcodes = [330400];
   } else if (data.result.rows[0].cities_name == "湖州市") {
   this.adcodes = [330500];
   } else if (data.result.rows[0].cities_name == "绍兴市") {
   this.adcodes = [330600];
   } else if (data.result.rows[0].cities_name == "金华市") {
   this.adcodes = [330700];
   } else if (data.result.rows[0].cities_name == "衢州市") {
   this.adcodes = [330800];
   } else if (data.result.rows[0].cities_name == "舟山市") {
   this.adcodes = [330900];
   } else if (data.result.rows[0].cities_name == "台州市") {
   this.adcodes = [331000];
   } else if (data.result.rows[0].cities_name == "丽水市") {
   this.adcodes = [331100];
   }

总结

以上所述是小编给大家介绍的vue使用高德地图点击下钻上浮效果的实现思路,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
jquery 图片Silhouette Fadeins渐显效果
Feb 07 Javascript
JavaScript获取和设置CheckBox状态的简单方法
Jul 05 Javascript
js的正则test,match,exec详细解析
Jan 29 Javascript
JS实现鼠标单击与双击事件共存
Mar 08 Javascript
js解决select下拉选不中问题
Oct 14 Javascript
jquery+CSS实现的水平布局多级网页菜单效果
Aug 24 Javascript
AngularJS中的指令全面解析(必看)
May 20 Javascript
Bootstrap基本组件学习笔记之面板(14)
Dec 08 Javascript
JavaScript实现获取用户单击body中所有A标签内容的方法
Jun 05 Javascript
浅谈Vue内置component组件的应用场景
Mar 27 Javascript
vue webpack实用技巧总结
Apr 24 Javascript
js实现淘宝浏览商品放大镜功能
Oct 28 Javascript
Vue.js计算机属性computed和methods方法详解
Oct 12 #Javascript
微信小程序 导入图标实现过程详解
Oct 11 #Javascript
在vue中高德地图引入和轨迹的绘制的实现
Oct 11 #Javascript
vue实现点击按钮下载文件功能
Oct 11 #Javascript
浅谈TypeScript 用 Webpack/ts-node 运行的配置记录
Oct 11 #Javascript
详解vue 自定义组件使用v-model 及探究其中原理
Oct 11 #Javascript
JsonProperty 的使用方法详解
Oct 11 #Javascript
You might like
星际争霸中的对战模式介绍
2020/03/04 星际争霸
一个连接两个不同MYSQL数据库的PHP程序
2006/10/09 PHP
解析php中反射的应用
2013/06/18 PHP
Laravel框架中队列和工作(Queues、Jobs)操作实例详解
2020/04/06 PHP
html下载本地
2006/06/19 Javascript
原生JS操作网页给p元素添加onclick事件及表格隔行变色
2013/12/01 Javascript
ext前台接收action传过来的json数据示例
2014/06/17 Javascript
点击A元素触发B元素的事件在IE8下会识别成A元素
2014/09/04 Javascript
JavaScript String(字符串)对象的简单实例(推荐)
2016/08/31 Javascript
原生JS+HTML5实现跟随鼠标一起流动的粒子动画效果
2018/05/03 Javascript
JS实现键值对遍历json数组功能示例
2018/05/30 Javascript
vue上传图片到oss的方法示例(图片带有删除功能)
2018/09/27 Javascript
jQuery实现根据身份证号获取生日、年龄、性别等信息的方法
2019/01/09 jQuery
详解JavaScript中关于this指向的4种情况
2019/04/18 Javascript
跟老齐学Python之??碌某?? target=
2014/09/12 Python
详细介绍Ruby中的正则表达式
2015/04/10 Python
用Python写一个无界面的2048小游戏
2016/05/24 Python
python获取外网IP并发邮件的实现方法
2017/10/01 Python
对dataframe进行列相加,行相加的实例
2018/06/08 Python
如何用python写一个简单的词法分析器
2018/12/18 Python
django框架使用orm实现批量更新数据的方法
2019/06/21 Python
记一次django内存异常排查及解决方法
2020/08/07 Python
Python pymysql模块安装并操作过程解析
2020/10/13 Python
一篇文章带你搞定Ubuntu中打开Pycharm总是卡顿崩溃
2020/11/02 Python
Python3.9.1中使用split()的处理方法(推荐)
2021/02/07 Python
canvas绘制表情包的示例代码
2018/07/09 HTML / CSS
台湾前三大B2C购物网站:MOMO购物网
2017/04/27 全球购物
国际贸易专业个人求职信范文分享
2013/12/14 职场文书
企业业务员岗位职责
2014/03/14 职场文书
2014年3.15团委活动总结
2014/03/16 职场文书
2014年企业团支部工作总结
2014/12/10 职场文书
财务经理岗位职责
2015/01/31 职场文书
《猴王出世》教学反思
2016/02/23 职场文书
SSM VUE Axios详解
2021/10/05 Vue.js
linux下安装redis图文详细步骤
2021/12/04 Redis
flex弹性布局详解
2022/03/20 HTML / CSS