amap vueamap 与_在vue中使用高德地图vue-amap

1.安装

vue-amap我安装指定版本0.5.10的版本

npm i --save vue-amap@0.5.10

2.main.js中的配置

// 高德离线地图

import VueAMap from 'vue-amap';

Vue.use(VueAMap);

VueAMap.initAMapApiLoader({

// 高德key

key: 'd6eabbd08f89ccfb74278b36ab6342567', // 自己到官网申请,我随便写的

// 插件集合 (插件按需引入)

plugin: ['AMap.Autocomplete', 'AMap.PlaceSearch', 'AMap.Scale', 'AMap.OverView', 'AMap.ToolBar', 'AMap.MapType', 'AMap.PolyEditor', 'AMap.CircleEditor', 'AMap.MarkerClusterer'],

v: '1.4.15', // 我也不知道为什么要写这个,不写项目会报错,而且我随便写的,跟我下载的版本对应不了

uiVersion: '1.0.11' // ui版本号,也是需要写

})

3.需求

在地图初始化的时候显示每个省内项目的个数以及省份的名字,画一条到莫斯科的路径。信息如下图。

通过监听鼠标的滚动放大缩小事件,放大后显示具体的信息如下图:

4.项目中的应用

注意:如果同一个页面要使用多个高德地图vid不能相同

:amap-manager="amapManager"

:mapStyle="mapStyle"

:zoom="zoom"

:events="events"

:resizeEnable="resizeEnable"

>

js部分

import {AMapManager, lazyAMapApiLoaderInstance} from 'vue-amap'

let amapManager = new AMapManager() // 新建生成地图画布

