在小程序中使用百度地图
一、获取密钥
进入百度开放平台官网,点击右上角“API控制台”,注册成为百度地图开发者。
进入控制台,创建一个新应用。填写相应信息时,应用类型选择【微信小程序】,APPID填写小程序开发者ID。
点击提交后,即可在查看应用页面看到申请成功的密钥(AK)。
二、引入JS模块
在项目根目录下新建一个路径,下载百度地图微信小程序JavaScript API,解压后的文件中有 bmap-wx.js 文件(压缩版 bmap-wx.min.js ),将其拷贝到新建的路径下,安装完成。
三、设置请求合法域名
登录微信公众平台-> “开发” -> “开发管理” -> ”开发设置“-> “服务器域名”-> “request 合法域名” ->添加 https://api.map.baidu.com-> 点击"保存并提交"
打开开发者工具 -> “项目配置” -> 点击"刷新",合法域名设置同步完成
四、使用示例——地址解析
将结构化地址(省/市/区/街道/门牌号)解析为对应的经纬度坐标。主要方法:BMapWX对象的geocoding(geocodingParam: Object)
wxml代码:
<view class="map_container"> <map class="map" id="map" longitude="{{longitude}}" latitude="{{latitude}}" scale="14" show-location="true" markers="{{markers}}" bindmarkertap="makertap"></map>
</view>
<view class="rgc_info"> <view>经度:{{longitude}}</view><view>纬度:{{latitude}}</view>
</view>
<view><input placeholder="输入关键字" type="text" value="{{searchText}}"bindinput="handleInputChange"/><button bindtap="search">搜索</button>
</view>
js代码:
// 引用百度地图微信小程序JSAPI模块
var bmap = require('../../libs/bmap-wx.js'); //bmap-wx.js文件存放路径
var wxMarkerData = [];
Page({ data: {BMap: null,searchKeyword: '',markers: [], latitude: '', longitude: '', rgcData: {} }, onLoad: function() { // 新建百度地图对象 this.data.BMap = new bmap.BMapWX({ ak: 'xxx' //百度地图密钥}); this.toSearch("北京")},handleInputChange: function (e) {this.data.searchKeyword = e.detail.value},search: function () {this.toSearch(this.data.searchKeyword)},toSearch: function (keyword) {let that = this;//重要,必须let fail = function(data) { console.log(data)};let success = function(data) { wxMarkerData = data.wxMarkerData; that.setData({ markers: wxMarkerData }); that.setData({ latitude: wxMarkerData[0].latitude }); that.setData({ longitude: wxMarkerData[0].longitude }); } // 发起geocoding检索请求 that.data.BMap.geocoding({ address: keyword, fail: fail, success: success, iconPath: '../../img/marker_red.png', iconTapPath: '../../img/marker_red.png' }); }
})
wxss代码
.map_container{ height: 420px; width: 100%;
} .map { height: 100%; width: 100%;
}.rgc_info {padding: 5px;
}
.rgc_info {display: block;
}
效果:
五、功能汇总
POI检索:搜索附近的美食、酒店。
方法:
search(searchParam: Object)
参数 searchParam: Object 对象结构
属性名 类型 是否必须 描述 location string 否 经纬度例如:39.915,116.404 默认值为当前定位点 iconPath string 是 小程序marker图标 iconTapPath string 否 小程序点击后图标 width number 否 marker宽,默认为图片宽度 height number 否 marker高,默认为图片高度 alpha number 否 marker透明度,默认为1 query string 否 检索关键字,默认为生活服务、美食、酒店 success Function(searchSuccess) 否 检索成功后回调回调函数 fail Function(searchFail) 否 检索失败后回调函数 注:其他参数和Place API请求参数一致。
POI检索词联想:供匹配输入关键字的辅助信息数据,返回关键字类的相关结果。
方法:suggestion(suggestionParam: Object)
参数 suggestionParam: Object 对象结构
属性名 类型 是否必须 描述 success Function(suggestionSuccess) 否 检索成功后回调函数 fail Function(suggestionFail) 否 检索失败后回调函数 注:其他参数和Place Suggestion API请求参数一致。
地址解析:将结构化地址(省/市/区/街道/门牌号)解析为对应的经纬度坐标。比如将"北京市海淀区上地十街10号"转化为"116.30051,40.0511"。当然,地址结构越完整,地址内容越准确,解析的坐标精度也会越高。
方法:
geocoding(geocodingParam: Object)
参数 geocodingParam: Object 对象结构
属性名 类型 是否必须 描述 address string 是 待解析地址,如"北京市海淀区上地十街10号" iconPath string 是 小程序marker图标 iconTapPath string 否 小程序点击后图标 width number 否 marker宽,默认为图片宽度 height number 否 marker高,默认为图片高度 alpha number 否 marker透明度,默认为1 success Function(geocodingSuccess) 否 检索成功后回调函数 fail Function(geocodingFail) 否 检索失败后回调函数 注:其他参数和Geocoding请求参数一致。
逆地址解析:根据经纬度获得对应的地理描述信息,默认对当前定位后的坐标进行解析,也可以在调用时指定经纬度进行解析。
方法:
regeocoding(regeocodingParam: Object)
参数 regeocodingParam: Object 对象结构
location string 否 要解析的经纬度例如:39.915,116.404 默认值为当前定位点 iconPath string 是 小程序marker图标 iconTapPath string 否 小程序点击后图标 width number 否 marker宽,默认为图片宽度 height number 否 marker高,默认为图片高度 alpha number 否 marker透明度,默认为1 success Function(regeocodingSuccess) 否 检索成功后回调函数 fail Function(regeocodingFail) 否 检索失败后回调函数 注:其他参数和Geocoding请求参数一致。
更多详情参考:微信小程序JavaScript API | 百度地图API SDK (baidu.com)
官方类参考和Demo:GitHub - baidumapapi/wxapp-jsapi: 百度地图微信小程序jsapi
六、其他注意事项
小程序获取定位可能需要授权,定位提示:微信小程序getLocation 需要在app.json中声明permission字段
解决方法:
在app.json文件中进行添加下面配置
"permission":{"scope.userLocation": {"desc": "是否允许小程序获取位置信息?"} }
参考;微信小程序getLocation 需要在app.json中声明permission字段_但许星辰静月的博客-CSDN博客_getlocation需要在app.json中声明
官方开发指南中还有天气查询功能,经测试该方法不可用,在github更新日志中有一条:
2020.09:由于ak鉴权限制,小程序端jsapi暂不支持天气服务,可以通过webAPI天气服务调用。
在小程序中使用百度地图相关推荐
- php 嵌入手机百度地图,C# 程序中嵌入百度地图
本例是对WinForm中使用百度地图的简要介绍.百度地图目前支持Android开发,IOS开发,Web开发,服务接口,具体可以参照'百度地图开放平台'. [动态加载百度地图]涉及到的知识点:WebBr ...
- 小程序中使用高德地图
小程序中使用高德地图: 第一步:申请高德地图的秘钥,https://lbs.amap.com/api/wx/summary/ 按照官网这个步骤来就行. 第二步:注册完之后下载amap-wx.js这个j ...
- 微信小程序城市定位(百度地图API)
概述 微信小程序提供一些API(地址)用于获取当前用户的地理位置等信息,但无论是wx.getLocation,还是wx.chooseLocation均没有单独的字段表示国家与城市信息,仅有经纬度信息. ...
- api 定位 微信小程序 精度_微信小程序城市定位(百度地图API)
概述 微信小程序提供一些API(地址)用于获取当前用户的地理位置等信息,但无论是wx.getLocation,还是wx.chooseLocation均没有单独的字段表示国家与城市信息,仅有经纬度信息. ...
- 微信小程序加载百度地图
1:申请百度地图服务的ak,(个人感觉浏览器和小程序类型没区别,甚至浏览器比小程序更好) 2:配置地图服务,微信小程序开发平台,设置开发设置 3:小程序里添加地图服务的js文件bmap-wx.min. ...
- uni-app 微信小程序中关于 map 地图使用案例分享
这篇文章,我将带领大家使用微信内置地图详细讲解关于如何配置地图.打开地图和使用地图. 目录 1.配置地图 2.先写页面内,这里我创建了一个 map示例页面 mapDemo.vue 2.1 关于 map ...
- 微信小程序报错百度地图API 报错 “APP 服务被禁用“
最近开发微信小程序时,想使用百度地图制作定位功能,结果一直报错"APP服务被禁用",查了好多资料都不行,改成服务端也不行,终于,我在参考了以下这位大佬的博客之后成功用上了百度地图. ...
- 微信小程序中调用百度翻译API(出现的错误54001 52003)
我自己的54001: appid 和key出现错误, 先用的是百度提供的模板appid 及key 然后一直报错 之后用其它的appid 和key后能够正常运行 52003:这个需要自己申请一个app ...
- 记录在小程序中前端调用百度 Ocr 识别身份证信息
微信小程序因为业务扩展需要用户身份证信息,这里记录一下在小程序中通过百度ocr识别的一个开发过程记录. 1. 注册百度云账号 首先,我们要去百度云注册个账号,百度云注册 ,已经注册过可以忽略这部.注册 ...
- 微信小程序:高德地图在小程序中的实践(含静态地图)
前言 前人栽树,后人乘凉.记录下工作的点点滴滴,让同道中人少走弯路~ 来看看需求和问题:房产相关的项目,详情中需要显示房源地址,底部要有固定的菜单(不是tabbar),房源数据过多,数据超过一屏时,m ...
最新文章
- 分布式概念-分布式事务,并发处理协议
- dfs题目这样去接题,秒杀leetcode题目
- java compareto date_int compareTo(Date anotherDate)
- 使用netstat命令查看端口的使用情况
- PHP的- = :: self $this
- CodeForces - 1419E Decryption(质因子分解+构造)
- Spark Streaming实时数据分析
- .NET编译工具(每日构建或自动化编译)
- USB 转 RS-485 / 422 接口转换器
- Google Play Academy 组队 PK 赛,正式开赛!
- c语言1GB转成B,2018职称计算机考试WPS_Office精选习题9
- 乐乐课堂_leleketang.com
- 机械臂规划----三次样条曲线
- 天河CAD2012打开服务器文件,AutoCAD无法启动,或启动中途闪退
- 银联在线php支付接口,ecshop银联在线支付接口插件(官方版)
- Java - 文件下载输出到浏览器
- 实验(三):单片机I/O口实验-模拟开关灯
- [ASP.NET网站开发] web程序设计,期末作业,问卷填写与学生选课管理系统(超简单,容易懂!课程考核必过)(使用内置数据库)
- Android屏幕适配之百分比布局LinearLayout、RelativeLayout、FrameLayout
- 基于豹子捕猎的函数寻优算法