微信开发 - 获取用户地理位置定位
在项目的逻辑业务当中,有时候需要获取用户当前所在的地理位置。那么,我们怎么去获取用户的地理位置定位呢?
可以采用百度地图接口获取用户的地理位置定位。要使用该服务,你得先注册成为百度地图开发者。http://lbsyun.baidu.com/ 百度地图开放平台地址
注册成为开发者后,你会获取到百度地图给你的一个密匙key,这个密匙key就是你以后获取用户地理位置的一个凭证。
且使用该地图接口的时候要注意以下几点:
每一个开发者帐号每天使用普通IP定位服务和经纬度定位服务的使用次数是有限的,即配额有限。
每一个开发者帐号在每分钟内使用普通IP定位服务的次数是有限的,即并发量有限。
同一个帐号下的HTTP/HTTPS请求,配额、并发共享。
首先,我先讲解通过经纬度获取用户的地理位置信息。
1、获取地理位置定位(微信) wx.getLocation 接口
如果你熟悉微信开发,那么在微信开发当中,有一个接口权限叫 获取地理位置定位 该权限是包含在js接口中的,也就是说你要使用该服务你就得先注册微信网页的js接口服务。然后才能调用该权限(不熟悉的朋友可以先看看微信开发手册)。
1、通过该微信网页js接口 你可以拿到用户当前所在的地理位置信息(该接口调用了手机GPS地理位置定位接口,如果手机没有开启GPS,那么微信会提示该用户是否开启GPS地理位置定位的)的经、纬度(如 29.586331,106.311926)
2、从微信网页上拿到的经纬度和百度认可的经纬度是否区别的(因为双方遵循的标准不同),所以要进行坐标转换,调用百度的坐标转换接口将从微信获取的经纬度转换成百度认可的经纬度
3、将转换的经纬度,调用百度地理位置获取接口,获取用户当前所在地理位置。
如php源码
/*** 经纬度转换* @param * int type 需要转换的目标类型* int to 百度类型* String $x,$y 经纬度*/
function getXy($x,$y,$ak,$type,$to)
{//调用百度地图接口$apiUrl = "http://api.map.baidu.com/geoconv/v1/?coords={$x},{$y}&from={$type}&to={$to}&ak={$ak}";$jsonData = curlHttp($apiUrl);$data = json_decode($jsonData,true);return $data;
}
/*** @param* $x $y 微信获取的经纬度* $ak 百度地图key 通过注册成为开放者得到*/
function getAddress($x,$y,$ak){//转换成百度认可的经纬度$res = getXy($x,$y,$ak,1,5);$y1 = $res['result'][0]['y'];$x1 = $res['result'][0]['x'];//调用百度地图接口$apiUrl = "http://api.map.baidu.com/geocoder/v2/?location={$y1},{$x1}&output=json&ak={$ak}"; //百度地图接口地址$jsonData = curlHttp($apiUrl); //curl 获取百度地理位置接口$data = json_decode($jsonData,true); // 将返回的结果进行json处理return $result;
}/*curl*/
function curlHttp($url,$https = false,$post = false,$post_data = array())
{$ch = curl_init();curl_setopt($ch, CURLOPT_URL,$url);curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);curl_setopt($ch,CURLOPT_HEADER,0);/*是否post提交数据*/if($post){curl_setopt($ch,CURLOPT_POST,1);if(!empty($post_data)){curl_setopt($ch,CURLOPT_POSTFIELDS,$post_data);}}/*是否需要安全证书*/if($https){curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // https请求 不验证证书和hostscurl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);}$output = curl_exec($ch);curl_close($ch);return $output;
}//test
$x = '';
$y = '';
$ak= '';
var_dump(getAddress($x,$y,$ak));
明白了吧。先获取用户的经纬度,再获取用户具体的地理位置信息。 且获取到的地理位置精度很高。
2、通过普通IP定位地理位置
普通IP定位效果一般,只能针对IP返回大致位置信息,适用于对位置精度要求不高的应用。
@param
$ip 用户的ip地址
$ak 百度地图key
function getAddress($ip,$ak)
{
//调用百度地图接口
$apiUrl = "$api = "http://api.map.baidu.com/location/{$ip}?ak={$ak}&coor=bd09ll""; //百度地图接口地址
$jsonData = curlHttp($apiUrl); //curl 获取百度地理位置接口
$data = json_decode($jsonData,true); // 将返回的结果进行json处理
return $result;
}
觉得满意请打赏,您的十分满意是笔者前进的动力
微信开发 - 获取用户地理位置定位相关推荐
- 微信jsapi获取用户地理位置接口开发(第八课)
本章节给大家介绍通过微信jsapi获取用户的地理位置,微信官方文档关于地理位置给了两种接口,一种是通过微信内置地图查看用户的地理位置,第二种是直接获取当前用户的地理位置坐标信息. 使用微信内置地图查看 ...
- 微信JSSDK获取用户地理位置(经纬度)
最近一直在做公众号开发,这两天公司让我做一个类似钉钉打卡的功能,这时候我需要获取到用户的经纬度, 但是在这之前我只知道在关注微信公众号的时候获取用户地理位置:https://mp.weixin.qq. ...
- 微信开发--获取用户信息中文乱码的解决方案
为什么80%的码农都做不了架构师?>>> 在微信开发中我们会经常需要获取用户的信息. 微信给我们提供了获取用户信息的api, 地址为 https://api.weixin.qq ...
- 微信开发--获取用户信息 48001 问题
获取用户信息接口:https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID 我用的是这个接口 ...
- PHP微信公众号,获取用户地理位置 定位 经纬度
<?php //php插件下载地址: https://files.cnblogs.com/files/fan-bk/jssdk_php.rar //建立一个php文件 require_once ...
- php微信地理位置,php,微信公众号,获取用户地理位置 定位 经纬度
//php插件下载地址: https://files.cnblogs.com/files/fan-bk/jssdk_php.rar //建立一个php文件 require_once "jss ...
- 微信公众平台开发之获取用户地理位置
在进行微信运营的时候,用户地理位置是我们进行营销策划.广告活动投放.用户精准营销的重要依据,今天我们就来分析一下微信开发中如何获取获取用户地理位置. 获取用户地理位置,你需要在微信公众平台开发者中心开 ...
- php开发微信支付获取用户地址
使用微信获取地址信息是和微信支付一道申请的,微信支付申请通过,就可以使用该功能. 微信商城中,使用微信支付获取用户的收货地址,可以省略用户输入地址信息的繁复流程,提高用户体验. 但是可能是因为牵扯到用 ...
- python 公众号 关注者位置_微信公众号获取用户地理位置
很久没搞微信的js-sdk了, 搞了一下午, 刷新页面老是失败, 没想到结合经验给大家展示下获取用户地理位置 第一步:登录微信公众号https://mp.weixin.qq.com 首先先设置最基本的 ...
最新文章
- Caffe源码中layer文件分析
- VC++连MySQL小记
- plugin since you are using Gradle version 4.6 or above
- Debian GNU Linux 4.0 r4
- 如何判断数组所有数都不等于一个数_工程师编程,C语言学习,关于数组方面的一些总结...
- 基于matlab的信源编码pcm,信源编码仿真实现
- Android MVP架构手绘图
- C++中用两个栈实现一个队列
- java base64图片计算图片大小
- 搜集的育儿电子书下载大全
- 2019级第二次月赛暨软件计科联合新生赛题解
- (OpenCV)图像目标尺寸检测
- 特写:美国B2C网站惨淡经营
- 读理工科研究生的心态
- linux c计算时间差值,获取时间和计算时间差的几种方法总结,时间差几种方法...
- 如何做好网络推广?软文文案在做网络推广上的策略分享
- matlab添加文件夹语音_基于MATLAB的语音处理
- java中extends用法_java中extends和implements的区别,怎么用?
- Google Earth Engine ——基于ENVISAT的中分辨率成像光谱仪全球土地覆盖300米分辨率数据集
- 塔罗牌微信小程序源码