export default {

data () {

let self = this

return {

// ------------高德地图参数开始-----------------

resizeEnable: true, //是否监控地图容器尺寸变化

zoom: 4, // 设置初始化级别

mapStyle: 'amap://styles/33ac9bd25289b5229362e1f52b481f49', // 使用的自定义地图样式,可以根据需求显示/隐藏内容,改变主题颜色等,具体的使用下面会写

amapManager,

events: {

init (o) {

lazyAMapApiLoaderInstance.load().then(() => {

self.initPage() // 初始化数据self指向this

self.changeMap() // 绑定鼠标缩放事件

self.setLine() // 画一条北京到莫斯科的路线

})

},

},

// ------------高德地图参数结束----------------

}

},

methods: {

// -----------------道德地图开始----------

// 道德地图启动页面

// 初始化省份和数量的数据

initPage() {

let markers = []

let _this = this

// curProData数据的格式[{city:'成都市',province: '四川省',...},{city:'XX市',province: '湖南省',...},{city:'XX市',province: '四川省',...}]

// let curProData: [{

// province: "四川省",

// city: "成都市",

// county: "金牛区",

// labelOffset: [0, -12],

// lat: 30.705218, // 经度

// lng: 104.058201, // 纬度,

// state: 1

// },{...}]

let provinceData = _this.curProData // 当前项目数据

let obj = this.getWordCntMap(provinceData) // obj的格式,通过getWordCntMap方法得到{'四川省': 2,'湖南省': 3,....}

let map = _this.amapManager.getMap()

map.clearMap() // 清除所有的覆盖物信息

// 绘画省份的点和数量

AMapUI.loadUI(['overlay/SimpleMarker'], function (SimpleMarker) {

for (let key in obj) {

markers.push(

new SimpleMarker({

zIndex: 50,

iconLabel: '

' + key + '' + obj[key] + '
',

//直接设置html(需要以""结尾)

iconStyle: '',

//设置基点偏移

offset: new AMap.Pixel(-10, -60), // 偏移

map: map,

showPositionPoint: true, // 定位点

position: _this.geoProvince[key] // geoProvince里面是省份的经纬度:例如geoProvince: {'四川省': [104.10194, 30.65984],...}

})

)

}

})

},

// 绘制路径

setLine() {

let map = this.amapManager.getMap()

AMapUI.loadUI(['misc/PathSimplifier'], function(PathSimplifier) {

if (!PathSimplifier.supportCanvas) {

alert('当前环境不支持 Canvas!');

return;

}

var pathSimplifierIns = new PathSimplifier({

zIndex: 100,

autoSetFitView: false,

map: map, // 所属的地图实例

getPath: function(pathData, pathIndex) {

return pathData.path;

},

getHoverTitle: function(pathData, pathIndex, pointIndex) {

if (pointIndex >= 0) {

//point

return pathData.name + ',点:' + pointIndex + '/' + pathData.path.length;

}

return pathData.name + ',点数量' + pathData.path.length;

},

renderOptions: {

renderAllPointsIfNumberBelow: -1 // 绘制路线节点,如不需要可设置为-1

}

});

// 设定数据源数组,并触发重新绘制。data为空时将清除显示内容。

pathSimplifierIns.setData([{

name: '北京-莫斯科 线路',

path: [

[116.405289, 39.904987],

[37.35, 55.45]

]

}]);

// pathSimplifierIns.render()

//对第一条线路(即索引 0)创建一个巡航器

var navg1 = pathSimplifierIns.createPathNavigator(0, {

loop: true, // 循环播放

speed: 1050000 // 巡航速度,单位千米/小时

});

navg1.start();

});

},

// 初始化放大后项目的数据

initPro() {

let markers = []

let _this = this

// curProData数据的格式[{city:'成都市',province: '四川省',...},{city:'XX市',province: '湖南省',...},{city:'XX市',province: '四川省',...}]

// let curProData: [{

// province: "四川省",

// city: "成都市",

// county: "金牛区",

// labelOffset: [0, -12],

// lat: 30.705218, // 经度

// lng: 104.058201, // 纬度,

// state: 1

// },{...}]

let provinceData = _this.curProData // 省份数据

let map = _this.amapManager.getMap()

map.clearMap()

AMapUI.loadUI(['overlay/SimpleMarker'], function (SimpleMarker) {

let color = ['#00F04F', '#01DAFF', '#0098E9', '#F3A100', '#F7666A', '#FCE800']

// 已接入,波纹圆圈蓝色/黄色 0.1.2.3

// 未接入 4.5

provinceData.forEach(element => {

if (element.lng && element.lat) {

markers.push(

new SimpleMarker({

// 定位点的样式

showPositionPoint: {

color: element['state'] == 5 || element['state'] == 4 ? color[element['state']] : 'rgba(255,255,255,0)',

radius: element['state'] == 5 || element['state'] == 4 ? 5 : 0

},

// 自定义定位点,波纹感的圆点

iconLabel: `${(element['state'] !== 4 && element['state'] !== 5) ? '

//直接设置html(需要以""结尾)

map: map,

position: [element.lng, element.lat], // 经纬度

// 定位点的label标签

label: {

offset: element['labelOffset'] ? new AMap.Pixel(+element['labelOffset'][0], +element['labelOffset'][1]) : '', // 修改label相对于marker的位置

// offset: new AMap.Pixel(0,0), // 修改label相对于marker的位置

content: '

' + element.name + '
'

},

})

)

}

});

})

},

// 绑定高德地图放大缩小map事件

changeMap() {

let map = this.amapManager.getMap()

map.on('zoomchange',() => {

var zoom = map.getZoom(); //获取当前地图级别

if (zoom >= 6) {

this.initPro()

} else {

this.initPage()

}

});

},

// 根据省份计算重复的个数

getWordCntMap (arr) {

let arrData = arr

let obj = {}

for (let i = 0; i < arrData.length; i++) {

if (arrData[i].lat) {

var item = arrData[i].province // province为计算的属性,可换成你想计算的重复个数的属性名字

obj[item] = (obj[item] + 1) || 1

}

}

return obj

},

// -----------------道德地图结束----------

},

created () {

this.addprojects() // 请求项目数据详情

},

watch: {

// 我的页面上有下拉选项.根据选择的选项重新渲染map数据

// 举个列子数据格式如下

// let levelData = [{

// level10: [{

// province: "四川省",

// city: "成都市",

// county: "金牛区",

// labelOffset: [0, -12],

// lat: 30.705218, // 经度

// lng: 104.058201, // 纬度,

// state: 1

// },{...}],

// level12: [{

// province: "四川省",

// city: "泸州市",

// county: "CC区",

// labelOffset: [0, -12],

// lat: 30.705218, // 经度

// lng: 104.058201, // 纬度,

// state: 1

// },{...}],

// level15: [{

// province: "河南省",

// city: "保定市",

// county: "XX区",

// labelOffset: [0, -12],

// lat: 30.705218, // 经度

// lng: 104.058201, // 纬度,

// state: 1

// },{...}],

// other15: [{

// province: "湖南省",

// city: "长沙市",

// county: "XX区",

// labelOffset: [0, -12],

// lat: 30.705218, // 经度

// lng: 104.058201, // 纬度,

// state: 1

// },{...}]

// }]

// 监听等级数据改变

levelSize(cul) {

switch(+cul) {

case 0:

this.curProData = this.levelData.level10;

break

case 1:

this.curProData = this.levelData.level12;

break

case 2:

this.curProData = this.levelData.level15;

break

case 3:

this.curProData = this.levelData.other15;

break

case 4:

this.curProData = this.projects;

break

default:

this.curProData = this.projects

}

this.initPage()

const map = this.amapManager.getMap();

map.setZoom(4) // 重置地图的级别

},

},

}

样式:主要是波纹的定位点

/* 初始化定位标签样式 */

.amap-marker-label{

vertical-align: middle;

color: #555;

background-color: #fffeef;

font-size: 12px;

white-space: nowrap;

border: 1px solid #8e8e8e;

width: auto;

border-radius: 5px 5px 5px 0;

}

.mapIcon{

vertical-align: middle;

color: #555;

background-color: #fffeef;

font-size: 12px;

white-space: nowrap;

position: relative;

border: 1px solid #8e8e8e;

width: auto;

border-radius: 5px 5px 5px 0;

height: 23px;

line-height: 23px;

top: 25px;

left: -6px;

}

.mapIcon_title{

padding: 5px;

border-radius: 5px 0 0 0;

}

.mapIcon_num{

padding: 0 5px;

display: inline-block;

height: 100%;

color: #fff;

background-color: #dc3912;

border-radius: 0 5px 5px 0;

}

.mapIcon:before,

.mapIcon:after{

content: '';

display: block;

position: absolute;

width: 0;

height: 0;

border: solid rgba(0,0,0,0);

border-width: 6px;

left: 9px;

}

.mapIcon:before{

bottom: -13px;

border-top-color: #8e8e8e;

}

.mapIcon:after{

bottom: -12px;

border-top-color: #fffeef;

}

.amap-simple-marker-label{

display: inline-flex;

}

/* 波纹圆圈 */

.example {

position: absolute;

top: 25px;

left: 2px;

}

.dot{

display: inline-block;

}

/* 颜色 */

/* let color = ['#00F04F', '#01DAFF', '#0098E9', '#F3A100', '#F7666A', '#FCE800'] */

.colorStyle0:before,

.colorStyle0:after{

background-color: #00F04F;

}

.colorStyle1:before,

.colorStyle1:after{

background-color: #01DAFF;

}

.colorStyle2:before,

.colorStyle2:after{

background-color: #0098E9;

}

.colorStyle3:before,

.colorStyle3:after{

background-color: #F3A100;

}

.colorStyle4:before,

.colorStyle4:after{

background-color: #F7666A;

}

.colorStyle5:before,

.colorStyle5:after{

background-color: #FCE800;

}

.colorStyle0:after{

box-shadow: 0 0 10px rgba(0,240,79,.3) inset;

}

.colorStyle1:after{

box-shadow: 0 0 10px rgba(1,218,255,.3) inset;

}

.colorStyle2:after{

box-shadow: 0 0 10px rgba(0,152,233,.3)inset;

}

.colorStyle3:after{

box-shadow: 0 0 10px rgba(243,161,0,.3) inset;

}

.colorStyle4:after{

box-shadow: 0 0 10px rgba(247,102,106,.3) inset;

}

.colorStyle5:after{

box-shadow: 0 0 10px rgba(252,232,0,.3) inset;

}

.dot:before{

content:' ';

position: absolute;

z-index:2;

left:0;

top:0;

width:12px;

height:12px;

/* background-color: #ff4200; */

border-radius: 50%;

}

.dot:after {

content:' ';

position: absolute;

z-index:1;

width:12px;

height:12px;

/* background-color: #ff4200; */

border-radius: 50%;

/* box-shadow: 0 0 10px rgba(0,0,0,.3) inset; */

-webkit-animation-name:'ripple';/*动画属性名,也就是我们前面keyframes定义的动画名*/

-webkit-animation-duration: 1.5s;/*动画持续时间*/

-webkit-animation-timing-function: ease; /*动画频率,和transition-timing-function是一样的*/

-webkit-animation-delay: 0s;/*动画延迟时间*/

-webkit-animation-iteration-count: infinite;/*定义循环资料,infinite为无限次*/

-webkit-animation-direction: normal;/*定义动画方式*/

}

@keyframes ripple {

0% {

left:6px;

top:6px;

opcity:85;

width:0;

height:0;

}

100% {

left:-14px;

top:-14px;

opacity: 0;

width:40px;

height:40px;

}

}

附:

使用自定义地图:

1.申请key,上面附了申请方法的链接

2. 创建模板,选择一个模板后点创建就可以了,然后再根据自己的需求选择需要显示的东西。

保存和发布,保存发布了才能使用

点击复制,把样式id复制到项目的mapStyle即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/288225.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WebRTC 音频模块单独编译 --【转载】

原文地址&#xff1a;http://billhoo.blog.51cto.com/2337751/1213801 【2015年2月15日】 Bill 这段时间没有再关注 WebRTC 以及音频处理的相关信息&#xff0c;且我个人早已不再推荐单独编译 WebRTC 中的各个模块出来使用。实际上本文的参考价值已经很小了&#xff0c;甚至可能…

【ArcGIS风暴】ArcGIS 10.2字段计算器(Field Calculator)批量条件赋值用法总结

前面的文章介绍了栅格计算器的常见公式大全可以参照文章《【ArcGIS风暴】ArcGIS 10.2栅格计算器实用公式大全(经典珍藏版)》。可以看出,栅格计算器的熟练运用的确能解决很多栅格运算的问题。 现在有这么一类典型问题,就是如果需要按不同的条件进行赋值,该怎么做呢?我们是…

(九)python3 只需3小时带你轻松入门——函数自定义

函数 函数是组织好的&#xff0c;可重复使用的&#xff0c;用来实现单一&#xff0c;或相关联功能的代码段。 无返回值无参函数自定义 你可以定义一个由自己想要功能的函数&#xff1a; 函数代码块以 def 关键词开头&#xff0c;后接函数标识符名称和圆括号 ()函数内容以冒号…

linux之通过grep使用or、and、not操作

1 问题 linux之如何再搜索结果上过滤关键字1或者关键字2 2 解决办法 grep -P *** 这个的P是正则表达式的意思&#xff0c; 比如我们需要在当前目录下过滤文件 1.txt和2.txt,命令如下 ll -rw-r--r-- 1 root root 0 Jul 11 23:01 1.txt -rw-r--r-- 1 root root 0 Jul 11 23:01…

.NET性能优化-你应该为集合类型设置初始大小

前言计划开一个新的系列&#xff0c;来讲一讲在工作中经常用到的性能优化手段、思路和如何发现性能瓶颈&#xff0c;后续有时间的话应该会整理一系列的博文出来。今天要谈的一个性能优化的Tips是一个老生常谈的点&#xff0c;但是也是很多人没有注意的一个点。在使用集合类型是…

CV 两幅图像配准

http://www.cnblogs.com/Lemon-Li/p/3504717.html 图像配准算法一般可分为: 一、基于图像灰度统计特性配准算法&#xff1b;二、基于图像特征配准算法&#xff1b;三、基于图像理解的配准算法。 其中&#xff0c;算法类型二最普遍&#xff0c;基于特征的图像配准算法的核心步骤…

android单元测试

1、创建一个类继承AndroidTestCase 2、在AndroidManifest.xml中配置 转载于:https://www.cnblogs.com/kingxiaozi/p/4669689.html

通过高速计算机网络和多媒体,计算机网络作业及答案.doc

计算机网络作业及答案第一次作业[判断题]在TCP/IP协议中&#xff0c;TCP提供可靠的面向连接服务&#xff0c;UDP提供简单的无连接服务&#xff0c;而电子邮件、文件传送、域名系统等应用层服务是分别建立在TCP、UDP之上的。??参考答案&#xff1a;正确[判断题]如果一台计算机…

(十一)python3 只需3小时带你轻松入门——面向对象

类 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。 例如&#xff1a; 人是一种类型&#xff0c;拥有年龄、身高、体重、性别等属性。具体一个人是一个对象&#xff0c;例如小明&#xff1b;小明有年龄、身高、体重…

ArcGIS,Envi软件中的卷帘工具使用及对比

顾名思义,就像卷帘门一样,当存在多个图层时,卷帘门的一侧显示的是一个图层的信息,而卷帘门的另一侧显示的是另一个图层的信息,感觉似乎有一点像透视眼,此外,还有一种难以描摹的美感。卷帘工具在GIS软件中的作用是不言而喻的,为我们的学习工作带来了很大的方便,为我们完…

ubuntu下amd超频工具_Ubuntu16.04 版预装AMD GPU驱动【最新版】_Linux_Ubuntu-云市场-阿里云...

{"moduleinfo":{"advanList_count":[{"count_phone":4,"count":4}],"title":"云市场服务保障体系","mapList_count":[{"count_phone":4,"count":4}]},"advanList":[{&qu…

javascript:with的用法以及延长作用域链

转自&#xff1a;http://lllt.iteye.com/blog/1246424 《Javascript高级程序设计&#xff08;第二版&#xff09;》第66页中提到&#xff1a;“由于with语句的变量对象是只读的&#xff0c;结果url就成了函数执行环境的一部分&#xff0c;因而可以作为函数的值被返回。”&#…

linux之pmap命令查看进程的地址空间和占用的内存

1 问题 我们怎么知道进程占用的内存多大 2 我们可以使用pmap命令 pmap命令用于显示一个或多个进程的内存状态,报告进程的地址空间和内存状态信息。 一般使用 pmap pid 一般参数选项如下 -x extended显示扩展格式 -d device显示设备格式 -q quiet不显示header/footer行 …

HealthKit有名无实,疑点重重

苹果在今年的全球开发者大会上发布了全新的iOS系统&#xff0c;其中的HealthKit以及Health app是显著的亮点之一。苹果希望通过HealthKit整合个人健康相关的数据&#xff0c;然而距离该系统的正式发布还有几个月的时间&#xff0c;这个数据平台到底要如何运作目前还有很多疑问。…

【OAuth2】:赋予用户控制权的安全通行证--原理篇

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于OAuth2的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.什么是OAuth? 二.为什么要用OAuth?…

坚持建设国家自主信息体系,龙芯中科胡伟武“419”论坛畅谈LoongArch生态建设蓝图...

4月19日&#xff0c;第五届关键信息基础设施自主安全创新论坛在北京召开&#xff0c;这也是龙芯中科正式发布自主指令系统LoongArch一周年之际。在本次论坛上&#xff0c;龙芯中科董事长胡伟武发表了《龙架构&#xff08;LoongArch&#xff09;生态建设》的演讲&#xff0c;围绕…

一键安装lamp脚本--初级版

#!/bin/bash#write by zhang_pc#at 2015.07.21#apache2.2.27 mysql5.1 php5.4#安装说明&#xff0c;由于网速原因&#xff0c;就不下载了&#xff0c;执行脚本前要把源码上传到脚本相同的目录下echo -e "\033[32m this is a lamp 一键安装script\033[0m"echo -e &quo…

(十)python3 只需3小时带你轻松入门——模块与包

模块 一般情况下&#xff0c;是一个以.py为后缀的文件。使用import导入。我们创建一个py文件&#xff0c;名为myprint&#xff0c;该py文件作为模块&#xff0c;在里面定义一个函数名为myprint&#xff1a; def myprint():print(这是我的print模块)保存后&#xff0c;在同目录…

【ArcGIS风暴】ArcGIS 10.6创建规则格网(渔网fishnet)图文经典详解

GIS中常常需要地图分幅与编号,或者需要按照规则格网(三角网、矩形网等)去批量裁剪或提取矢量和栅格数据,相关内容可以参看下面的文章。本文主要详细讲解ArcGIS10.6软件中创建渔网的方法,为地图分幅或规则裁剪做好数据准备。 ArcGIS批量裁剪提取或分幅方法总结参考文章: 《…

计算机转财经专业考试考什么,高三对口升学第三次模拟考试财经基础课计算机专业课...

商丘市三高2012-2013学年度第二学期第五次模考《计算机专业专业课》试卷一、选择题(每小题2分&#xff0c;共100分。)1、在Access中&#xff0c;建立的数据库文件的扩展名为()。(A)dbt (B)dbf (C)mdf (D)mdb2、如果“通讯录”表和“籍贯”表通过各自的“籍贯代码”字段建立了一…