最近在做一个Vue集成高德地图的项目,中间遇到了很多问题,所以记录一下
Vue+ElementUi中国省市区/省市,三级/两级联动选择
Vue集成高德地图之前,首先要实现Element UI对各个省市的选择
安装城市数据
1 | npm install element-china-area-data -S |
省市不带“全部”的二级联动
导入二级数据
1
import { provinceAndCityData } from 'element-china-area-data'
HTML部分
1
2
3
4
5
6
7
8
9
10<template>
<div id="app">
<el-cascader
size="large"
:options="options"
v-model="selectedOptions"
@change="handleChange">
</el-cascader>
</div>
</template>Js部分
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22export default {
data () {
return {
options: provinceAndCityData,
selectedOptions: []
}
},
methods: {
handleChange () {
var loc = "";
for (let i = 0; i < this.selectedOptions.length; i++) {
loc += CodeToText[this.selectedOptions[i]];
}
console.log(loc)//打印区域码所对应的属性值即中文地址
}
}
//也可以这样写
handleChange (value) {
console.log(value)
}
}
省市带“全部”的二级联动
导入二级数据
1
import { provinceAndCityDataPlus } from 'element-china-area-data'
HTML部分
1
2
3
4
5
6
7
8
9
10<template>
<div id="app">
<el-cascader
size="large"
:options="options"
v-model="selectedOptions"
@change="handleChange">
</el-cascader>
</div>
</template>Js部分
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22export default {
data () {
return {
options: provinceAndCityDataPlus ,
selectedOptions: []
}
},
methods: {
handleChange () {
var loc = "";
for (let i = 0; i < this.selectedOptions.length; i++) {
loc += CodeToText[this.selectedOptions[i]];
}
console.log(loc)//打印区域码所对应的属性值即中文地址
}
}
//也可以这样写
handleChange (value) {
console.log(value)
}
}
省市不带全部的三级联动
导入二级数据
1
import { regionData } from 'element-china-area-data'
HTML部分
1
2
3
4
5
6
7
8
9
10<template>
<div id="app">
<el-cascader
size="large"
:options="options"
v-model="selectedOptions"
@change="handleChange">
</el-cascader>
</div>
</template>Js部分
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22export default {
data () {
return {
options: regionData,
selectedOptions: []
}
},
methods: {
handleChange () {
var loc = "";
for (let i = 0; i < this.selectedOptions.length; i++) {
loc += CodeToText[this.selectedOptions[i]];
}
console.log(loc)//打印区域码所对应的属性值即中文地址
}
}
//也可以这样写
handleChange (value) {
console.log(value)
}
}示例
省市带全部的三级联动
导入二级数据
1
import { regionDataPlus } from 'element-china-area-data'
HTML部分
1
2
3
4
5
6
7
8
9
10<template>
<div id="app">
<el-cascader
size="large"
:options="options"
v-model="selectedOptions"
@change="handleChange">
</el-cascader>
</div>
</template>Js部分
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22export default {
data () {
return {
options: regionDataPlus ,
selectedOptions: []
}
},
methods: {
handleChange () {
var loc = "";
for (let i = 0; i < this.selectedOptions.length; i++) {
loc += CodeToText[this.selectedOptions[i]];
}
console.log(loc)//打印区域码所对应的属性值即中文地址
}
}
//也可以这样写
handleChange (value) {
console.log(value)
}
}
Vue集成高德地图
首先创建一个高德地图的应用
高德地图的官网网址上有很详细的介绍,自行观看。https://lbs.amap.com/api/jsapi-v2/guide/webcli/map-vue1
建议先将官网上的代码跑出来在看下面的。
获取高德地图的api
1 | npm i @amap/amap-jsapi-loader --save |
实现路线规划
官方api:https://lbs.amap.com/api/javascript-api/guide/services/navigation
1 | <template> |
实现存在途径点的路径规划
详细请参考高德地图的api解释https://lbs.amap.com/api/javascript-api/reference/route-search/ 重点在search
的参数问题上
两种方法:
使用 经纬度 / 名称 设置路径点
1 | <template> |
实现效果: