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 相关文章推荐
深入聊聊Array的sort方法的使用技巧.详细点评protype.js中的sortBy方法
Apr 12 Javascript
用Javascript来生成ftp脚本的小例子
Jul 03 Javascript
jquery 单引号和双引号的区别及使用注意
Jul 31 Javascript
JavaScript Ajax Json实现上下级下拉框联动效果实例代码
Nov 23 Javascript
通过url查找a元素并点击
Apr 09 Javascript
JavaScript中数据结构与算法(二):队列
Jun 19 Javascript
干货分享:让你分分钟学会javascript闭包
Dec 25 Javascript
Jquery获取第一个子元素简单实例
Jun 02 Javascript
mvvm双向绑定机制的原理和实现代码(推荐)
Jun 07 Javascript
jQuery 限制输入字符串长度
Jun 20 Javascript
H5手机端多文件上传预览插件
Apr 21 Javascript
聊聊JS动画库 Velocity.js的使用
Mar 13 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
十天学会php之第一天
2006/10/09 PHP
PHP 柱状图实现代码
2009/12/04 PHP
PHP中集成PayPal标准支付的实现方法分享
2012/02/06 PHP
PHP数据类型之整数类型、浮点数的介绍
2013/04/28 PHP
php对包含html标签的字符串进行截取的函数分享
2014/06/19 PHP
JavaScript 事件属性绑定带参数的函数
2009/03/13 Javascript
JavaScript 图片预览效果 推荐
2009/12/22 Javascript
Javascript 面向对象(三)接口代码
2012/05/23 Javascript
一个支付页面DEMO附截图
2014/07/22 Javascript
JS、CSS以及img对DOMContentLoaded事件的影响
2014/08/12 Javascript
js给selected添加options的方法
2015/05/06 Javascript
JS实现的自定义网页拖动类
2015/11/06 Javascript
jquery+json实现数据二级联动的方法
2015/11/28 Javascript
超漂亮的Bootstrap 富文本编辑器summernote
2016/04/05 Javascript
jQuery绑定事件on()与弹窗的简要概述
2016/04/27 Javascript
基于js 本地存储(详解)
2017/08/16 Javascript
linux 后台运行node服务指令方法
2018/05/23 Javascript
Webpack中雪碧图插件使用详解
2018/05/25 Javascript
微信小程序纯文本实现@功能
2020/04/08 Javascript
Python实现网站文件的全备份和差异备份
2014/11/30 Python
Python判断列表是否已排序的各种方法及其性能分析
2016/06/20 Python
Python入门_浅谈字符串的分片与索引、字符串的方法
2017/05/16 Python
用Django写天气预报查询网站
2018/10/21 Python
Python使用turtle库绘制小猪佩奇(实例代码)
2020/01/16 Python
如何在windows下安装Pycham2020软件(方法步骤详解)
2020/05/03 Python
Python过滤序列元素的方法
2020/07/31 Python
python如何实时获取tcpdump输出
2020/09/16 Python
怎样自定义一个异常类
2016/09/27 面试题
制冷与电控专业应届生求职信
2013/11/11 职场文书
晨会主持词
2014/03/17 职场文书
小城镇建设汇报材料
2014/08/16 职场文书
大一新生检讨书
2014/10/29 职场文书
医生学习党的群众路线教育实践活动心得体会
2014/11/03 职场文书
入党申请书格式
2019/06/20 职场文书
简单了解 MySQL 中相关的锁
2021/05/25 MySQL
Win11 21h2可以升级22h2吗?看看你的电脑符不符合要求
2022/07/07 数码科技