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 相关文章推荐
前淘宝前端开发工程师阿当的PPT中有JS技术理念问题
Jan 15 Javascript
js jquery数组介绍
Jul 15 Javascript
基于jquery的时间段实现代码
Aug 02 Javascript
ExtJS[Desktop]实现图标换行示例代码
Nov 17 Javascript
分享两个手机访问pc网站自动跳转手机端网站代码
Dec 24 Javascript
jQuery form插件之ajaxForm()和ajaxSubmit()的可选参数项对象
Jan 23 Javascript
Angularjs中如何使用filterFilter函数过滤
Feb 06 Javascript
jQuery实现控制文字内容溢出用省略号(…)表示的方法
Feb 26 Javascript
Javascript的表单与验证-非空验证
Mar 18 Javascript
gulp教程_从入门到项目中快速上手使用方法
Sep 14 Javascript
JavaScript 保护变量不被随意修改的实现代码
Sep 27 Javascript
vue-router路由懒加载及实现的3种方式
Feb 28 Vue.js
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批量删除数据
2007/01/18 PHP
PHP线程的内存回收问题
2016/07/08 PHP
IE7提供XMLHttpRequest对象为兼容
2007/03/08 Javascript
让GoogleCode的SVN下的HTML文件在FireFox下正常显示.
2009/05/25 Javascript
网页防止tab键的使用快速解决方法
2013/11/07 Javascript
js类型转换与引用类型详解(Boolean_Number_String)
2014/03/07 Javascript
jQuery中事件对象e的事件冒泡用法示例介绍
2014/04/25 Javascript
小米公司JavaScript面试题
2014/12/29 Javascript
JQuery+CSS实现图片上放置按钮的方法
2015/05/29 Javascript
基于jQuery实现简单的折叠菜单效果
2015/11/23 Javascript
分享15个大家都熟知的jquery小技巧
2015/12/02 Javascript
js实现的彩色方块飞舞奇幻效果
2016/01/27 Javascript
js弹出框、对话框、提示框、弹窗实现方法总结(推荐)
2016/05/31 Javascript
第一次接触神奇的Bootstrap菜单和导航
2016/08/01 Javascript
jQuery实现复选框的全选和反选
2017/02/02 Javascript
详解使用fetch发送post请求时的参数处理
2017/04/05 Javascript
解决使用bootstrap的dropdown部件时报错:error:Bootstrap dropdown require Popper.js问题
2018/08/30 Javascript
vue中的面包屑导航组件实例代码
2019/07/01 Javascript
javascript设计模式 ? 访问者模式原理与用法实例分析
2020/04/26 Javascript
[05:31]DOTA2上海特级锦标赛主赛事第三日RECAP
2016/03/05 DOTA
通过Python来使用七牛云存储的方法详解
2015/08/07 Python
python 3.5下xadmin的使用及修复源码bug
2017/05/10 Python
Python Django框架单元测试之文件上传测试示例
2019/05/17 Python
pygame实现俄罗斯方块游戏(基础篇3)
2019/10/29 Python
使用python实现男神女神颜值打分系统(推荐)
2019/10/31 Python
PyTorch使用cpu加载模型运算方式
2020/01/13 Python
Django如何重置migration的几种情景
2021/02/24 Python
几道数据库的概念性面试题
2014/05/30 面试题
学生实习推荐信范文
2013/11/26 职场文书
小学生春游活动方案
2014/08/20 职场文书
2014年感恩节活动策划方案
2014/10/06 职场文书
人事任命通知书
2015/04/21 职场文书
主婚人致辞精选
2015/07/28 职场文书
提档介绍信范文
2015/10/22 职场文书
GPU服务器的多用户配置方法
2022/07/07 Servers
Windows11 Insider Preview Build 25206今日发布 更新内容汇总
2022/09/23 数码科技