H5结合百度map实现GPS定位

前言

     目前我们做m端时都会用到定位,当用户第一次打开h5页面时会启动gps定位,并结合百度map来查找城市。按照我们的逻辑思路就是gps定位获取经纬度,传到后台调用百度的一个接口查找城市名称。

     1、查询得到城市名称,我们根据城市名称在我们自己的数据库里再查询对应的城市id(查询会很频繁,可以基于xml 缓存查询,也可以放到redis里)

     2、为了保险起见,我们也会在自己的库里根据经纬度维护一套城市信息,防止接口不可用时不影响定位。

 

H5 GPS定位

 1  (function () {
 2         var
 3             isGeolocation = false,
 4             lat = 0,
 5             lng = 0,
 6             coords = null;
 7             
 8         if (navigator.geolocation) { isGeolocation = true; };
 9         if (isGeolocation) {
10             function getPosSuccess(position) {
11                 coords = position.coords;
12                 lat = coords.latitude, lng = coords.longitude;
13                 $.ajax({
14                     type: 'GET',
15                     dataType: 'json',
16                     url: '/Home/GetPositionArea',
17                     data: { 'lat': lat, 'lng': lng },
18                     success: function (data) {
19 
20                     }
21                 });
22             };
23             function getPosError(err) {
24                 switch (err) {
25                     case err.PERMISSION_DENIED:
26                         console.log("您拒绝了共享位置,可手动选择城市。");
27                         break;
28                     case err.POSITION_UNAVAILABLE:
29                         console.log("无法获取当前位置");
30                         break;
31                     case err.TIMEOUT:
32                         console.log("获取位置超时");
33                         break;
34                     default:
35                         console.log("未知错误");
36                         break;
37                 }
38                 
39             };
40             navigator.geolocation.getCurrentPosition(getPosSuccess, getPosError, null);
41         } else {
42             
43         };
44 
45     })();

 

结合百度接口查询具体城市


public
JsonResult GetPositionArea(decimal lng, decimal lat) { string api = string.Format( "http://api.map.baidu.com/geocoder/v2/?output=json&ak=XXXXX&location={0},{1}", lat, lng); //传入自己的业务参数ak string result = HttpRequestHelper.Get(api); return Json(result, JsonRequestBehavior.AllowGet); }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值