【uni-app】申请高德地图key,封装map.js,实现H5、iOS、Android通过getlocation获取地图定位信息(摘)

news/2025/10/28 22:58:03/文章来源:https://www.cnblogs.com/wt645631686/p/19172900

一、map组件基础使用

<template><view class="contact"><image class="img" :src="formData.headImg"></image><view class="info"><view @click="callPhone">联系电话:{{formData.phone}} ( 点击拨打 )</view><view>地址:{{formData.addr}}</view></view><map class="map" v-if="showMap" :longitude="longitude" :scale="scale" :latitude="latitude" :markers="markers"></map></view>
</template><script>export default {data() {return {showMap: false,formData:{headImg:'http://www.itcast.cn/2018czydz/images/gywmban.jpg',phone: '(0571)28828888',addr:'浙江省杭州市滨江区江南大道3588号'},longitude: 120.172341,latitude: 30.19159,scale: 13, // 缩放级别,取值范围为3-20, 默认16markers:[ // 标记点用于在地图上显示标记的位置,支持多个
          {longitude: 120.172341,latitude: 30.19159,iconPath: '../../static/logo.png',width: 20,height: 20,title:'ohh',// 点击时显示,callout存在时将被忽略
            label:{ content:'呀哈哈'},callout:{content:`kkkk\r\nphds`}}]}},mounted() {this.showMap = true;},methods: {phone() {uni.makePhoneCall({phoneNumber: this.formData.phone})}}}
