vue2.0及以上版本引高德地图,实现点坐标及多地址切换

vue

申明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_43360935/article/details/86622186

我这个项目是基于vue3.0,引用vue-amap开发的。

有兴趣的猿友们可以去官网看API:https://elemefe.github.io/vue-amap/#/
1.安装:
npm install vue-amap --save
2.在main.js里引入:
import VueAMap from ‘vue-amap’;
然后使用(以下代码可以直接复制)

Vue.use(VueAMap);

VueAMap.initAMapApiLoader({

key: ‘去高德地图申请一个key,复制到这里’,

plugin: [‘AMap.Autocomplete’, ‘AMap.PlaceSearch’, ‘AMap.Scale’, ‘AMap.OverView’, ‘AMap.ToolBar’, ‘AMap.MapType’, ‘AMap.PolyEditor’, ‘AMap.CircleEditor’],

// 默认高德 sdk 版本为 1.4.4

v: ‘1.4.4’,

uiVersion: ‘1.0.11’ // 这个是引官方ui组件库的时候要用的 你不引就不要写

});
3.在你要用到的页面组件里写以下代码(DOM结构)

 <el-amap vid="amapDemo" :zoom="zoom" :center="center" class="amap-demo" :style="{width:'690px',height:'490px'}">

<el-amap-marker vid="component-marker" :position="componentMarker.position" :content-render="componentMarker.contentRender" ></el-amap-marker>

<el-amap-marker v-for="(marker, index) in markers" :position="marker.position" :events="marker.events" :visible="marker.visible" :draggable="marker.draggable" :vid="index"></el-amap-marker>

</el-amap>

<div class="message animated fadeInRight">

<ul>

<li class="active" v-on:click="changePosition">

<p>地址1</p>

</li>

<li v-on:click="chnageDraggle">

<p>地址2</p>

</li>

<li v-on:click="addMarker">

<p>地址3</p>

</li>

<li v-on:click="removeMarker">

<p>地址4</p>

</li>

</ul>

</div>

备注: 样式自己可以根据自己的需求设置

4.在js中写入以下代码,(这里有的代码是可以删除的,一些不用的就可以删除,减少代码冗余)

 module.exports = {

name: 'amap-page',

data() {

return {

count: 1,

slotStyle: {

padding: '2px 8px',

background: '#eee',

color: '#333',

border: '1px solid #aaa'

},

zoom: 14,

center: [121.5273285, 31.21515044], //中心点的坐标

markers: [

{

position: [121.5273285, 31.21515044], //定位的坐标

events: {

click: () => {

alert('click marker');

},

dragend: (e) => {

console.log('---event---: dragend')

this.markers[0].position = [e.lnglat.lng, e.lnglat.lat];

}

},

visible: true,

draggable: false,

template: '<span>1</span>',

}

],

renderMarker: {

position: [121.5273285, 31.21715058],

contentRender: (h, instance) => {

return h(

'div', //这些都可以删除不要

{

style: {background: '#80cbc4', whiteSpace: 'nowrap', border: 'solid #ddd 1px', color: '#f00'},

on: {

click: () => {

const position = this.renderMarker.position;

this.renderMarker.position = [position[0] + 0.002, position[1] - 0.002];

}

}

},

['marker inner text']

)

}

},

componentMarker: {

position: [121.5273285, 31.21315058],//这些我也不知道是啥,不用的可以删除

contentRender: (h, instance) => h(exampleComponents,{style: {backgroundColor: '#fff'}, props: {text: 'father is here'}}, ['xxxxxxx'])

},

slotMarker: {

position: [121.5073285, 31.21715058]

}

};

},

methods: {

onClick() {

this.count += 1;

},

changePosition() {

this.markers[0].position = [103.695081, 36.531658];

this.center = [103.695081,36.531658];

},

}

};

//以下是点击切换地图的方法

//如果你只知道地址不知道地址的经纬度的话,可以去https://lbs.amap.com/console/show/picker 这个网址查

methods:{

onClick(){

this.count += 1;

},

changePosition() {

this.markers[0].position = [地址1的坐标];

this.center = [地址1的坐标];

},

chnageDraggle(){

this.markers[0].position = [地址2的坐标];

this.center = [地址2的坐标];

},

addMarker(){

this.markers[0].position = [地址3的坐标];

this.center = [地址3的坐标];

},

removeMarker(){

this.markers[0].position = [地址4的坐标];

this.center = [地址4的坐标];

}

},

5.css样式
样式可以根据自己的需求写,引入的地图一定要给高,不然不出来
6.效果展示如下

点击右边的地址 则会切换到相应的地图。

以上 就是完整的点坐标定位和多地址切换,感谢支持!多多指教。

以上是 vue2.0及以上版本引高德地图,实现点坐标及多地址切换 的全部内容, 来源链接: utcz.com/z/375665.html

回到顶部