mirror of
https://gitee.com/java110/MicroCommunityWeb.git
synced 2026-02-27 00:20:01 +08:00
152 lines
3.0 KiB
Vue
152 lines
3.0 KiB
Vue
<template>
|
|
<div class="select-map-pos-container">
|
|
<div id="selectMap" style="width: 100%; height: 100%;"></div>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import { getCommunityId } from '@/api/community/communityApi'
|
|
|
|
export default {
|
|
name: 'SelectMapPos',
|
|
props: {
|
|
elementId: {
|
|
type: String,
|
|
default: 'selectMap'
|
|
},
|
|
initData: {
|
|
type: Object,
|
|
default: () => ({})
|
|
}
|
|
},
|
|
|
|
data() {
|
|
return {
|
|
map: null,
|
|
marker: null,
|
|
communityId: '',
|
|
mapData: {
|
|
lat: 0,
|
|
lng: 0
|
|
}
|
|
}
|
|
},
|
|
mounted() {
|
|
this.communityId = getCommunityId()
|
|
|
|
},
|
|
methods: {
|
|
initMap(_data) {
|
|
// 清除现有地图
|
|
let _lng = 116.397128;
|
|
let _lat = 39.916527;
|
|
|
|
if (_data.lng) {
|
|
_lng = _data.lng;
|
|
}
|
|
|
|
if (_data.lat) {
|
|
_lat = _data.lat;
|
|
}
|
|
try {
|
|
if (this.map) {
|
|
this.map.destroy();
|
|
}
|
|
} catch (e) {
|
|
console.log(e)
|
|
}
|
|
|
|
|
|
let addMap = new window.TMap.Map('selectMap', {
|
|
center: new window.TMap.LatLng(_lat, _lng),
|
|
zoom: 13
|
|
});
|
|
// $that.addMapInfo.addMap = addMap;
|
|
let marker;
|
|
//添加监听事件 获取鼠标点击事件
|
|
let _this = this
|
|
addMap.on('click', function (event) {
|
|
console.log(event)
|
|
if (!marker) {
|
|
marker = new window.TMap.MultiMarker({
|
|
styleId: "marker",
|
|
position: event.latLng,
|
|
map: addMap,
|
|
id: "1",
|
|
});
|
|
}
|
|
console.log(event)
|
|
//marker.setPosition(event.latLng);
|
|
_this.$emit('position-change', {
|
|
lat: event.latLng.lat,
|
|
lng: event.latLng.lng
|
|
})
|
|
|
|
marker.updateGeometries([
|
|
{
|
|
"styleId": "marker",
|
|
"id": "1",
|
|
"position": event.latLng,
|
|
}
|
|
])
|
|
});
|
|
//为地图注册click事件获取鼠标点击出的经纬度坐标
|
|
|
|
this.map = addMap;
|
|
},
|
|
|
|
|
|
addMarker(position) {
|
|
// 清除现有标记
|
|
if (this.marker) {
|
|
this.marker.setMap(null)
|
|
}
|
|
|
|
// 创建新标记
|
|
let TMap = window.TMap
|
|
|
|
this.marker = new TMap.MultiMarker({
|
|
map: this.map,
|
|
styles: {
|
|
"marker": new TMap.MarkerStyle({
|
|
width: 25,
|
|
height: 35,
|
|
src: '/img/maper.png',
|
|
anchor: { x: 32, y: 32 }
|
|
})
|
|
},
|
|
geometries: [{
|
|
id: '1',
|
|
styleId: 'marker',
|
|
position: position
|
|
}]
|
|
})
|
|
|
|
// 移动地图中心到标记位置
|
|
this.map.setCenter(position)
|
|
this.map.setZoom(16)
|
|
},
|
|
|
|
updatePosition(lat, lng) {
|
|
if (!this.map) return
|
|
|
|
const position = new window.TMap.LatLng(lat, lng)
|
|
this.addMarker(position)
|
|
}
|
|
},
|
|
beforeDestroy() {
|
|
// 组件销毁时清除地图实例
|
|
if (this.map) {
|
|
this.map.destroy()
|
|
this.map = null
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style scoped>
|
|
.select-map-pos-container {
|
|
width: 100%;
|
|
height: 100%;
|
|
}
|
|
</style> |