vue项目web端根据腾讯地图获取当前定位并通过关键字搜索地址列表

1.先去腾讯地图开放平台申请一个key 腾讯地图开放平台
在这里插入图片描述
在index.html页面引入这个文件,否则需要下载SDK

<script src="https://3gimg.qq.com/lightmap/components/geolocation/geolocation.min.js "></script>

2.在vue初始化时 created函数中调用下面的方法 因为要先拿到当前城市信息比较好用 ,不拿也没关系

created() {
	this.Tmap();
},
/**
* 腾讯地图获取当前定位
* 只调用此方法就行
 */
Tmap() {
	that = this;
	var geolocation = new qq.maps.Geolocation("HFXBZ-NQSWI-ZGQGW-5URX4-WUXCF-VWFUQ", "mapqq");
	// geolocation.getIpLocation(this.showPosition, this.showErr);
	geolocation.getLocation(this.showPosition, this.showErr); //或者用getLocation精确度比较高
},
showPosition(position) {
	console.log(position);
	// this.latitude = position.lat;
	// this.longitude = position.lng;
	this.city = position.city;
},
showErr() {
	console.log("定位失败");
	this.Tmap(); //定位失败再请求定位,测试使用
},

3.然后在输入框输入关键字(标签代码我就不写了 )要先配置跨域 不然会报错

配置跨域

module.exports = {
	dev: {
		// Paths
		assetsSubDirectory: 'static',
		assetsPublicPath: '/',
		proxyTable: {
			'/api': {
				target: 'https://apis.map.qq.com', // 你请求的第三方接口
				changeOrigin: true, // 在本地会创建一个虚拟服务端,然后发送请求的数据,并同时接收请求的数据,这样服务端和服务端进行数据的交互就不会有跨域问题
				pathRewrite: { // 路径重写,
					'^/api': '' // 替换target中的请求地址,也就是说以后你在请求http://api.douban.com/v2/XXXXX这个地址的时候直接写成/api即可。
				}
			},
		},
	}
//触发关键词输入提示事件
/**
 * @param {输入值} e
 */
getsuggest: function(e) {
	that = this;
	if (e.length <= 0) {
		//用于接收地址列表的数组,在data声明
		that.addressList = []
		return;
	}
	//在执行这一步之前要配置跨域,不然会报错
	this.$axios
		.get("/api/ws/place/v1/suggestion", {
			params: {
				keyword: e,//关键字
				region: that.city,//当前城市
				key: "HFXBZ-NQSWI-Z"//你申请的key
			}
		})
		.then(res => {
		//成功返回的信息
			console.log(that.city)
			console.log(res);
			that.addressList = res.data.data;
		})
		.catch(err => {
			console.log(err)
			this.$message.error("请求超时");
		});
},

4.最终效果

在这里插入图片描述

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
可以使用腾讯地图JavaScript API来获取当前位置的经纬度。以下是一个使用Vue.js编写的示例代码: 1. 在`index.html`中引入腾讯地图JavaScript API: ```html <script src="https://map.qq.com/api/js?v=2.exp&key=YOUR_KEY"></script> ``` 其中,`YOUR_KEY`需要替换成你自己的腾讯地图API密钥。 2. 在Vue组件中添加一个地图容器: ```html <template> <div ref="mapContainer" style="width: 100%; height: 400px;"></div> </template> ``` 3. 在Vue组件的`mounted`生命周期钩子中初始化地图,并获取当前位置的经纬度: ```js mounted() { // 初始化地图 this.initMap(); }, methods: { initMap() { // 创建地图实例 const map = new qq.maps.Map(this.$refs.mapContainer, { center: new qq.maps.LatLng(39.916527, 116.397128), // 默认北京市中心 zoom: 13, }); // 获取当前位置的经纬度 const geolocation = new qq.maps.Geolocation(); geolocation.getLocation( (position) => { const latLng = new qq.maps.LatLng( position.lat, position.lng ); // 将地图中心设置为当前位置 map.setCenter(latLng); }, () => { console.error("定位失败"); } ); }, } ``` 在上面的代码中,我们首先创建了一个地图实例,并将地图容器绑定到Vue组件的`$refs`属性中。然后,我们使用腾讯地图的Geolocation类来获取当前位置的经纬度,并将地图中心设置为当前位置。如果定位失败,则会在控制台输出错误信息。 注意:在使用腾讯地图API时,需要先在腾讯云上开通地图API服务,并申请密钥。
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值