vue-amap 定位和逆解码

1.安装:

npm install vue-amap --save

2.main.js引入:

import VueAMap from 'vue-amap';
Vue.use(VueAMap);
VueAMap.initAMapApiLoader({
  key: 'key',//自己申请的key
  plugin: ['AMap.Scale', 'AMap.OverView', 'AMap.ToolBar', 'AMap.Geocoder','AMap.Geolocation'],
  v: '1.4.4'
});

3.组件中使用:

<template>
	<div class="hello">
		<el-amap vid="amapDemo" :center="center" :zoom="zoom" :plugin="plugin" :events="events" class="amap-demo">
			<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>
		<p>当前经纬度:{{center}}</p>
		<p>当前地址:{{formattedAddress}}</p>
	</div>
 
</template>
 
<script>
	export default {
		data: function() {
			let self = this
			return {
				//当前位置
				formattedAddress:"",
				zoom: 12,
				//当前经纬度
				center: [106.354928, 29.613256],
				markers: [{
					position: [106.354928, 29.613256],
					events: {
						click: () => {
						},
						dragend: (e) => {//拖拽点标记
							// 设置点标记经纬度
							self.markers[0].position = [e.lnglat.lng, e.lnglat.lat];
							// 设置地图中心经纬度
							self.center = [e.lnglat.lng, e.lnglat.lat];
							// 调用逆解码函数
							self.getaddress(self.center)
						}
					},
					visible: true,
					draggable: true,
					template: '<span>1</span>',
				}],
				events: {
					init: (o) => {
						
					},
					'moveend': () => {},
					'zoomchange': () => {},
					'click': (e) => {//点击地图
							// 设置点标记经纬度
							self.markers[0].position = [e.lnglat.lng, e.lnglat.lat];
							// 设置地图中心经纬度
							self.center = [e.lnglat.lng, e.lnglat.lat];
							// 调用逆解码函数
							self.getaddress(self.center)
					}
				},
				plugin: [{
						pName: 'Geolocation',
						events: {
							init(o) {
								// o 是高德地图定位插件实例
								o.getCurrentPosition((status, result) => {
									if (result && result.position) {
										self.lng = result.position.lng;
										self.lat = result.position.lat;
										self.center = [self.lng, self.lat];
                                        self.markers[0].position = self.center;
										self.loaded = true;
										self.$nextTick();
									}
								});
							}
						}
					},
					{
						pName: 'Geocoder',
						events: {
							init(o) {
								//定位第一次逆解码
								o.getAddress(self.center, (status, result) => {
									if (status === 'complete' && result.info === 'OK') {
										
									self.formattedAddress=result.regeocode.formattedAddress
									}
 
								})
							}
						}
					}
				]
			};
		},
 
		methods: {
			//逆解码函数
			getaddress: function(lnglat) {
				let self=this
				AMap.plugin('AMap.Geocoder', function() {
					var geocoder = new AMap.Geocoder({
						// city 指定进行编码查询的城市,支持传入城市名、adcode 和 citycode
						city: '010'
					})
					geocoder.getAddress(lnglat, function(status, result) {
						if (status === 'complete' && result.info === 'OK') {
							self.formattedAddress=result.regeocode.formattedAddress
							// result为对应的地理位置详细信息
						}
					})
				})
			}
		}
	};
</script>
 
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped="scoped">
	.hello {
		height: 300px;
 
	}
</style>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
vue-amap是一个Vue插件,可以在Vue框架中使用高德地图实现地图搜索和地址定位功能。通过引入"vue-amap"插件,可以在Vue项目中使用高德地图的API来实现相关功能。 具体实现步骤如下: 1. 首先,在Vue项目中安装"vue-amap"插件,可以通过运行命令npm install vue-amap来安装。 2. 在需要使用地图的组件中,引入并注册"vue-amap"插件。可以在组件中使用Vue.use()方法来注册插件,并配置高德地图的API密钥和插件所需的其他参数。 3. 在组件模板中,使用"vue-amap"插件提供的组件来显示地图。可以使用<el-amap>标签来展示地图,并设置其相关属性,如中心点、缩放级别等。 4. 实现地图搜索功能,可以使用"vue-amap"插件提供的<el-amap-search>组件。通过监听用户输入的地址,在搜索框中输入地址后,通过调用插件提供的搜索方法,即可在地图上显示搜索结果的位置。 5. 实现点击定位功能,可以通过监听地图的点击事件,在用户点击地图后获取点击的位置坐标,并在地图上展示标记点。同时,可以通过控制标记点的显示和隐藏,实现上一个标记点消失的效果。 总结起来,通过使用vue-amap插件,可以在Vue框架中轻松实现地图搜索和地址定位功能。通过搜索框输入地址进行搜索,并在地图上显示搜索结果的位置,同时可以通过点击地图实现定位,并在地图上展示标记点。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [vue使用vue-amap插件(高德地图插件实现定位、搜索、marker标记点)](https://blog.csdn.net/ccyolo/article/details/115916371)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [vue+高德地图实现地图搜索及点击定位操作](https://download.csdn.net/download/weixin_38624519/12923390)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [“vue-amap“: “^0.5.10“, 高德地图 vue版本 H5地图 实现根据地名搜索坐标,经纬度](https://blog.csdn.net/Li_Ning21/article/details/121986013)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值