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的实现简单的表格中增加或删除下一行
Aug 01 Javascript
javascript四舍五入函数代码分享(保留后几位)
Dec 10 Javascript
jquery遍历checkbox的注意事项说明
Feb 21 Javascript
使用Meteor配合Node.js编写实时聊天应用的范例
Jun 23 Javascript
JS实现浏览器状态栏文字从右向左弹出效果代码
Oct 27 Javascript
BootStrap扔进Django里的方法详解
May 13 Javascript
javascript ES6 新增了let命令使用介绍
Jul 07 Javascript
原生JS实现瀑布流插件
Feb 06 Javascript
Vue父子组建的简单通信之控制开关Switch的实现
Jun 04 Javascript
element vue validate验证名称重复 输入框与后台重复验证 特殊字符 字符长度 及注意事项小结【实例代码】
Nov 20 Javascript
angularjs模态框的使用代码实例
Dec 20 Javascript
使用JavaScript通过前端发送电子邮件
May 22 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操作xml代码
2010/06/17 PHP
php检测iis环境是否支持htaccess的方法
2014/02/18 PHP
php中spl_autoload详解
2014/10/17 PHP
PHP访问Google Search API的方法
2015/03/05 PHP
深入分析PHP优化及注意事项
2016/07/04 PHP
swoole_process实现进程池的方法示例
2018/10/29 PHP
javascript实现动态增加删除表格行(兼容IE/FF)
2007/04/02 Javascript
Javascript 网页黑白效果实现代码(兼容IE/FF等)
2010/04/23 Javascript
高亮显示web页表格行的javascript代码
2010/11/19 Javascript
使用js获取地址栏中传递的值
2013/07/02 Javascript
关于jquery中全局函数each使用介绍
2013/12/10 Javascript
Jquery ajax加载等待执行结束再继续执行下面代码操作
2015/11/24 Javascript
JavaScript的==运算详解
2016/07/20 Javascript
JS中正则表达式只有3种匹配模式(没有单行模式)详解
2016/07/28 Javascript
详解Javascript函数声明与递归调用
2016/10/22 Javascript
移动开发之自适应手机屏幕宽度
2016/11/23 Javascript
微信小程序中顶部导航栏的实现代码
2017/03/30 Javascript
JQuery EasyUI的一些常用组件
2017/07/12 jQuery
分享5个小技巧让你写出更好的 JavaScript 条件语句
2018/10/20 Javascript
原生JS实现手动轮播图效果实例代码
2018/11/22 Javascript
vue实现前台列表数据过滤搜索、分页效果
2019/05/28 Javascript
JavaScript console的使用方法实例分析
2020/04/28 Javascript
Nuxt默认模板、默认布局和自定义错误页面的实现
2020/05/11 Javascript
跟老齐学Python之有容乃大的list(1)
2014/09/14 Python
在Python下进行UDP网络编程的教程
2015/04/29 Python
利用Python读取文件的四种不同方法比对
2017/05/18 Python
python中列表和元组的区别
2017/12/18 Python
python定时按日期备份MySQL数据并压缩
2019/04/19 Python
tensorflow实现在函数中用tf.Print输出中间值
2020/01/21 Python
eDreams意大利:南欧领先的在线旅行社
2018/11/23 全球购物
马德里竞技官方网上商店:Atletico Madrid Shop
2019/03/31 全球购物
社区健康教育工作方案
2014/06/03 职场文书
运动会班级口号
2014/06/09 职场文书
物流专业求职信
2014/06/30 职场文书
幼儿园家长安全责任书
2014/07/22 职场文书
python开发飞机大战游戏
2021/07/15 Python