微信小程序使用高德地图实现检索定位附近周边的POI功能示例

这篇具有很好参考价值的文章主要介绍了微信小程序使用高德地图实现检索定位附近周边的POI功能示例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、效果图

     微信小程序高德地图api搜索定位,微信小程序,小程序微信小程序高德地图api搜索定位,微信小程序,小程序

2、 实现过程

 1、登录高德地图开发者平台 高德开放平台 | 高德地图API,申请接口Key

 

2、在高德开发平台下载微信小程序SDK,https://lbs.amap.com/api/wx/download

 解压下载的文件得到 amap-wx.js ,在创建的项目中,新建一个名为 libs 目录,将 amap-wx.js 文件拷贝到 libs 的本地目录下。

3、微信小程序后台添加安全域名(这个必须设置,不然无法使用定位功能)

登录微信公众平台,在 "设置" → "开发设置" 中设置 request 合法域名,将 https://restapi.amap.com 中添加进去,如下图所示:

微信小程序高德地图api搜索定位,微信小程序,小程序

 

  4、具体代码

<template>
	<view class="content">
		<!-- 	<view class="btns">
			<view @click="back">取 消</view>
			<view @click="getCurrentLocation">获取当前地址</view>
		</view> -->
		<view class="inputCon">
			<view class="searchView">
				<text class="iconfont icon-sousuo"  @click="searchFn"></text>
				<input type="text" placeholder="搜索地点" v-model="searchWords" confirm-type="search" @confirm="searchFn" />
				<text @click="cancel">取消</text>
			</view>
		</view>
		<!-- 地图部分 -->
		<view class="content-map">
			<map style="width: 100%;height: 100%;" v-if="mapFlafg" :latitude="latitude" :longitude="longitude" :markers="markers"
				@tap="tap"  :scale="16"  :title="title"/>
		</view>
		<!-- <view id="container"></view> -->
		<!--  搜索框 -->

		<!--  地点列表部分 -->
		<view class="list">
			<view class="item" v-for="(add,index) in dataTips" :key="add.id" @click="select(add,index)"
				:class="selectIndex==index?'active':''">
				<view class="name">{{add.name}}</view>
				<view class="address">{{add.district || ''}}{{add.address || ''}}</view>
			</view>
		</view>
	</view>
</template>

