关山初度尘未洗,策马扬鞭再奋蹄!这篇文章主要讲述#私藏项目实操分享#愚公系列2022年04月 微信小程序-项目篇(公交查询)-02周边站点-获取位置和城市信息相关的知识,希望能为你提供帮助。
前言
1.相关API【#私藏项目实操分享#愚公系列2022年04月 微信小程序-项目篇(公交查询)-02周边站点-获取位置和城市信息】逆地址解析:提供由经纬度到文字地址及相关位置信息的转换能力,广泛应用于物流、出行、O2O、社交等场景。服务响应速度快、稳定,支撑亿级调用。
可以满足以下相关业务场景:
- 满足传统对省市区、乡镇村、门牌号、道路及交叉口、河流、湖泊、桥、poi列表的需求。
- 提供通过知名地点、地标组合形成的易于理解的地址,如:北京市海淀区中钢国际广场(欧美汇购物中心北)。
- 提供精准的商圈、知名的大型区域、附近知名的一级地标、代表当前位置的二级地标等。
请求参数: 参数 |
必填 | 说明 | 示例 |
---|---|---|---|
location | 是 | 经纬度(GCJ02坐标系),格式:location=lat< 纬度> ,lng< 经度> | location= 39.984154,116.307490 |
get_poi | 否 | 是否返回周边地点(POI)列表,可选值:0 不返回(默认),1 返回 | get_poi=1 |
poi_options | 否 | 周边POI列表控制参数:1 poi_options=address_format=short返回短地址,缺省时返回长地址2 poi_options=radius=5000半径,取值范围1-5000(米)3 poi_options=policy=1/2/3/4/5控制返回场景,policy=1[默认] 以地标+主要的路+近距离POI为主,着力描述当前位置;policy=2 到家场景:筛选合适收货的POI,并会细化收货地址,精确到楼栋;policy=3 出行场景:过滤掉车辆不易到达的POI(如一些景区内POI),增加道路出入口、交叉口、大区域出入口类POI,排序会根据真实API大用户的用户点击自动优化。policy=4 社交签到场景,针对用户签到的热门 地点进行优先排序。policy=5 位置共享场景,用户经常用于发送位置、位置分享等场景的热门地点优先排序4 注:policy=1/2/3最多返回10条周边POI,policy=4/5最多返回20条,如需更多请参见地点搜索-周边推荐 | 【单个参数写法示例】:poi_options=address_format=short【多个参数英文分号间隔,写法示例】:poi_options=address_format=short; radius=5000; policy=2 |
key | 是 | 开发密钥(Key) | key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77 |
output | 否 | 返回格式:支持JSON/JSONP,默认JSON | output=json |
callback | 否 | JSONP方式回调函数 | callback=function1 |
一、获取位置和城市信息获取位置方法:getLocationInfo
getLocationInfo()
var _this = this
app.showLoading("拉取路线列表")
wx.getLocation(
type: gcj02,
success: function (res)
var locationInfo = _this.data.locationInfo
locationInfo.latitude = res.latitude
locationInfo.longitude = res.longitude
// 调用接口
qqmap.reverseGeocoder(
location:
latitude: locationInfo.latitude,
longitude: locationInfo.longitude
,
success: function (res)
locationInfo.city = res.result.address_component.city
locationInfo.address = res.result.formatted_addresses.recommend
_this.setData(
locationInfo: locationInfo
)
_this.getStationList()
,
fail: function (res)
console.log(res);
app.hideLoading(locationInfo)
,
complete: function (res)
// complete
// console.log(_this.data.locationInfo)))
,
逆地址解析方法:reverseGeocoder
reverseGeocoder(options)
var that = this;
options = options || ;
Utils.polyfillParam(options);
var requestParam =
coord_type: options.coord_type || 5,
get_poi: options.get_poi || 0,
output: json,
key: that.key
;
if (options.poi_options)
requestParam.poi_options = options.poi_optionsvar locationsuccess = function (result)
requestParam.location = result.latitude + , + result.longitude;
wx.request(Utils.buildWxRequestConfig(options,
url: URL_GET_GEOCODER,
data: requestParam
));
;
Utils.locationProcess(options, locationsuccess);
Utils相关工具类:
/**
* 回调函数默认处理
*/
polyfillParam(param)
param.success = param.success || function ();
param.fail = param.fail || function ();
param.complete = param.complete || function ();
,/**
* 构造微信请求参数,公共属性处理
*
* @param Object param 接口参数
* @param Object param 配置项
*/
buildWxRequestConfig(param, options)
var that = this;
options.header ="content-type": "application/json" ;
options.method = GET;
options.success = function (res)
var data = https://www.songbingjia.com/android/res.data;
if (data.status === 0)
param.success(data);
else
param.fail(data);
;
options.fail = function (res)
res.statusCode = ERROR_CONF.WX_ERR_CODE;
param.fail(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, result.errMsg));
;
options.complete = function (res)
var statusCode = +res.statusCode;
switch(statusCode)
case ERROR_CONF.WX_ERR_CODE:
param.complete(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg));
break;
case ERROR_CONF.WX_OK_CODE:
var data = res.data;
if (data.status === 0)
param.complete(data);
else
param.complete(that.buildErrorConfig(data.status, data.message));
break;
default:
param.complete(that.buildErrorConfig(ERROR_CONF.SYSTEM_ERR, ERROR_CONF.SYSTEM_ERR_MSG));
return options;
,/**
* 处理用户参数是否传入坐标进行不同的处理
*/
locationProcess(param, locationsuccess, locationfail, locationcomplete)
var that = this;
locationfail = locationfail || function (res)
res.statusCode = ERROR_CONF.WX_ERR_CODE;
param.fail(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg));
;
locationcomplete = locationcomplete || function (res)
if (res.statusCode == ERROR_CONF.WX_ERR_CODE)
param.complete(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg));
;
if (!param.location)
that.getWXLocation(locationsuccess, locationfail, locationcomplete);
else if (that.checkLocation(param))
var location = Utils.getLocationParam(param.location);
locationsuccess(location);
/**
* 构造错误数据结构
* @param Number errCode 错误码
* @param Number errMsg 错误描述
*/
buildErrorConfig(errCode, errMsg)
return
status: errCode,
message: errMsg
;
,
/**
* 获取location参数
*/
getLocationParam(location)
if (typeof location == string)
var locationArr = location.split(,);
if (locationArr.length === 2)
location =
latitude: location.split(,)[0],
longitude: location.split(,)[1]
;
else
location = ;
return location;
,
推荐阅读
- elasticSearch - 高级检索
- 基于Apache创建虚拟目录及配置授权访问虚拟目录
- H3C V7平台防火墙GRE VPN配置案例
- 摹客,新增点击图层穿透功能
- OpenStack Train(业务组件装 glances安装)
- Harbor版本升级(图文并茂)
- 开发一个不需要重写成Hive QL的大数据SQL引擎
- Springboot基于Redisson实现Redis分布式可重入锁案例到源码分析
- 移动端通过IPsec访问pfSense防火墙配置指南