首页 > 其他分享 >定位Api食用方法

定位Api食用方法

时间:2024-04-11 14:47:14浏览次数:32  
标签:定位 getLocation 食用方法 err res longitude Api latitude uni

定位Api食用方法

申请接口

微信小程序接口

地址:小程序 (qq.com)

1. 先在小程序后台,补充相关信息

前置条件

2.按照以下路径找到“getLocation”接口

  • [开发] → [开发管理] → [接口设置]

    • 选择“开通”,并补充相关信息,其中演示图片请准备齐全,不然会以“不充分为理由打回”

      • 失败:

申请失败

* 成功:

申请成功

腾讯地图接口

地址:腾讯位置服务

1-3.相关博客地址:uni-app&微信小程序定位

  • 只需要看前3步即可(1-3)

4. 额度分配

额度分配

  • 使用api之前,需要进行额度分配,不然会显示“此key每日调用量已达到上限
    • 建议分配接口为”逆地址解析“的额度即可

配置

在使用微信小程序接口之前,需要配置以下"manifest.json"文件

微信小程序配置

"mp-weixin": {
		"appid": "填入你的id",
		"setting": {
			"urlCheck": true,
			"es6": true,
			"postcss": true,
			"minified": true
		},
		"usingComponents": true,
		"permission": {
			"scope.userLocation": {
				"desc": "你的位置信息将用于小程序提供位置相关的服务"
			}
		},
		"requiredPrivateInfos": ["getLocation"]
	},

使用

uni.request方法

  • 此处调用的是微信小程序的接口,返回的数据包含腾讯地图接口所需要的”经纬度“
<script>
    async getLocation() {
        // 检查用户地理位置授权状态
        const getSettingRes = await uni.getSetting();
        const authSetting = getSettingRes.authSetting || {};

        if (authSetting['scope.userLocation']) {
            // 已授权,获取位置信息
            uni.getLocation({
                type: 'gcj02', // 使用默认坐标系统
                success: (res) => {
                    this.latitude = res.latitude;
                    this.longitude = res.longitude;

                    this.getCityByCoordinates(this.latitude, this.longitude)
                    // 存储或使用位置信息
                    console.log('位置信息:', res);
                },
                fail: (err) => {
                    uni.showToast({
                        title: '位置服务不可用',
                        icon: 'none'
                    });
                    console.error('获取位置失败:', err);
                }
            });
        } else {
            // 未授权,请求授权
            uni.authorize({
                scope: 'scope.userLocation',
                success: () => {
                    // 授权成功后,再次获取位置信息
                    this.getLocation();
                },
                fail: () => {
                    uni.showToast({
                        title: '用户拒绝授权地理位置',
                        icon: 'none'
                    });
                }
            });
        }
    },
</script>
  • 此处是对上一段代码中所用到的“getCityByCoordinates”的补充,其中调用了腾讯地图的接口
<script>
    async getCityByCoordinates(latitude, longitude){
        uni.request({
            url: 'https://apis.map.qq.com/ws/geocoder/v1/',
            method: 'GET',
            data: {
                location: `${latitude},${longitude}`,
                key: 'RKEBZ-?????-?????-?????-FL4MZ-2CFG5', // 将 'key' 替换为你的实际腾讯地图API密钥
    		},
            success: (res) => {
            	// 请求成功,处理返回数据
            	console.log(res.data);
            	this.currentCity = res.data.result.address
            },
            fail: (err) => {
                // 请求失败,处理错误信息
                console.error('请求失败:', err);
            },
        });
    }
</script>

完整例子(申请、配置好后可直接使用)

<template>
<view>
    <button @tap="getLocation">获取位置</button>
    <text v-if="locationInfo">您的位置:经度 {{ longitude }}, 纬度 {{ latitude }}</text>
    <text>{{currentCity}}</text>
    </view>
</template>

<script>

    export default {
        data() {
            return {
                currentCity: '',
                longitude: 0,
                latitude: 0,
            };
        },
        methods: {	
            async getLocation() {
                // 检查用户地理位置授权状态
                const getSettingRes = await uni.getSetting();
                const authSetting = getSettingRes.authSetting || {};

                if (authSetting['scope.userLocation']) {
                    // 已授权,获取位置信息
                    uni.getLocation({
                        type: 'gcj02', // 使用默认坐标系统
                        success: (res) => {
                            this.latitude = res.latitude;
                            this.longitude = res.longitude;

                            this.getCityByCoordinates(this.latitude, this.longitude)
                            // 存储或使用位置信息
                            console.log('位置信息:', res);
                        },
                        fail: (err) => {
                            uni.showToast({
                                title: '位置服务不可用',
                                icon: 'none'
                            });
                            console.error('获取位置失败:', err);
                        }
                    });
                } else {
                    // 未授权,请求授权
                    uni.authorize({
                        scope: 'scope.userLocation',
                        success: () => {
                            // 授权成功后,再次获取位置信息
                            this.getLocation();
                        },
                        fail: () => {
                            uni.showToast({
                                title: '用户拒绝授权地理位置',
                                icon: 'none'
                            });
                        }
                    });
                }
            },

            async getCityByCoordinates(latitude, longitude) {
                uni.request({
                    url: 'https://apis.map.qq.com/ws/geocoder/v1/',
                    method: 'GET',
                    data: {
                        location: `${latitude},${longitude}`,
                        key: 'RKEBZ-5MKY4-RMHUK-KU4ZP-FL4MZ-2CFG5', // 将 'mykey' 替换为你的实际腾讯地图API密钥
                    },
                    success: (res) => {
                        // 请求成功,处理返回数据
                        console.log(res.data);
                        this.currentCity = res.data.result.address
                    },
                    fail: (err) => {
                        // 请求失败,处理错误信息
                        console.error('请求失败:', err);
                    },
                });
            }
        }
    }