<script>
	// 引入高德地图api提供的微信小程序的接口
	import amapFile from '@/packageB/pages/map/amap-wx.130.js';
	// 创建地图
	var myAmapFun = new amapFile.AMapWX({
		key: ''
	}); //key值要申请为 去高德地图申请微信小程序的key
	// var myAmapFun = new amapFile.AMapWX({key: ''}); //key我的
	export default {
		data() {
			return {
				mapFlafg:false,
				selectIndex: undefined,
				selectAddr: {},
				searchWords: "",
				id: 1, // 使用 marker点击事件 需要填写id
				title: 'map',
				latitude: 39.91667, // 纬度
				longitude: 116.41667, // 经度

				markers: [{
					latitude: 39.91667, // 纬度
					longitude: 116.41667, // 经度
					width: 30,
					height: 30,
					iconPath: ''
					// iconPath: '../../static/ditu.png'
				}],
				dataTips: []
			}
		},
		onLoad() {
			var self = this;
			uni.getLocation({
				type: 'gcj02',
				success: function(res) {
					console.log(res, '当前地址定位');
					if (res.errMsg == "getLocation:ok") {
						console.log(self.mark, 'onload里面看看');
						self.longitude = res.longitude;
						self.latitude = res.latitude;
						self.$set(self.markers[0],"longitude",res.longitude);
						self.$set(self.markers[0],"latitude",res.latitude);
						self.mapFlafg=true;
						console.log(self.markers,"markers")
						// self.markers[0].longitude = res.longitude;
						// self.markers[0].latitude = res.latitude;
					}
				},
				complete: () => {
					// 获取当前位置的地点列表
					myAmapFun.getPoiAround({
						location: self.longitude + ',' + self.latitude,
						success: (data) => {
							console.log("获取当前的列表", data);
							this.dataTips = data.poisData;
						},
						fail: (info) => {
							console.log(info, '点击地图错误信息1')
						}
					})
				}
			});
			
		},
		methods: {
			cancel() {
				if (this.searchWords) {
					this.searchWords = "";
					myAmapFun.getPoiAround({
						location: this.markers[0].longitude + ',' + this.markers[0].latitude,
						success: (data) => {
							console.log("获取当前的列表", data);
							this.$nextTick(() => {
								this.dataTips = data.poisData;
							})
						},
						fail: (info) => {
							console.log(info)
						}
					})
				}
			},
			reserGeo() {
				myAmapFun.getRegeo({
					success: (data) => {
						console.log("getRegeo", data);
					},
					fail: (info) => {
						console.log(info)
					}
				})
			},
			// 根据地址列表中选择某一个地点
			select(add, index) {
				if (!add) {
					return;
				}
				this.selectIndex = index;
				var location = add.location.split(",");
				console.log(location, add, '列表地点的经纬度');
				this.selectAddr = {
					address: add.pname ? (add.pname + add.cityname + add.adname) : (add.district + add
						.address),
					detailAddress: add.address,
					latitude: location[1],
					longitude: location[0]
				};
				this.markers[0].latitude = +location[1];
				this.markers[0].longitude = +location[0];
				uni.setStorageSync("address", this.selectAddr.address);
				// 选择地点后,将选取的地点传递到前一个页面中
				var pages = getCurrentPages(); // 获取所有的页面栈
				var prevPage = pages[pages.length - 2]; // 找到上一个页面,注意是页面,如果是页面中有组件,则需要通过页面接受到数据后,再次往组件中传递
				prevPage.$vm.userAddress.locationAddress = this.selectAddr.address; //在上一个页面中就可以用userAddress进行接收
				prevPage.$vm.userAddress.detail = this.selectAddr.detailAddress; //在上一个页面中就可以用userAddress进行接收
				prevPage.$vm.selectAddr = this.selectAddr;
				prevPage.$vm.address = {
					province: add.pname,
					city: add.cityname,
					district: add.adname,
				}
				uni.navigateBack({
					delta: 1
				});

			},
			// 在地图上点击进行选点,这个选点在地图缩放比例较大时无效,因为精读的问题。
			tap(e) {
				console.log(e, '点击了地图');
				var location = e.detail.longitude + ',' + e.detail.latitude
				myAmapFun.getRegeo({
					location: location,
					success: (data) => {
						console.log("获取指定定位信息", data);
						this.selectAddr = {
							address: data[0].regeocodeData.formatted_address,
							latitude: e.detail.latitude,
							longitude: e.detail.longitude
						};
						this.markers[0].latitude = data[0].latitude;
						this.markers[0].longitude = data[0].longitude;
						myAmapFun.getPoiAround({
							location: data[0].longitude + ',' + data[0].latitude,
							success: (data) => {
								console.log("获取当前的列表", data);
								this.dataTips = data.poisData;
							},
							fail: (info) => {
								console.log(info, '点击地图错误信息1')
							}
						})
					},
					fail: (info) => {
						console.log(info, '点击地图错误信息2');
					}
				})
			},
			// 根据内容进行检索
			searchFn() {
				console.log("根据地址检索", this.searchWords);
				myAmapFun.getInputtips({
					keywords: this.searchWords,
					location: '',
					success: (data) => {
						console.log(111, data);
						if (data && data.tips) {
							this.dataTips = data.tips;
						}
					},
					fail: data => {
						console.log(222, data);
					}
				})
			},
			// getCurrentLocation() {
			// 	let that = this
			// 	uni.getLocation({
			// 		type: 'wgs84',
			// 		success: function(res) {
			// 			console.log(res, '当前地址定位');
			// 			if (res.errMsg == "getLocation:ok") {
			// 				console.log(that.mark, 'onload里面看看');
			// 				this.longitude = res.longitude;
			// 				this.latitude = res.latitude;
			// 				this.markers[0].longitude = res.longitude;
			// 				this.markers[0].latitude = res.latitude;
			// 			}
			// 		}
			// 	});
			// },
		}
	}
