小程序地图检索

在这里插入图片描述

<template><view style="background-color: #f5f5f5"><!-- 头部开始 --><viewstyle="position: fixed;left: -5rpx;right: -5rpx;z-index: 99;top: -5rpx;width: 101vw;"><view style="position: relative"><view :style="{ height: rpxNavStatusBarHeight + 5 + 'rpx' }"><textstyle="position: absolute;bottom: 0;line-height: 40px;width: 100%;z-index: 50;color: rgb(59, 59, 59);"class="text_c font-size-14">地图选点</text><view @click="goBack()" class="back_icon"><i v-if="pagesLength > 1" class="iconfont">&#xe621;</i><i v-else class="iconfont">&#xe8c6;</i></view></view></view></view><!-- 头部结束 --><!-- 确定按钮 --><view @click.stop.prevent="submit" class="btn-sub" type="success">确定位置</view><!-- 底部内容部分 --><view:style="{'padding-top': rpxNavStatusBarHeight + 'rpx',}"><viewstyle="width: 100%; position: relative":style="{ height: 'calc( 100vh - ' + rpxNavStatusBarHeight + 'rpx)' }"><viewstyle="width: 100%; height: calc(100% - 300px); position: relative"><mapid="tmap":scale="scale"style="width: 100%; height: 100%":latitude="latitude":longitude="longitude":covers="covers"show-location@regionchange="regionDidChange"></map><imagesrc="/static/images/datouzhen.png"style="width: 100rpx;height: 100rpx;position: absolute;left: 50%;top: 50%;z-index: 1;margin-top: -100rpx;margin-left: -50rpx;"/></view><view class="bot"><view class="inp1"><imagesrc="http://image.qiniu.fangdadi.com/wxapp/aYuYue/sousuo.png"/><inputtype="text"placeholder="搜索地点":value="searchKey"@input="search"style="flex: 1"/><image@click.stop.prevent="clearVal"v-show="searchKey"src="http://image.qiniu.fangdadi.com/wxapp/aYuYue/shanchu.png"/></view><view style="margin-top: 20rpx"><viewv-for="(item, index) in list":key="item.id"@click.stop.prevent="changPoint(item, index)"class="list-item":style="{ background: index == indexPoint ? '#f7f7f7' : 'white' }"><view class="list-tit">{{ item.title }}</view><view style="color: gray" class="list-add">{{item.address}}</view></view></view></view></view></view><!-- 底部内容结束 --></view>
</template>
<script>
import { suggestion, geocoderPoi, getDistance } from "../../api/booking";
// 引入SDK核心类
var QQMapWX = require("static/qqmap-wx-jssdk.js");
var self;
// 实例化API核心类
var qqmapsdk = new QQMapWX({key: "123", // 必填
});
export default {name: "Rent",data() {return {pagesLength: 0,searchKey: "",// 地图rpxNavStatusBarHeight: "", // maplatitude: 0, //纬度longitude: 0, //经度scale: 16, //缩放级别list: [],newhouselng: 0,newhouseId: 0,newhouselat: 0,indexPoint: 0,areaCode: 0,isSearch: false,lng: 0,lat: 0,};},created() {this.key = getApp().globalData.TXMap;},onLoad(option) {self = this;self.mapCtx = wx.createMapContext("tmap");self.getAuthorizeInfo();qqmapsdk.key = getApp().globalData.TXMap;this.winWidth = wx.getSystemInfoSync().windowWidth;this.divWidth = this.winWidth * 0.96 * 0.48;let systemInfo = wx.getSystemInfoSync();// 计算屏幕总高度let clientWidth = systemInfo.windowWidth;var changeHeight = 750 / clientWidth;//状态栏高度let statusBarHeight = Number(systemInfo.statusBarHeight);let menu = wx.getMenuButtonBoundingClientRect();//状态栏加导航栏高度let navStatusBarHeight =statusBarHeight + (menu.height + (menu.top - statusBarHeight) * 2);this.rpxNavStatusBarHeight = navStatusBarHeight * changeHeight;if (option) {this.newhouseId = option.newhouseId;this.newhouselng = option.newhouselng;this.newhouselat = option.newhouselat;this.areaCode = option.areaCode;}},onShow() {const pages = getCurrentPages();this.pagesLength = pages.length;},methods: {// 获取地理位置getLocationInfo() {let that = this;uni.getLocation({type: "gcj02",success(res) {that.latitude = res.latitude;that.longitude = res.longitude;that.lng = res.longitude;that.lat = res.latitude;let data = { lat: res.latitude, lng: res.longitude };geocoderPoi({ data }).then((res2) => {that.list = [];that.list = [...res2.data];});},});},//点击标记列表,移动中心坐标changPoint(item, index) {this.indexPoint = index;this.latitude = item.location.lat;this.longitude = item.location.lng;this.lat = item.location.lat;this.lng = item.location.lng;self.mapCtx.moveToLocation({longitude: item.location.lng,latitude: item.location.lat,success: (res) => {const time = setInterval(() => {this.scale = 16;clearInterval(time);}, 300);},});},//地图画面发生改变的时候触发regionDidChange(e) {this.getCenterLocation(e);},getCenterLocation: function (e) {let that = this;// 判断是最后一次触发并且是拖拽触发if (e.type == "end" && e.causedBy == "drag") {let data = {lat: e.detail.centerLocation.latitude,lng: e.detail.centerLocation.longitude,};that.lat = e.detail.centerLocation.latitude;that.lng = e.detail.centerLocation.longitude;geocoderPoi({ data }).then((res2) => {that.indexPoint = 0;that.list = [];that.list = [...res2.data];that.num = 1;});}},// 搜索框search: function (e) {if (this.isSearch) {return;}let that = this;self.searchKey = e.detail.value;let data = {keyword: e.detail.value,areaCode: this.areaCode.split(",")[0],};this.isSearch = true;suggestion({ data }).then((res2) => {that.indexPoint = 0;that.list = [];that.list = [...res2.data.data];that.latitude = that.list[0].location.lat;that.longitude = that.list[0].location.lng;that.lat = that.list[0].location.lat;that.lng = that.list[0].location.lng;this.isSearch = false;});},clearVal: function (item) {this.searchKey = "";this.list = [];},// 位置授权getAuthorizeInfo() {uni.authorize({scope: "scope.userLocation",success() {// 允许授权self.getLocationInfo();},fail() {// 拒绝授权self.openConfirm();console.log("你拒绝了授权,无法获得周边信息");},});},// 再次获取授权// 当用户第一次拒绝后再次请求授权openConfirm() {uni.showModal({title: "请求授权当前位置",content: "需要获取您的地理位置,请确认授权",success: (res) => {if (res.confirm) {uni.openSetting(); // 打开地图权限设置} else if (res.cancel) {uni.showToast({title: "你拒绝了授权,无法获得周边信息",icon: "none",duration: 1000,});}},});},
// 提交判断是否在距离范围内async submit() {let data = {lng: this.lng,lat: this.lat,newhouseLng: this.newhouselng,newhouseLat: this.newhouselat,};let res = await getDistance({ data });if (res) {if (res.msg == "yes") {let userinfo = this.list[this.indexPoint];var pages = getCurrentPages();var prevPage = pages[pages.length - 2];// #ifdef H5prevPage.$vm.userinfo = userinfo;// #endif// #ifdef MP-WEIXINprevPage.setData({userinfo,});// #endifuni.navigateBack();} else {uni.showToast({title: res.data,icon: "none",duration: 2000,});}}},// 取消删除Cancel: function () {},goBack() {if (this.pagesLength > 1) {uni.navigateBack({delta: 1,});} else {uni.switchTab({url: "/pages/home/home",});}},},
};
</script>
<style lang="scss" scoped>
.bot {width: 100%;height: 300px;background: white;z-index: 10000;position: absolute;padding: 20rpx;bottom: 0;left: 0;border-radius: 40rpx 40rpx 0 0;box-sizing: border-box;overflow-x: hidden;overflow-y: scroll;-webkit-overflow-scrolling: touch;.inp1 {padding: 0 20rpx;width: 100%;line-height: 80rpx;display: flex;height: 80rpx;border-radius: 10rpx;align-items: center;box-sizing: border-box;background: #f5f5f5;image {width: 40rpx;height: 40rpx;margin-right: 20rpx;}}
}
.list-item {width: 100%;border-bottom: 1px solid #e9e9e9;padding: 6rpx 10rpx;box-sizing: border-box;.list-tit {width: 100%;//单行超出隐藏overflow: hidden; //超出一行文字自动隐藏text-overflow: ellipsis; //文字隐藏后添加省略号white-space: nowrap; //强制不换行}.list-add {color: gray;overflow: hidden;font-size: 24rpx;margin: 10rpx 0 0 0; //单行超出隐藏overflow: hidden; //超出一行文字自动隐藏text-overflow: ellipsis; //文字隐藏后添加省略号white-space: nowrap; //强制不换行}
}
.btn-sub {position: absolute;right: 20px;top: 100px;z-index: 1;background: #67e376;color: white;width: 160rpx;height: 60rpx;line-height: 60rpx;font-size: 30rpx;text-align: center;border-radius: 5px;
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/285007.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

三大主流前端框架介绍

在前端项目中&#xff0c;可以借助某些框架&#xff08;如React、Vue、Angular等&#xff09;来实现组件化开发&#xff0c;使代码更容易复用。此时&#xff0c;一个网页不再是由一个个独立的HTML、CSS和JavaScript文件组成&#xff0c;而是按照组件的思想将网页划分成一个个组…

Go集成elasticsearch8极简demo,光速入门

Go集成elasticsearch8极简demo,光速入门 配置go环境创件go mod工程代码实现配置go环境 编辑器添加goproxy GO111MODULE=on;GOPROXY=https://mirrors.wps.cn/go/,https://goproxy.cn,direct;GOSUMDB=off创件go mod工程 mkdir demo cd demo go mod init demo代码实现 在demo…

人工智能与底层架构:构建智能引擎的技术支柱

导言 人工智能与底层架构的交融塑造了智能系统的基石&#xff0c;是推动智能时代发展的关键动力&#xff0c;本文将深入研究人工智能在底层架构中的关键作用&#xff0c;以及它对智能引擎的技术支持&#xff0c;探讨人工智能在计算机底层架构中的作用&#xff0c;以及这一融合如…

MongoDB的数据库引用

本文主要介绍MongoDB的数据库引用。 目录 MongoDB的数据库引用 MongoDB的数据库引用 MongoDB是一种面向文档的NoSQL数据库&#xff0c;它使用BSON&#xff08;Binary JSON&#xff09;格式存储和查询数据。在MongoDB中&#xff0c;数据库引用是一种特殊的数据类型&#xff0c;…

cefsharp120.1.8(cef120.1.8,Chromium120.0.6099.109)版本升级测试,其他版本H264版本

此版本最新版cef120.1.8,Chromium120.0.6099.109 此更新包括一个高优先级安全更新 This update includes a high priority security update. 说明&#xff1a;本版本暂时不支持264&#xff0c;其他H264版本参考119,116&#xff0c;114&#xff0c;110&#xff0c;109等版本 c…

【贪心算法】之跳跃游戏

问题&#xff1a; 给定一个非负整数数组 [nums] &#xff0c;开始时位于数组的初始位置 &#xff0c;数组中每个下标对应的元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达数组的最后位置。**思路&#xff1a;**贪心算法 看不懂的可以去下面这个链接看 具体思路 …

【Proteus仿真】【Arduino单片机】电子称重秤

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器&#xff0c;使LCD1602液晶&#xff0c;矩阵按键、蜂鸣器、HX711称重模块等。 主要功能&#xff1a; 系统运行后&#xff0c;LCD1602显示HX711称重模块检测重量…

02.微服务组件 Eureka注册中心

1.Eureka注册中心 服务提供者与消费者&#xff1a; 服务提供者:一次业务中&#xff0c;被其它微服务调用的服务。(提供接口给其它微服务)服务消费者:一次业务中&#xff0c;调用其它微服务的服务。&#xff08;调用其它微服务提供的接口)一个服务是消费者还是提供者&#xff…

清空缓存区的方法

fflush(文件指针) fflush()用于刷新相应文件的缓存区。 使用getchar()函数来清空标准输入缓存区 上面的fflush是一个函数,有些编译器不一定支持,这时候我们可以自己实现清空标准输入缓存区的操作。 代码示例: 使用scanf()的高级特性来清空标准输入缓存区 上面代码的意思是: …

分布式链路追踪 —— 基于Dubbo的traceId追踪传递

文章目录 原文链接RpcContext 上下文对象Dubbo 过滤器&#xff08;Filter&#xff09;对象基于Dubbo的traceId追踪传递实现 原文链接 RpcContext 上下文对象 在实现 Dubbo 调用之间的链路跟踪之前&#xff0c;先简单了解 RpcContext 上下文对象和 Filter 过滤器对象&#xff…

Acrel-1000DP分布式光伏系统在某重工企业18MW分布式光伏中应用——安科瑞 顾烊宇

摘 要&#xff1a;分布式光伏发电特指在用户场地附近建设&#xff0c;运行方式以用户侧自发自用、余电上网&#xff0c;且在配电系统平衡调节为特征的光伏发电设施&#xff0c;是一种新型的、具有广阔发展前景的发电和能源综合利用方式&#xff0c;它倡导就近发电&#xff0c;就…

06_Web框架之Django三

Web框架之Django三 学习目标和内容 1、能够通过ORM模型创建数据表 2、能够通过ORM模型对数据进行操作 3、能够理解ORM模型对应关系 一、ORM概念 1、ORM介绍 对象关系映射 用于实现面向对象编程语言里不同类型系统数据之间的转换。 其就是使用面向对象的方式&#xff0c;操作…