nuxt 高德地方 标记位置
时间: 2023-12-18 10:05:48 浏览: 88
高德位置分享
要在 Nuxt 中使用高德地图标记位置,可以按照以下步骤操作:
1. 安装 `vue-amap` 包:
```
npm install vue-amap --save
```
2. 在 `nuxt.config.js` 文件中引入 `vue-amap` 并进行配置:
```js
export default {
modules: [
'vue-amap/nuxt'
],
vue: {
config: {
amap: {
// 高德地图的key
apiKey: 'your amap key',
// 插件列表
plugin: ['AMap.MarkerClusterer']
}
}
}
}
```
3. 在需要使用地图标记的组件中,先创建一个 AMap 的实例,并在实例创建完成后调用 `initAMap` 方法初始化地图:
```html
<template>
<div>
<el-button @click="addMarker">添加标记</el-button>
<div ref="mapContainer" style="height: 400px;"></div>
</div>
</template>
<script>
import { mapState } from 'vuex'
export default {
data() {
return {
map: null,
markers: []
}
},
computed: {
...mapState(['userLocation'])
},
mounted() {
this.map = new AMap.Map(this.$refs.mapContainer, {
// 地图初始化的中心点
center: [this.userLocation.lng, this.userLocation.lat],
zoom: 13
})
this.map.plugin('AMap.Geolocation', () => {
const geolocation = new AMap.Geolocation({
enableHighAccuracy: true,
timeout: 10000,
buttonOffset: new AMap.Pixel(10, 20),
zoomToAccuracy: true
})
this.map.addControl(geolocation)
geolocation.getCurrentPosition()
})
this.map.on('complete', () => {
this.initAMap()
})
},
methods: {
initAMap() {
this.markers = []
// 标记点聚合插件
AMap.plugin(['AMap.MarkerClusterer'], () => {
const markers = this.markers
const markerClusterer = new AMap.MarkerClusterer(this.map, markers, {
gridSize: 80,
maxZoom: 15,
zoomOnClick: true
})
})
},
addMarker() {
const marker = new AMap.Marker({
position: [this.userLocation.lng, this.userLocation.lat],
title: '我的位置'
})
this.markers.push(marker)
this.map.setFitView()
}
}
}
</script>
```
在上述示例中,我们初始化了一个 AMap 的实例,并在实例创建完成后调用了 `initAMap` 方法,方法中初始化了一个标记点聚合插件。在 `addMarker` 方法中,我们创建了一个标记点,并将其添加到 `markers` 数组中,然后调用了 `setFitView` 方法使地图自适应标记点的范围。
阅读全文