</script><style lang="scss">
.contact{.img{width: 750rpx;height: 320rpx;}.info{padding: 10rpx 20rpx;font-size: 30rpx;view{line-height: 80rpx;border-bottom: 1px solid #eee;}}.map{width: 750rpx;height: 750rpx;}
}
</style>

二、封装map.js,实现定位

  1、使用第三方地图:高德,申请对应平台key

  注:高德地图web js api:https://lbs.amap.com/api/javascript-api/guide/abc/prepare

    申请H5 key

    ①登录高德开放平台(https://console.amap.com/dev),没有账号需要先注册开发者账号

    ②、创建应用:输入名称,选择应用类型

image

    ③应用右侧,点击添加key,添加h5 web端(JS API),h5需申请这个key,否则活报key无效或不匹配

image

    ④、获取key值后浏览器访问该链接,

    记得替换key值: https://webapi.amap.com/maps?v=1.4.15&key=申请的key值,项目中创建map-h5.js, 将访问到的js复制并粘贴到map-h5.js,这里我存放的路径是utils/maps-h5.js

    ⑤、如果不做map封装,可以不执行上一步,只需把申请到的web端的key和安全秘钥配置到项目的manifest.json,即可使用高德地图

image

image

此时使用api获取当前定位,使用Google浏览器访问时,并不会触发获取当前位置api,而H5 端获取定位信息,要求部署在 https 服务上,查看配置是已经使用https协议
原因是:国内使用Google浏览器访问极有可能被墙,所以可以使用其他浏览器进行测试。
接口文档:https://uniapp.dcloud.net.cn/api/location/location.html#getlocation

image

配置使用https协议

image

通过uni.getLocation获取当前定位信息时,成功回调函数中会返回当前经纬度等信息,如果想获取当前省市区信息,可以设置参数 geocode 为 true,但该属性仅APP端支持,H5则需要再通过第三方(高德)逆地理编码解析出地址信息
逆地理编码需要web服务的key作为参数,所以需要再申请web服务的key

image

// 转地址
turnAdrr(longs, lat) {// 高德逆地理变码 https://lbs.amap.com/api/webservice/guide/api/georegeo/let _key = '22865bd225e8ce6a8dc04780e9d650c1';//高德API key类型:web服务
  uni.request({method: 'GET',url: 'https://restapi.amap.com/v3/geocode/regeo?parameters',data: {key: _key,location: `${longs},${lat}`,output: 'JSON'},success: async (res) => {console.log(res)const resData = res.datathis.formData.addr = resData.regeocode.formatted_addressthis.latitude = latthis.longitude = longsthis.markers[0].latitude = latthis.markers[0].longitude = longsthis.showMap = true;},fail: r => {console.log(r);}});
},

image

此时动态获取到当前定位信息,就可以把数据动态绑定到map组件中
到此H5使用第三方地图已完成。

    申请微信小程序 key

    1、申请微信小程序key

image

  

  2、下载小程序的js文件链接:https://lbs.amap.com/api/wx/download
  3、下载完后将amap-wx.js文件解压到项目即可(主要为了封装map全局调用)

  申请android key

  1、申请Android证书
  在uni-app官方文档https://uniapp.dcloud.net.cn/左侧菜单,点击uniClound web端控制台https://unicloud.dcloud.net.cn/,登录开发者账号,然后点击账号管理,左侧菜单:应用管理-我的应用,    找到需要创建Android正式的项目

点击项目名称-Android云端正式,点击创建证书===》点击确定,等待几分钟,正式就创建好了。

  查看证书详情,可以看到SHA1 

image

image

  2、获得SHA1安全码和包名之后,高德开放平台,添加Android key,并输入SHA1 和包名,点击确认即可生成key。

image

3、复制Android key 添加到地图配置中。如果不打算申请ios,随便填一个或者都填Android的key。

image

申请ios key
ios 申请相对有点麻烦,主要是需要登录apple 开发者平台https://developer.apple.com/注册开发者账号,然后申请ios正式,生成bundle id。
具体申请可以参考:http://news.558idc.com/288029.html
这里仅为了测试,就填了dcound提供的bundle id: io.dclound.HBuilder

image

点击提交,生成ios平台key,复制 key 添加到地图配置中

image

 

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

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

相关文章

.NET开发上手Microsoft Agent Framework(一)从开发一个AI美女聊天群组开始

前言 在AI快速发展的今天,微软推出了多个AI开发框架,从早期的AutoGen到Semantic Kernel,再到最新的Microsoft Agent Framework。很多开发者可能会有疑问:为什么微软要推出这么多框架?它们之间有什么区别?本文将通…

10/28

10/28今天在工程实训里学习了金属工艺加工,学习了java的相关网课

大学四年的学费/生活费自足攻略

1997年夏天带着通过亲戚朋友筹集的学费4000元踏上了北上兰州的旅程。我独自一人第一次穿越3000公里来到兰州,办好入学手续住进宿舍。虽然没有政和的老乡,但是有几位南平的老乡来找我,特别是建瓯话和政和话是一样的,…

175天 隧道技术篇防火墙组策略FRPNPSChiselSocks代理端口映射C2上线

三种工具 frp/NPS/Chisel 不用过多的纠结去使用哪一款工具 frp的C2上线 解决的问题: 1.C2上线 2.实现信息收集(两个) 这边可以使用CS生成一个47.xx.xx.xx的后门,然后搭建frp后,进行上线 下面相当于是把端口映射出…

10.28每日总结

今天的主要课程有人机交互技术,软件构造,软件企业文化。完成了上周机器学习的作业以及企业文化的报告,软考准备开始专精刷题里,加油!

102302126李坤铭作业1

作业1 用requests和BeautifulSoup库方法定向爬取给定网址(http://www.shanghairanking.cn/rankings/bcur/2020 )的数据,屏幕打印爬取的大学排名信息。 1)代码: 点击查看代码 import requests from bs4 import Bea…

10月28日日记

1.今天进行工程实训 2.明天学习马哲 3.负载因子为什么通常设置为0.75?

【大模型应用开发】之本地部署大模型

本地部署本地部署一般是在自己的服务器上部署,但这里以本地电脑进行部署为例,由于电脑配置远远无法支持大模型配置要求,届时部署下来的也是阉割版的。本地部署一种方案就是ollama,官方地址:https://ollama.com访问…

link元素的用法及HTML样板

本人学习时候很容易额外扩展,因为很多次见到同一个熟悉但不了解的代码或用法我会很难受,所以我把基本用法都列出来了,看起来会很冗杂(因为不仅不同文章重复,相同文章我也在重复-.-),但结合实例来回对比查阅让我…

Raft 一致性算法简介

引言与背景 分布式系统中,为了在 非拜占庭故障(如节点宕机或网络分区)情况下保持数据一致性,往往需要分布式共识算法来确保多个副本状态统一 。长期以来,Leslie Lamport 提出的 Paxos 算法 一直是这一领域的代表…

10月28号

今天上午进行了铁道认知实训

URL验证绕过速查表:全面解析SSRF与CORS绕过技术

本文详细介绍了PortSwigger最新发布的URL验证绕过速查表工具,涵盖域名混淆、伪相对URL、环回地址编码等核心技术,帮助安全测试人员快速生成绕过payload,有效检测SSRF、CORS配置错误等漏洞。介绍URL验证绕过速查表 U…

https://avoid.overfit.cn/post/44c8d547475340d59aa4480f634ea67f

现在的 Agent 系统有个很明显的问题 —— 会话一结束,什么都忘了。 这不是个技术缺陷,但是却限制了整个系统的能力边界。Agent 可以做推理、规划、执行复杂任务,但就是记不住之前发生过什么。每次对话都像是第一次见…

23题黄金分割

某同学在学习了黄金分割后对于黄金分割产生了浓厚的兴趣,于是他开始探究有关黄金分割的相关性质,请你帮助他完成以下任务。【任务一】作一个黄金分割 (1)如图, \(BC \perp AB\), \(BC = \frac{1}{2} AB\),作 \(…

记录一次成功的springboot2

pom文件<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"x…

算法学习-素数筛法【埃氏筛法、线性筛法】

普通筛法: 核心思路: 使用一个布尔数组记录此数是否为素数, 从2~n便利, 如果是此数记录为素数 向后维护数组,此素数的K倍均为非素数,直到大于n. ^时间复杂度O(nlogn) 便利+维护 埃式筛法 初式: 同线性筛法,依次遍历向后…

日总结 19

C#是基于.NET框架的托管语言,由CLR(公共语言运行时)负责自动内存管理(垃圾回收),开发效率高,更适合快速构建Windows应用、Web服务、Unity游戏等上层应用,编译后生成中间语言(IL),跨平台依赖.NET Core/5+;而…

Day 18

复习日:把散落的知识点,织成可落地的网 原本计划学新内容,可翻了翻最近的笔记,发现二叉树遍历、MySQL查询、离散图论的知识点像散落在抽屉里的零件——单独看都认识,凑到一起却不知道怎么联动。索性花一天时间复盘…

Jenkins Share Library教程 —— 企业级 Jenkins Shared Library 实战示例

写在前面 好久不见~最近状态稍缓,更新也慢了些,这篇文章同样让大家等了挺久,先跟大家说声抱歉。 如果你认真读了前面几篇,还跟着实践了,那到这里,咱们就要正式开启真正的 “进阶阶段” 啦! 确实,大多数公司内…