</script>

<style lang="scss" scoped>
	.btns {

		position: fixed;
		top: 0;
		left: 0;
		height: 260upx;
		width: 100%;
		background: linear-gradient(to bottom, rgba(0, 0, 0, 0.4), rgba(0, 0, 0, 0));
		display: flex;
		align-items: center;
		justify-content: space-between;
		z-index: 10 !important;

		view {
			border-radius: 10%;
			margin: 100upx 24upx 0;
			font-size: 30upx;

			&:first-child {
				color: #fff;
			}

			&:last-child {
				width: 100upx;
				height: 60upx;
				line-height: 60upx;
				text-align: center;
				border-radius: 10upx;
				background: #20c295;
				color: #fff;
			}
		}
	}

	.content {
		// position: relative;
		height: 100vh;
		display: flex;
		flex-direction: column;

		.content-map {
			width: 100%;
			height: 50vh;
		}

		.list {
			// flex: 0 1 calc(50vh - 10upx);
			border-radius: 30rpx;
			background-color: #fff;
			// position: absolute;
			// bottom:-660rpx;
			height: calc(50vh - 10upx);
			overflow-y: auto;
			width: 100%;
			margin: 0upx auto 0;
			padding-bottom: 20upx;

			.item {
				border-bottom: 2upx solid #f3f3f3;
				padding: 0 30rpx;

				&:last-child {
					border: none;
				}

				.address {
					font-size: 22upx;
					color: #666;
					margin: 10upx 0;
				}

				.name {
					font-size: 30upx;
					color: #333;
					margin-top: 10upx;
				}

				&.active {
					.name {
						font-weight: bold;
						color: #E13500;
					}

					.address {
						color: #E13500;
					}
				}
			}
		}

		.inputCon {
			flex: 0 1 108rpx;
			width: 100%;
			background: #fff;
			// top: -60upx;
			// position: relative;
			z-index: 20;
			// height: 100upx;
			display: flex;
			align-items: center;
			justify-content: center;

			.searchView {
				width: 702upx;
				height: 60upx;
				display: flex;
				align-items: center;
				line-height: 60upx;
				border-radius: 40upx;
				padding: 0 30upx;
				box-sizing: border-box;
				background: #f3f3f3;
				font-size: 26upx;

				.iconfont {
					color: #666;
					margin-right: 20upx;
				}

				input {
					flex: 1;
				}

				view {
					flex-shrink: 0;
				}
			}
		}

	}
</style>

微信小程序高德地图api搜索定位,微信小程序,小程序

 文章来源地址https://www.toymoban.com/news/detail-767782.html

