uniapp仿美团小程序左上角的位置定位

uniapp仿美团小程序左上角的位置定位


前言

uniapp坑比较多,我想你看了之后能减少点坑


提示:以下是本篇文章正文内容,下面案例可供参考

一、概括

本文章主要是介绍仿照美团外卖左上角的定位,进而做的一个微信小程序的定位,方法仅供参考

二、使用步骤

1.引入库

我们在使用中啊,我们需要定位到具体的位置信息,那么我们就要用到腾讯位置服务腾讯位置服务(https://lbs.qq.com/miniProgram/jsSdk/jsSdkGuide/jsSdkOverview)
在这里我们需要设置两个东西,一个是申请密钥,另一个是引入下载微信小程序JavaScriptSDK,请自行打开页面引入,

代码如下(示例):

2.读入数据

1. 设置一个组件,把微信小程序JavaScriptSDK引入到里面
import qqmapsdk from "@/utils/qqmap-wx-jssdk.js"

位置自己修改。
2.设置自己的代码,请求道自己的位置信息,设置引入位置信息,引入位置定位,获取位置相应坐标位

获取位置信息,经纬度
getlos() {
				const that = this
		
				uni.getLocation({
					type: 'wgs84',
					// geocode: true,
					success: function(res) {
						console.log(res.longitude)
						that.latitude = res.latitude;
						that.longitude = res.longitude;
						that.getflo()
					}

				})
			},
			getflo() {
				const that = this
				console.log(that.longitude)
				const QQMapWX = new qqmapsdk({
					key: 'IOJBZ-VOT3Q-2G55W-G5FJ2-7UIKH-6JBGU'
				});
				// 解析地址

				QQMapWX.reverseGeocoder({
					options: {
						latitude: that.latitude,
						longitude: that.longitude
					},
					coord_type: 1,
					get_poi: 1,
					poi_options: "policy=2;radius=1000;page_size=20;page_index=1",
					success: (res) => {
						//定位成功
						that.poisList = res.result.pois
						that.list = res.result.address_reference.landmark_l2.title

						console.log(res)
					},
					fail: function(res) {
						// console.log(res)
						uni.showToast({
							title: '定位失败',
							duration: 2000,
							icon: "none",
						})
					},
				})


			},

注意:1.我们在获取位置时候会出现定位失败图,这时候我们是因为没有加权限信息加上即可
定位失败图
位置与方法都在

2.这里强调一点我在当时引入经纬度时候,赋值到data中,但data结果总是空的,所以我打印一下,发现传值赋值之后有个刷新特效,所以我把getflo()的函数调用放在了获取之后调用,这样解决了好多bug,有好方法可以替换
3.设置搜索框,让其有个搜索定位功能
html

<view>
		<!-- 搜索框 -->
		<view class='search'>
			<view class='search_box'>
				<!-- <image src='../../../images/search.png' class='search_image'></image> -->
				<input type='text' class='search_input' placeholder='搜索地点' placeholder-class='input_placeholder' @input="bindInputSchools"
				 v-model="bindInputSchool"></input>
			</view>
		</view>
		<view class="devs">
			<view class="flt">{{list}}</view>
			<view class="fls" @click='getlos'>重新定位</view>
		</view>
		<view class='btn1' bindtap='BackTap2'>
			附近地址推荐
		</view>
		<view class='btn2' v-for="item in poisList">
			<view @click="mapse(item.title)">{{item.title}}</view>
			<!-- <view class='hint'>{{item.address}}</view> -->
		</view>
	</view>

js

bindInputSchools(e) {
				const QQMapWX = new qqmapsdk({
					key: 'IOJBZ-VOT3Q-2G55W-G5FJ2-7UIKH-6JBGU'
				});
				console.log(e)
				var timer = false;
				var val = e.detail.value;
				let vm = this
				clearTimeout(timer);
				timer = setTimeout(function() {
					if (val.length > 0) {
						QQMapWX.search({
							keyword: val, //搜索关键词
							location: {
								latitude: vm.latitude,
								longitude: vm.longitude,
							},

							success: function(res) {
								console.log(res, '搜索位置');
								vm.poisList = res.data
							},
						});
					} else {
						vm.poisList = []
						vm.getLocal(vm.latitude, vm.longitude)
					}

				}, 500);
			},

效果图
在这里插入图片描述


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Liuzhipeng-hot

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值