uniapp 微信小程序开发使用高德地图、腾讯地图

news2025/1/4 1:49:05

一、高德地图

1.注册高德地图开放平台账号

(1)创建应用

这个key 第3步骤,配置到项目中locationGps.js

2.下载高德地图微信小程序插件

(1)下载地址

高德地图API | 微信小程序插件

(2)引入项目中

3. 创建逆地理编码js文件

(1)locationGps.js

/** 使用第三方地图逆地址解析经纬度获取用户当前所在位置信息
 * @param {Number} lat
 * @param {Number} lng
 */
 
export const getUserCurrentLocationInfo = (lat, lng) => {
    var GDMapWX = require('../assets/GD/amap-wx.130.js');
    var GDMapSdk = new GDMapWX.AMapWX({
        key: '' // 必填  高德应用key
    });
    return new Promise((resolve, reject) => {
        GDMapSdk.getRegeo({
            location: lng + ',' + lat,
            success: res => {
                if (res && res.length > 0) {
                    resolve(res); // 确保返回的结果是一个数组
                } else {
                    reject('No data returned');
                }
            },
            fail: function(error) {
                reject(error);
            }
        });
    });
}

(2)存放位置

4. 前端代码

<script>
import {
	getUserCurrentLocationInfo
} from "@/utils/locationGps.js"; // 引入函数


data(){

    return {
    	    latitude: 0, // 纬度,范围为-90~90,负数表示南纬,使用 gcj02 国测局坐标系
			longitude: 0, // 经度,范围为-180~180,负数表示西经,使用 gcj02 国测局坐标系
			city: '',
			address: '',

        }
    }


methods:{
        // 定位
		getLocation() {
			// 使用 uni.getLocation 获取经纬度
			uni.getLocation({
				type: 'gcj02', // 使用国测局坐标系 wgs84
				success: (res) => {
					console.log('经度:', res.longitude);
					console.log('纬度:', res.latitude);
					console.log('速度:', res.speed);
					console.log('精度:', res.accuracy);
					this.latitude = res.latitude;
					this.longitude = res.longitude;
					this.getLocationInfo(res.latitude, res.longitude); 
				},
				fail: (err) => {
					console.error('获取位置失败', err);
				}
			});
		},
		// 使用高德地图 API 进行逆地理编码
		getLocationInfo(lat, lng) {
			getUserCurrentLocationInfo(lat, lng)
				.then((res) => {
					this.city = res[0].regeocodeData.addressComponent.city || res[0].regeocodeData.addressComponent
						.province;
					this.address = res[0].regeocodeData.formatted_address;
					console.log('城市:', this.city);
					console.log('详细地址:', this.address);
				})
				.catch((error) => {
					console.error('逆地理编码失败', error);
				});
		},
	},
	mounted() {
		this.getLocation();
	},

二、腾讯地图

1.注册腾讯地图开放平台账号

(1)创建应用



腾讯地图开放平台

(2)前端代码

将应用key配置到前端代码中

<template>
	<view>
		<view class="title">当前位置:<text style="font-weight: bold;">{{address}}</text></view>
		<button @click="locationn">点击获取当前位置</button>
	</view>
</template>


<script>
	export default {
		data() {
			return {
				longitude: null,
				latitude: null,
				address: ""
			}
		},
		onLoad() {
			this.location()
		},
		methods: {

			location() {
				var that=this
				uni.getFuzzyLocation({
					success: function(res) {
						that.longitude=res.longitude
						that.latitude=res.latitude
					},
				});
			},
			locationn() {
				console.log(this.longitude)
				console.log(this.latitude)
				uni.request({
					url: `https://apis.map.qq.com/ws/geocoder/v1/?location=${encodeURIComponent(this.latitude)},${encodeURIComponent(this.longitude)}&key=E7XBZ-FUXC7-D22XZ-POFT7-OD5LJ-6RBAV&get_poi=1`,
					method: 'GET',
					success: (res) => {
						console.log(res)
						this.address=res.data.result.ad_info.city
					}
				})

			}
		}
	}
</script>

<style>
	.title {
		display: inline-block;
		margin: 20px;
		font-size: 20px;
	}
</style>

在onLoad生命周期函数中,调用getFuzzyLocation方法来获取经纬度;