到了这里,关于微信小程序使用高德地图实现检索定位附近周边的POI功能示例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于微信小程序Map标签及高德地图开源方法实现路径导航

            微信小程序自带地图map标签,他是基于canvas画图功能进行的地图渲染,同时依赖微信的getlocation获取经纬度,绘制周边地图。地图上可以标点,画线,查看当地地理信息。但是自带的导航功能模块不能对个人开发者公开。         高德地图提供了基于微信小程

    2024年02月09日
    浏览(66)
  • 微信小程序,高德地图

    高德开放平台: 注册账号(https://lbs.amap.com/) 去高德地图平台申请小程序应用的 key 应用管理(https://console.amap.com/dev/key/app) - 我的应用 - 创建新应用 生成的 key 即可用在程序中 下载相关 sdk 文件,导入 amap-wx.js 到项目中:https://lbs.amap.com/api/wx/download 创建 AMapWX 对象 api getRegeo 获取

    2024年02月09日
    浏览(58)
  • 微信小程序---高德地图(一)

    微信小程序调用高德API,实现高德地图地位功能。 入门指南-微信小程序插件|高德地图API (amap.com) 登录控制台 登录高德开发平台控制台(高德开放平台 | 高德地图API) ,进行注册登录。  创建新应用 进入应用管理,创建新应用。  创建Key 点开新应用,新应用中添加 key,服

    2024年02月05日
    浏览(88)
  • 微信小程序 - 最新打开地图选择位置功能,支持定位附近位置、搜索全国位置及地图标点位置、检索周边位置,可移动选点标记位置(点击选择位置后,获取位置精确详细地址及名称,拿到经纬度等信息)

    网上的教程都太乱了,各种老文章乱七八糟无法采用。 本文 实现了微信小程序开发中,打开腾讯内置地图进行自动定位,可选择附近位置及搜索位置等,获取到所选位置的详细地址名称及经纬度等信息。 您可以直接复制示例代码,稍微改改样式就能用了。 如下图真机所示,

    2024年02月15日
    浏览(59)
  • 使用百度地图坐标在微信小程序中定位显示

    一.需求描述:设备在上线时需要在上线点记录所在地点的坐标和位置描述信息 分别需要实现三个功能 1. 根据坐标点显示位置信息 , 图1 中的红色坐标点跳转到 图2 时,在腾讯地图上标出所在坐标点,并显示地点信息; 2. 定位当前所在位置 :点击蓝色图标,会定位当前所在位

    2024年02月09日
    浏览(82)
  • uniapp实现微信小程序用户实时位置定位并显示地图

    目前,我们可以通过一些现成的api来实现此功能。下面我将介绍一下通过腾讯位置服务来实现此功能的具体操作流程。 1、在Hbuilder x中对项目进行权限开放 进入到manifest.json文件中   2、获取调用腾讯位置服务所需的key 登录腾讯地图api: 腾讯位置服务 - 立足生态,连接未来

    2024年02月09日
    浏览(59)
  • 微信小程序引入高德地图Demo 快速上手

    本文参照官方文档进行编写 最后引入官方实例 最终效果 ` 注册账号 https://lbs.amap.com/?ref=http%3A%2F%2Flbs.amap.com%2Fdev%2F#/ 获取Key教程 https://lbs.amap.com/api/wx/guide/create-project/get-key/ 访问网址 https://github.com/amap-demo/wx-regeo-poiaround-weather 下载微信小程序实例 用微信开发者工具打开 打开

    2024年02月11日
    浏览(79)
  • 微信小程序---- 外卖小程序查看实时地图路线(骑手端&用户端)【高德地图】

    前言:1. 在小程序中需要使用map组件,文档链接:https://developers.weixin.qq.com/miniprogram/dev/component/map.html 2.使用的是高德地图,所以需要引进相关的js,下载链接:https://lbs.amap.com/api/wx/download 3.去往高德官方申请需要用的key,操作链接:https://lbs.amap.com/api/wx/guide/create-project/get-key

    2024年02月16日
    浏览(60)
  • 【微信小程序】微信小程序集成高德卫星地图完成多边形绘制与截图保存

    目录 功能需求 使用的技术点 注意点 实现步骤 代码 微信小程序-地图所在的wxml 微信小程序-地图所在的js 微信小程序-展示截图结果的wxml 微信小程序-展示截图结果的js H5-地图所在的html 完成效果  参考文档 感谢阅读,欢迎讨论 打开页面展示卫星地图,用户自行在地图上绘制

    2024年02月06日
    浏览(199)
  • uniapp---- 微信小程序中获取当前地理位置(高德地图)

    1.在manifest.json中选择微信小程序配置,勾选上位置接口。 2.在manifest.json中选择源码视图,添加permission和requiredPrivateInfos 3.进入微信公众平台添加合法域名(不能少但是可以放在最后添加,调试期间可以打开开发者工具的不校验合法域名) 4.下载amap-wx.130.js,并且进行引用,

    2024年02月12日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包