</script>

标签:定位,getLocation,食用方法,err,res,longitude,Api,latitude,uni
From: https://www.cnblogs.com/mushanC-137/p/18129124

相关文章

  • 加密API研究
    0查找各种标准的原始文档,研究学习(至少包含CryptoAPI,PKCS#11,GMT0016-2012,GMT0018-2012)(1)CryptoAPI:CryptoAPI是微软Windows系统提供的一个应用程序编程接口,旨在让开发者能够轻松地对敏感数据进行加密或数字签名,以保护用户的私钥信息。这套API提供了一系列函数,而实际的加密工......
  • 淘宝详情API接口文档(java)get调用
    淘宝详情API接口是用于获取淘宝商品详细信息的接口,它允许开发者通过发送请求,获取商品的描述、价格、评价等信息。下面是一个关于淘宝详情API接口的示例文档,包括接口地址、请求参数、响应参数等内容。淘宝详情API接口文档一、接口地址https://api-gw.onebound.cn/taobao/item_ge......
  • ansible python API
    version:v2.9官方示例如下:点击查看代码#!/usr/bin/envpythonfrom__future__import(absolute_import,division,print_function)__metaclass__=typeimportjsonimportshutilimportansible.constantsasCfromansible.executor.task_queue_managerimportT......
  • Cisco APIC 6.0(5h) M - 应用策略基础设施控制器
    CiscoAPIC6.0(5h)M-应用策略基础设施控制器ApplicationPolicyInfrastructureController(APIC)请访问原文链接:CiscoAPIC6.0(5h)M-应用策略基础设施控制器,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org思科应用策略基础设施控制器(APIC)CiscoNX-OS......
  • App Store 警告 ITMS-91053: Missing API declaration
    问题:app虽然成功上架AppStore,但是邮件提示了如下警告:解决:解决方法是添加隐私清单文件。参考官方说明:官方文档其它相关链接:StackOverflow中关于这个问题的讨论这位作者分享了如何解决该问题这篇文章提供了解决该问题详细的指南......
  • python-API开发zk客户端
    前面于超老师讲完了,zk运维的基本命令行玩法,更多的还是开发需要通过代码和zk结合处理。大多数场景是java后端去操作。这里我们以运维更友好的python来学习。1.kazoo模块zookeeper是一个用于维护配置信息、命名、提供分布式同步和提供组服务。它自身是高可用的,只要宕机节点不......
  • 华为云发布CodeArts API,为API护航
    本文分享自华为云社区《华为云发布CodeArtsAPI,为API护航》,作者:华为云头条。华为云正式发布API全生命周期管理一体化协作平台CodeArtsAPI,支持开发者高效实现API设计、开发、测试、托管、运维、变现的一站式体验。以API契约为锚点,华为云CodeArtsAPI保证了API各阶段数据高度一......
  • 前端学习-vue视频学习015-其他API
    尚硅谷视频教程shallowRefshallowReactive浅层次的响应式数据(仅第一层)shallowRef:只能整体修改person.value可以修改,但是person.value.name无法修改shallowReactive:只能修改对象的第一层数据car.brand可以修改,但是car.options.color无法修改主要用处在于:如果数据量非常......
  • 小程序 Api promise 化
      工具-构建npm-miniprogram_npm下出现miniprogram-api-promise即可正常使用 使用方法:如果提示没有找到miniprogram-api-promise,可以清除缓存重新编译试一下  ......
  • 前后端分离开发和接口文档管理平台YAPI以及前端工程化(Vue-cli)
    前后端分离开发和接口文档管理平台YAPI以及前端工程化(Vue-cli)前后端分离开发需求分析=>接口定义(API接口文档)=>前后端并行开发(遵守规范)=>测试(前端、后端)=>前后端联调测试YApi1.介绍:YApi是高效、易用、功能强大的api管理平台,旨在为开发、产品、测试人员提供更优雅的接口管理服......