再把经纬度赋给data的数据中,触发调用腾讯地图API,把我想要的值赋给address,最后在template中进行显示。

备注:

需要再项目manifest.json中,mp-weixin节点配置requiredPrivateInfos和permission。

在调用 uni.getFuzzyLocation 之前,确保请求用户授权获取位置信息,否则你会遇到如下提示:

微信开发者工具自带的getLocation就可以实现上述效果,但是申请没有getFuzzyLocation好申请,腾讯地图API中也可以根据当前IP地址来进行调用。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Rabbitmq追问2

分析rabbitmq 默认使用姿势是什么 direct fanout还是什么 public void convertAndSend(String exchange, String routingKey, Object object, CorrelationData correlationData) throws AmqpException { this.send(exchange, routingKey, this.convertMessageIfNecessary(obje…

工作中常用Vim的命令

Hi, 我是你们的老朋友&#xff0c;主要专注于嵌入式软件开发&#xff0c;有兴趣不要忘记点击关注【码思途远】 目录 0. ctags -R 1.认识 Vim的几种工作模式 2.高频使用命令 2.1 修改文件 2.2 关于行号 2.3 删除多行&#xff0c;删除部分 2.4 复制粘贴 2.5 光标移动 2.…

【ComfyUI + 自定义节点】图片叠加掩膜(mask)部分扣掉(变黑)

Comfyui的官方示例&#xff1a;https://github.com/comfyanonymous/ComfyUI/blob/master/custom_nodes/example_node.py.example 一、代码 &#xff08; 逻辑&#xff1a;将图片对应掩膜覆盖的区域替换为黑色&#xff09; 因为comfyui加载的图片后&#xff0c;转化为tensor i…

RocketMQ学习笔记(持续更新中......)

目录 1. 单机搭建 2. 测试RocketMQ 3. 集群搭建 4. 集群启动 5. RocketMQ-DashBoard搭建 6. 不同类型消息发送 1.同步消息 2. 异步消息发送 3. 单向发送消息 7. 消费消息 1. 单机搭建 1. 先从rocketmq官网下载二进制包&#xff0c;ftp上传至linux服务器&#xff0c…

【二】arcgis JavaScript api 实现加载不同坐标系的底图和三维服务

提示&#xff1a;如果是天地图底图参考这篇文章 【一】arcgis JavaScript api 实现加载不同坐标系的底图和三维服务_arcgis js api 调用三维地图服务-CSDN博客 需求&#xff1a; 前端开发实现底图&#xff08;wkid&#xff1a;3857&#xff0c;web墨卡托&#xff09;&#x…

PDF怎么压缩得又小又清晰?5种PDF压缩方法

PDF 文件在日常办公与学习中使用极为频繁&#xff0c;可想要把它压缩得又小又清晰却困难重重。一方面&#xff0c;PDF 格式本身具有高度兼容性&#xff0c;集成了文字、图像、矢量图等多样元素&#xff0c;压缩时难以兼顾不同元素特性&#xff0c;稍不注意&#xff0c;文字就会…

数据结构与算法之动态规划: LeetCode 62. 不同路径 (Ts版)

不同路径 https://leetcode.cn/problems/unique-paths/description/ 描述 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “…

Edge如何获得纯净的启动界面

启动Edge会出现快速链接&#xff0c;推广链接&#xff0c;网站导航&#xff0c;显示小组件&#xff0c;显示信息提要&#xff0c;背景 ●复杂页面 ●精简页面 点击页面设置按钮 关闭快速链接 关闭网站导航 关闭小组件 关闭信息提要 关闭背景 关闭天气提示 精简页面看起来十分舒…

如何利用java爬虫获得AMAZON商品详情

在数字化时代&#xff0c;数据的价值不言而喻&#xff0c;尤其是对于电商平台而言&#xff0c;获取商品的详细信息对于优化用户体验、制定营销策略至关重要。亚马逊作为全球最大的电商平台之一&#xff0c;拥有海量的商品信息。本文将介绍如何使用Java编写爬虫程序&#xff0c;…

人工智能基础软件-Jupyter Notebook

简介&#xff1a; Jupyter Notebook是基于网页的用于交互计算的应用程序。其可被应用于全过程计算&#xff1a;开发、文档编写、运行代码和展示结果。 Jupyter Notebook是以网页的形式打开&#xff0c;可以在网页页面中直接编写代码和运行代码&#xff0c;代码的运行结果也会直…

数据库系列之分布式数据库下误删表怎么恢复?

数据的完整性是数据库可用性的基本功能&#xff0c;在实际应用数据库变更操作过程中可能因为误操作导致误删表或者truncate操作影响业务的正常访问。本文介绍了分布式数据库中在误删表场景下的数据恢复方案&#xff0c;并进行了对比。 1、数据库误删表恢复方案 应用数据的完整…

【分布式缓存中间件Memcached原理与应用】

分布式缓存中间件&#xff08;以 Memcached 为例&#xff09; 一、分布式缓存中间件概述 &#xff08;一&#xff09;概念 分布式缓存中间件是一种用于存储频繁访问的数据副本的软件系统&#xff0c;它位于应用程序和数据源&#xff08;通常是数据库&#xff09;之间。通过在…

No.2十六届蓝桥杯备战|练习题4道|数据类型|字符型|整型|浮点型|布尔型|signed|unsigned(C++)

B2002 Hello,World! - 洛谷 #include <iostream> using namespace std; int main() { cout << "Hello,World!" << endl; return 0; }打印飞机 #include <iostream> using namespace std;int main() {cout << " …

mysql系列7—Innodb的redolog

背景 本文涉及的内容较为底层&#xff0c;做了解即可&#xff0c;是以前学习《高性能Mysql》和《mysql是怎样运行的》的笔记整理所得。 redolog(后续使用redo日志表示)的核心作用是保证数据库的持久性。 在mysql系列5—Innodb的缓存中介绍过&#xff1a;数据和索引保存在磁盘上…

小程序租赁系统开发的优势与应用探索

内容概要 在如今这个数码科技飞速发展的时代&#xff0c;小程序租赁系统开发仿佛是一张神奇的魔法卡&#xff0c;能让租赁体验变得顺畅如丝。想象一下&#xff0c;无论你需要租用什么&#xff0c;从单车到房屋&#xff0c;甚至是派对用品&#xff0c;只需动动手指&#xff0c;…

太速科技-135-4路250Msps 16bit AD采集PCIe卡

4路250Msps 16bit AD采集PCIe卡 一、板卡概述 板卡为四路250M频率采集卡&#xff0c;可以实现四路高速的模拟数据转换到PCI-E总线上。板载两颗250M采样频率的高性能AD芯片&#xff08;ADS42LB69&#xff09;&#xff0c;数据输出模式为LVDS&#xff08;DDR&#xff09…

如何恢复永久删除的PPT文件?查看数据恢复教程!

可以恢复永久删除的PPT文件吗&#xff1f; Microsoft PowerPoint应用程序是一种应用广泛的演示程序&#xff0c;在人们的日常生活中经常使用。商人、官员、学生等在学习和工作中会使用PowerPoint做报告和演示。PowerPoint在人们的学习和工作生活中占主导地位&#xff0c;每天都…

Windows电脑带有日历的桌面备忘记事工具

工作计划、备忘清单、会议文件等怎么能化繁琐为简约&#xff0c;统统存储在一个记事工具中呢&#xff1f;Windows电脑上的备忘记事工具哪一款好用呢&#xff1f;推荐大家可关注敬业签&#xff0c;敬业签是一款集备忘、提醒和日历等功能于一体的桌面记事工具&#xff0c;可悬挂桌…

SSA-Transformer拿捏!麻雀搜索算法优化-Transformer多特征分类预测/故障诊断

SSA-Transformer拿捏&#xff01;麻雀搜索算法优化-Transformer多特征分类预测/故障诊断 目录 SSA-Transformer拿捏&#xff01;麻雀搜索算法优化-Transformer多特征分类预测/故障诊断效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现SSA-Transformer麻雀搜索…

STM32G070CB的USART1_RX引脚

简介 在使用STM32G070CBT6 的 USART1时&#xff0c;发现把 PA10作为 USART1_RX引脚时&#xff0c;接收不到数据。 问题排查 更换pin脚 使用PB6/PB7作为USART1_TX/RX&#xff0c; USART1 工作正常。 使用PA9/PB7作为USART1_TX/RX&#xff0c; USART1 同样工作正常。 示波器…