From f64742aeed083684ead735a8a7e13c4be4685682 Mon Sep 17 00:00:00 2001
From: quanyawei <401863037@qq.com>
Date: Mon, 29 Apr 2024 09:34:26 +0800
Subject: [PATCH] fix: 热力图修改
---
src/views/toCarryOutLegislativeReforms/components/locationMap.vue | 183 +++++++++++++++++++++++++++++++++++----------
1 files changed, 142 insertions(+), 41 deletions(-)
diff --git a/src/views/toCarryOutLegislativeReforms/components/locationMap.vue b/src/views/toCarryOutLegislativeReforms/components/locationMap.vue
index 847753a..4977b9b 100644
--- a/src/views/toCarryOutLegislativeReforms/components/locationMap.vue
+++ b/src/views/toCarryOutLegislativeReforms/components/locationMap.vue
@@ -7,25 +7,50 @@
width="1000px"
center
:before-close="close"
+ @closed="close"
>
- <div class="searchBox">
- <el-input
- v-model="placeSearch"
- placeholder="���������������"
- class="input-with-select"
- >
- <el-button
- slot="append"
- icon="el-icon-search"
- @click="search"
- />
- </el-input>
- </div>
- <div id="panel" />
<div
v-if="visible"
class="mapBox"
>
+ <div
+ class="searchBox"
+ >
+ <el-input
+ id="tipinput"
+ v-model="placeSearchName"
+ :disabled="$parent.mapType!=='edit'"
+ prefix-icon="el-icon-search"
+ placeholder="���������������"
+ class="input-with-select"
+ style="margin-right: 10px"
+ @keyup.enter.native="searchPlace"
+ />
+ <el-input
+ v-model="positionInput"
+ :disabled="$parent.mapType!=='edit'"
+ prefix-icon="el-icon-position"
+ placeholder="������������������"
+ class="input-with-select"
+ style="margin-right: 10px"
+ @keyup.enter.native="searchAddress"
+ />
+ <el-button
+ v-if="$parent.mapType==='edit'"
+ type="primary"
+ @click="search"
+ >
+ ������
+ </el-button>
+ <el-button
+ v-if="$parent.mapType==='edit'"
+ type="primary"
+ :disabled="placeSearchName===''"
+ @click="close"
+ >
+ ������
+ </el-button>
+ </div>
<div id="mapd" />
</div>
</el-dialog>
@@ -41,7 +66,12 @@
return {
title: '������������',
map: null,
- placeSearch: null
+ geolocation: null,
+ marker: null,
+ placeSearchName: '',
+ mapPlaceSearch: null,
+ position: [],
+ positionInput: ''
}
},
mounted () {
@@ -61,37 +91,104 @@
resizeEnable: true,
zooms: [3, 18],
zoom: 15,
- center: [120.9781494, 31.4265156]
})
this.map = map
-
- const lnglat = new AMap.LngLat('120.9781494', '31.4265156')
- const marker = new AMap.Marker({
- position: lnglat
- })
-
- // ������������������������������������������������������
- marker.setAnimation('AMAP_ANIMATION_BOUNCE')
- marker.setMap(this.map)
- AMap.service(['AMap.PlaceSearch'], function () {
- // ���������������������
- var placeSearch = new AMap.PlaceSearch({
- pageSize: 5, // ������������������������
- pageIndex: 1, // ������
- city: '010', // ���������������
- citylimit: true, // ���������������������������������������������
- map: map, // ���������������������������
- panel: 'panel', // ���������������������������������������������
- autoFitView: true // ������������������������������������������ Marker���������������������������������
+ let that = this
+ AMap.plugin(['AMap.Autocomplete', 'AMap.PlaceSearch'], function () {
+ // ���������Autocomplete
+ let autoOptions = {
+ // city ���������������������������
+ city: '������',
+ input: 'tipinput',
+ }
+ that.mapPlaceSearch = new AMap.PlaceSearch({
+ map: map,
})
- // ���������������
- placeSearch.search('������������')
+ // that.geolocation = new AMap.Geolocation({})
+ let autoComplete = new AMap.Autocomplete(autoOptions)
+ AMap.event.addListener(autoComplete, 'select', function (e) {
+ that.map.clearMap()
+ this.position = []
+ console.log('eee', e.poi.name)
+ console.log('eee', that.placeSearchName)
+ that.placeSearchName = e.poi.name
+ // that.mapPlaceSearch.search(e.poi.name)
+ })
+ AMap.event.addListener(that.mapPlaceSearch, 'markerClick', function (e) {
+ that.position = [e.data.location.lng, e.data.location.lat]
+ that.positionInput = e.data.location.lng + ',' + e.data.location.lat
+ this.placeSearchName = e.data.cityname + e.data.adname + e.data.address
+ console.log(e)
+ console.log(this.placeSearchName)
+ document.getElementById('tipinput').value = e.data.cityname + e.data.adname + e.data.address
+ })
+ })
+ if (this.$parent.mapType === 'edit') {
+ map.on('click', function (ev) {
+ that.map.clearMap()
+ that.position = [ev.lnglat.lng, ev.lnglat.lat]
+ that.positionInput = ev.lnglat.lng + ',' + ev.lnglat.lat
+ that.marker = new AMap.Marker({
+ position: that.position,
+ offset: new AMap.Pixel(-13, -30)
+ })
+ that.marker.setMap(map)
+ that.getAddress(that.position)
+ })
+ } else {
+ this.map.clearMap()
+ that.marker = new AMap.Marker({
+ map: map,
+ position: that.$parent.position
+ })
+ that.positionInput = that.toFixed(that.$parent.position[0], 8) + ',' + that.toFixed(that.$parent.position[1], 8)
+ that.marker.setMap(map)
+ that.map.setCenter(that.$parent.position)
+ that.marker.setAnimation('AMAP_ANIMATION_BOUNCE')
+ this.placeSearchName = this.$parent.address
+ }
+ },
+ toFixed (str, decimalPlaces) {
+ const num = parseFloat(str)
+ return num.toFixed(decimalPlaces)
+ },
+ getAddress (position) {
+ AMap.plugin('AMap.Geocoder', () => {
+ const geocoder = new AMap.Geocoder({})
+ geocoder.getAddress(position, (status, result) => {
+ if (status === 'complete' && result.info === 'OK') {
+ this.placeSearchName = result.regeocode.formattedAddress
+ document.getElementById('tipinput').value = result.regeocode.formattedAddress
+ }
+ })
})
},
search () {
- let this_ = this
+ console.log('search', this.placeSearchName)
+ if (this.positionInput) {
+ this.searchAddress()
+ return
+ }
+ if (this.placeSearchName) {
+ this.searchPlace(this.placeSearchName)
+ }
+ },
+ searchPlace () {
+ this.mapPlaceSearch.search(this.placeSearchName)
+ },
+ searchAddress () {
+ this.map.clearMap()
+ this.marker = new AMap.Marker({
+ map: this.map,
+ position: this.positionInput.split(',')
+ })
+ this.marker.setMap(this.map)
+ this.map.setCenter(this.positionInput.split(','))
+ this.getAddress(this.positionInput.split(','))
},
close () {
+ this.map.destroy()
+ this.$emit('addressAndLnt', this.position, this.placeSearchName)
this.$emit('update:visible', false)
}
}
@@ -101,13 +198,17 @@
<style scoped lang="scss">
/deep/.el-dialog__body {
height: 600px;
- .searchBox {
- margin-bottom: 10px;
- }
.mapBox {
width: 100%;
height: 100%;
padding-bottom: 30px;
+ position: relative;
+ .searchBox{
+ position: absolute;
+ display: flex;
+ z-index: 100;
+ width: 100%;
+ }
}
}
#mapd {
--
Gitblit v1.8.0