From 4f0c3cb2e324164f09f00acd2fb1f99f98c40a8f Mon Sep 17 00:00:00 2001 From: pyt <626651354@qq.com> Date: 星期二, 25 二月 2025 15:17:18 +0800 Subject: [PATCH] 1 --- H5/pages/location/location.vue | 479 ++++++++++++++++++++++++++++------------------------ H5/pages.json | 4 2 files changed, 261 insertions(+), 222 deletions(-) diff --git a/H5/pages.json b/H5/pages.json index 057564b..ef5dcd2 100644 --- a/H5/pages.json +++ b/H5/pages.json @@ -4,7 +4,7 @@ { "path": "pages/index/index", "style": { - "navigationBarTitleText": "uni-app", + "navigationBarTitleText": "首页", "navigationStyle": "custom" } }, @@ -101,7 +101,7 @@ ], "globalStyle": { "navigationBarTextStyle": "black", - "navigationBarTitleText": "uni-app", + "navigationBarTitleText": "三个身边", "navigationBarBackgroundColor": "#F8F8F8", "backgroundColor": "#F8F8F8" }, diff --git a/H5/pages/location/location.vue b/H5/pages/location/location.vue index fcc53a0..94f136e 100644 --- a/H5/pages/location/location.vue +++ b/H5/pages/location/location.vue @@ -1,221 +1,260 @@ -<template> - <view class="content"> - <u-navbar title="选择地点" bgColor="transparent" titleStyle="font-size: 35rpx;font-weight:bold;" placeholder> - <view slot="left" @click="back"> - <image src="/static/location/back.png" class="w-19 h-35" mode=""></image> - </view> - </u-navbar> - <view class="" id="container"> - - </view> - <view class=" main"> - <view class="searchMain mb-35 mt-38"> - <view class="search fs-27 "> - <text class="mr-35 ml-50">成都市</text> - <image class="w-17 h-8 mr-35" src="/static/location/toleft.png" mode=""></image> - <image class="w-31 h-31 mr-13" src="/static/location/search.png" mode=""></image> - <input class="flex1" v-model="keyword" placeholder="搜索小区/写字楼等" - placeholder-style="font-size:27rpx"></input> - <view class="sure" @click="searchLocation"> - 确定 - </view> - </view> - - </view> - <view class="card" @click="changeAdr(item.id,item)" :class="item.id ==uid ?'activecard':''" - v-for="item in locationList" :key="item.id"> - <text>{{item.address}}</text> - <text class="font-w500 fs-23 mt-25" style="color: rgba(0, 0, 0, 0.6);">{{item.address}}</text> - - </view> - </view> - - </view> -</template> - -<script> - export default { - data() { - return { - latitude: 39.909, - longitude: 116.39742, - map: null, - uid: 0, - keyword: '', - locationList: [], - }; - }, - methods: { - - back() { - uni.navigateBack() - }, - - changeAdr(value, addr) { - console.log(value, addr, 'asdasdada'); - this.uid = value - const pages = getCurrentPages() - let prevPage = pages[pages.length - 2]; - prevPage.location = addr.address - prevPage.latitude = addr.point.lat - prevPage.longitude = addr.point.lng - setTimeout(() => { - uni.navigateBack() - }, 200) - }, - // 搜索地点 - searchLocation() { - if (!this.keyword) return; - uni.request({ - url: `https://api.map.baidu.com/place/v2/search`, - method: 'GET', - data: { - query: this.keyword, - location: `${this.latitude},${this.longitude }`, - radius: 10000, // 搜索半径,单位:米 - output: 'json', - ak: '3mHKIXMArjgIkgADzOlTYp4XssNSNkwr' // 替换为你自己的 AK - }, - success: (res) => { - console.log(res, '-------'); - if (res.data.status === 0) { - this.searchResults = res.data.results; - this.latitude = res.data.results[0].location.lat - this.longitude = res.data.results[0].location.lng - this.locationList = res.data.results.map((result, index) => { - - result.id = index + 1 - - return result - }); - } - }, - fail: (err) => { - console.error('搜索失败:', err); - } - }); - }, - }, - onLoad() { - - }, - onReady() { - this.map = new BMapGL.Map("container"); // 创建地图实例 - - uni.getLocation({ - type: 'wgs84', - success: (res) => { - console.log(res, 'res'); - this.longitude = res.longitude; - this.latitude = res.latitude; - var point = new BMapGL.Point(res.longitude, res.latitude); // 创建点坐标 - this.map.enableScrollWheelZoom(true); - this.map.centerAndZoom(point, 12); - var marker = new BMapGL.Marker(point); - this.map.addOverlay(marker); - var myGeo = new BMapGL.Geocoder(); - // 根据坐标得到地址描述 - myGeo.getLocation(new BMapGL.Point(res.longitude, res.latitude), (result) => { - console.log(result, 'result'); - this.locationList = result.surroundingPois.map((item, index) => { - item.id = index + 1 - return item - }) - - }) - this.map.addEventListener('click', (e) => { - var mercator = this.map.lnglatToMercator(e.latlng.lng, e.latlng.lat); - this.latitude = e.latlng.lat - this.longitude = e.latlng.lng - var point = new BMapGL.Point(e.latlng.lng, e.latlng.lat); - this.map.centerAndZoom(point, 12); - var myGeo = new BMapGL.Geocoder(); - // 根据坐标得到地址描述 - myGeo.getLocation(new BMapGL.Point(e.latlng.lng, e.latlng.lat), (result) => { - console.log(result, 'result'); - this.locationList = result.surroundingPois.map((item, index) => { - item.id = index + 1 - return item - }) - - }) - var marker = new BMapGL.Marker(point); - this.map.addOverlay(marker); - }); - } - }); - - } - } -</script> - -<style lang="scss" scoped> - #container { - width: 100vw; - height: 534rpx; - } - - .content { - display: flex; - flex-direction: column; - align-items: center; - - .main { - background-color: #fff; - border-radius: 34rpx; - position: absolute; - top: 517rpx; - z-index: 100; - - .activecard { - background: #F2F2F2; - } - - } - - } - - - .searchMain { - padding-left: 40rpx; - padding-right: 40rpx; - border-radius: 40rpx; - - .search { - width: 669rpx; - height: 77rpx; - background: #FFFFFF; - border-radius: 38rpx; - border: 2rpx solid #DADADA; - display: flex; - - align-items: center; - justify-content: space-between; - } - } - - - .sure { - width: 104rpx; - height: 69rpx; - background: linear-gradient(270deg, #FC8D55 0%, #FF4948 100%); - border-radius: 48rpx; - font-weight: 500; - font-size: 23rpx; - color: #FFFFFF; - display: flex; - align-items: center; - justify-content: center; - } - - .card { - display: flex; - flex-direction: column; - font-weight: 800; - font-size: 31rpx; - color: rgba(0, 0, 0, 0.8); - padding: 34rpx 38rpx 33rpx 38rpx; - background: #fff; - border-bottom: 2rpx solid rgba(0, 10, 26, 0.07); - } +<template> + <view class="content"> + <u-navbar title="选择地点" bgColor="transparent" titleStyle="font-size: 35rpx;font-weight:bold;" placeholder> + <view slot="left" @click="back"> + <image src="/static/location/back.png" class="w-19 h-35" mode=""></image> + </view> + </u-navbar> + <view class="" id="container"> + + </view> + <view class=" main"> + <view class="searchMain mb-35 mt-38"> + <view class="search fs-27 "> + <text class="mr-35 ml-50">{{ city }}</text> + <image class="w-17 h-8 mr-35" src="/static/location/toleft.png" mode=""></image> + <image class="w-31 h-31 mr-13" src="/static/location/search.png" mode=""></image> + <input class="flex1" v-model="keyword" placeholder="搜索小区/写字楼等" + placeholder-style="font-size:27rpx"></input> + <view class="sure" @click="searchLocation"> + 确定 + </view> + </view> + + </view> + <view class="card" @click="changeAdr(item.id,item)" :class="item.id ==uid ?'activecard':''" + v-for="item in locationList" :key="item.id"> + <text>{{item.address}}</text> + <text class="font-w500 fs-23 mt-25" style="color: rgba(0, 0, 0, 0.6);">{{item.address}}</text> + + </view> + </view> + + </view> +</template> + +<script> + export default { + data() { + return { + latitude: 39.909, + longitude: 116.39742, + map: null, + uid: 0, + keyword: '', + locationList: [], + city: '攀枝花市' + }; + }, + methods: { + + back() { + uni.navigateBack() + }, + + changeAdr(value, addr) { + console.log(value, addr, 'asdasdada'); + this.uid = value + const pages = getCurrentPages() + let prevPage = pages[pages.length - 2]; + prevPage.location = addr.address + prevPage.latitude = addr.point.lat + prevPage.longitude = addr.point.lng + setTimeout(() => { + uni.navigateBack() + }, 200) + }, + // 搜索地点 + searchLocation() { + if (!this.keyword) return; + uni.request({ + url: `https://api.map.baidu.com/place/v2/search`, + method: 'GET', + data: { + query: this.keyword, + location: `${this.latitude},${this.longitude }`, + radius: 10000, // 搜索半径,单位:米 + output: 'json', + ak: '3mHKIXMArjgIkgADzOlTYp4XssNSNkwr' // 替换为你自己的 AK + }, + success: (res) => { + console.log(res, '-------'); + if (res.data.status === 0) { + this.searchResults = res.data.results; + this.latitude = res.data.results[0].location.lat + this.longitude = res.data.results[0].location.lng + this.locationList = res.data.results.map((result, index) => { + + result.id = index + 1 + + return result + }); + } + }, + fail: (err) => { + console.error('搜索失败:', err); + } + }); + }, + }, + onLoad() { + + }, + onReady() { + this.map = new BMapGL.Map("container"); // 创建地图实例 + console.log(this.map); + // uni.getLocation({ + // type: 'wgs84', + // success: (res) => { + navigator.geolocation.getCurrentPosition(success, error, options); + + function success(position) { + const latitude = position.coords.latitude; + const longitude = position.coords.longitude; + const accuracy = position.coords.accuracy; // 精度,单位米 + + console.log(`纬度: ${latitude}, 经度: ${longitude}, 精度: ${accuracy}`); + // 在这里可以使用获取到的经纬度信息,例如在地图上显示位置等。 + } + + function error(err) { + console.log(err); + switch (err.code) { + case err.PERMISSION_DENIED: + console.error("用户拒绝了位置请求。"); + break; + case err.POSITION_UNAVAILABLE: + console.error("无法获取位置信息。"); + break; + case err.TIMEOUT: + console.error("位置请求超时。"); + break; + default: + console.error("未知错误。"); + } + } + + const options = { + enableHighAccuracy: true, // 启用高精度定位 + timeout: 5000, // 5 秒超时 + maximumAge: 0 // 不使用缓存 + }; + let res = { + longitude: 101.725544, + latitude: 26.587259 + } + this.longitude = res.longitude; + this.latitude = res.latitude; + var point = new BMapGL.Point(res.longitude, res.latitude); // 创建点坐标 + this.map.enableScrollWheelZoom(true); + this.map.centerAndZoom(point, 12); + var marker = new BMapGL.Marker(point); + this.map.addOverlay(marker); + var myGeo = new BMapGL.Geocoder(); + // 根据坐标得到地址描述 + myGeo.getLocation(new BMapGL.Point(res.longitude, res.latitude), (result) => { + this.locationList = result.surroundingPois.map((item, index) => { + item.id = index + 1 + return item + }) + + }) + this.map.addEventListener('click', (e) => { + var mercator = this.map.lnglatToMercator(e.latlng.lng, e.latlng.lat); + this.latitude = e.latlng.lat + this.longitude = e.latlng.lng + var point = new BMapGL.Point(e.latlng.lng, e.latlng.lat); + this.map.centerAndZoom(point, 12); + var myGeo = new BMapGL.Geocoder(); + // 根据坐标得到地址描述 + myGeo.getLocation(new BMapGL.Point(e.latlng.lng, e.latlng.lat), (result) => { + console.log(result, 'result'); + this.locationList = result.surroundingPois.map((item, index) => { + item.id = index + 1 + return item + }) + + }) + var marker = new BMapGL.Marker(point); + this.map.addOverlay(marker); + }); + // }, + // error:err=>{ + // console.log(err,'err'); + // } + // }); + + } + } +</script> + +<style lang="scss" scoped> + #container { + width: 100vw; + height: 534rpx; + } + + .content { + display: flex; + flex-direction: column; + align-items: center; + + .main { + background-color: #fff; + border-radius: 34rpx; + position: absolute; + top: 517rpx; + z-index: 100; + + .activecard { + background: #F2F2F2; + } + + } + + } + + + .searchMain { + padding-left: 40rpx; + padding-right: 40rpx; + border-radius: 40rpx; + + .search { + width: 669rpx; + height: 77rpx; + background: #FFFFFF; + border-radius: 38rpx; + border: 2rpx solid #DADADA; + display: flex; + + align-items: center; + justify-content: space-between; + } + } + + + .sure { + width: 104rpx; + height: 69rpx; + background: linear-gradient(270deg, #FC8D55 0%, #FF4948 100%); + border-radius: 48rpx; + font-weight: 500; + font-size: 23rpx; + color: #FFFFFF; + display: flex; + align-items: center; + justify-content: center; + } + + .card { + display: flex; + flex-direction: column; + font-weight: 800; + font-size: 31rpx; + color: rgba(0, 0, 0, 0.8); + padding: 34rpx 38rpx 33rpx 38rpx; + background: #fff; + border-bottom: 2rpx solid rgba(0, 10, 26, 0.07); + } </style> \ No newline at end of file -- Gitblit v1.7.1