亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

微信公眾號獲取用戶地理位置并列出附近的門店的示例代碼

2019-11-19 11:08:26
字體:
來源:轉載
供稿:網友

思路分析:

1、在微信公眾號內獲取用戶地理位置

需要js-sdk簽名包(關于如何獲取文檔有介紹)

2、根據獲取的地理位置ajax去后臺請求,通過sql語句,查詢中距離最近的門店(sql語句在網上搜的,位置是通過后臺添加的)

3、根據城市查詢門店列表,使用通過表單提交事件,ajax請求后臺獲取列表

4、百度地圖導航頁面要注意引入地址

一、開始開發

1、該功能的實現需要調用微信公眾號的js-sdk接口實現

簡介:

微信JS-SDK是微信公眾平臺面向網頁開發者提供的基于微信內的網頁開發工具包。

通過使用微信JS-SDK,網頁開發者可借助微信高效地使用拍照、選圖、語音、位置等手機系統的能力,同時可以直接使用微信分享、掃一掃、卡券、支付等微信特有的能力,為微信用戶提供更優質的網頁體驗。

2、調用微信js-sdk的步驟:官方的網址:https://mp.weixin.qq.com/wiki

步驟一:綁定域名

先登錄微信公眾平臺進入“公眾號設置”的“功能設置”里填寫“JS接口安全域名”。

步驟二:引入JS文件

 在需要調用JS接口的頁面引入如下JS文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.2.0.js

備注:支持使用 AMD/CMD 標準模塊加載方法加載

步驟三:通過config接口注入權限驗證配置

所有需要使用JS-SDK的頁面必須先注入配置信息,否則將無法調用(同一個url僅需調用一次,對于變化url的SPA的web app可在每次url變化時進行調用,目前Android微信客戶端不支持pushState的H5新特性,所以使用pushState來實現web app的頁面會導致簽名失敗,此問題會在Android6.2中修復)

具體的使用可以查看官方的文檔

wx.config({  debug: true, // 開啟調試模式,調用的所有api的返回值會在客戶端alert出來,若要查看傳入的參數,可以在pc端打開,參數信息會通過log打出,僅在pc端時才會打印。  appId: '', // 必填,公眾號的唯一標識  timestamp: , // 必填,生成簽名的時間戳  nonceStr: '', // 必填,生成簽名的隨機串  signature: '',// 必填,簽名,見附錄1  jsApiList: [] // 必填,需要使用的JS接口列表,所有JS接口列表見附錄2});

步驟四:通過ready接口處理成功驗證

wx.ready(function(){  // config信息驗證后會執行ready方法,所有接口調用都必須在config接口獲得結果之后,config是一個客戶端的異步操作,所以如果需要在頁面加載時就調用相關接口,則須把相關接口放在ready函數中調用來確保正確執行。對于用戶觸發時才調用的接口,則可以直接調用,不需要放在ready函數中。});

步驟五:通過error接口處理失敗驗證

wx.error(function(res){  // config信息驗證失敗會執行error函數,如簽名過期導致驗證失敗,具體錯誤信息可以打開config的debug模式查看,也可以在返回的res參數中查看,對于SPA可以在這里更新簽名。})

自己的程序代碼附上(我做的是獲取用戶的地理位置,就是出現一個獲取地理位置的彈窗):

html頁面:

//引入微信js文件<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script><script type="text/javascript">//配置信息驗證接口wx.config({  debug: false,  appId: '<?php echo $signPackage["appId"];?>',  timestamp: '<?php echo $signPackage["timestamp"];?>',  nonceStr: '<?php echo $signPackage["nonceStr"];?>',  signature: '<?php echo $signPackage["signature"];?>',  jsApiList: [    // 所有要調用的 API 都要加到這個列表中    'checkJsApi',    'openLocation',    'getLocation'   ]      });//驗證之后進入該函數,所有需要加載頁面時調用的接口都必須寫在該里面wx.ready(function () {//基礎接口判斷當前客戶端版本是否支持指定JS接口wx.checkJsApi({  jsApiList: [    'getLocation'  ],  success: function (res) {    // alert(JSON.stringify(res));    // alert(JSON.stringify(res.checkResult.getLocation));    if (res.checkResult.getLocation == false) {      alert('你的微信版本太低,不支持微信JS接口,請升級到最新的微信版本!');      return;    }  }});         //微信獲取地理位置并拉取用戶列表(用戶允許獲取用戶的經緯度)wx.getLocation({  success: function (res) {    var latitude = res.latitude; // 緯度,浮點數,范圍為90 ~ -90    var longitude = res.longitude; // 經度,浮點數,范圍為180 ~ -180。        //去數據庫查詢獲取附近的門店            $.ajax({            type: 'post',            url: '__CONTROLLER__/shopList',            dataType: 'json',            data: {"latitude": latitude,"longitude":longitude},            success:function(shopInfo){            //index是下表,el是值                $(shopInfo).each(function(index,el){                  $("#list").append('<div> <a href="__CONTROLLER__/shopDetail/shop_id/'+el.shop_id+'" rel="external nofollow" > <img src="'+el.shop_logo.substring(1)+'"/> <div> <h4>'+el.shop_name+'</h4> <div>'+el.shop_position+'</div> </div> </a> <div> <ul> <li> <a href="__CONTROLLER__/daohang/shop_id/'+el.shop_id+'" rel="external nofollow" > <i></i> 一鍵導航 <span> '+el.distance/1000+'km </span> </a> </li> </ul> </div> </div>');                })                         }            });  },  cancel: function (res) {  $(".city").triggerHandler("focus");  }        });      });</script>

控制器中獲取門店通過sql語句獲取距離一定距離的門店的列表:

if(IS_AJAX){  $post = I('post.');  //緯度小,經度大  // 5公里范圍是5000  $longitude = $post['longitude'];//經度信息  $latitude = $post['latitude'];//緯度信息        //通過sql語句查詢距離5公里之內的門店  $sql = "select * from (select shop_id,shop_name,shop_tel,shop_position,shop_logo, ROUND(6378.138*2*ASIN(SQRT(POW(SIN(($latitude*PI()/180-`shop_wei`*PI()/180)/2),2)+COS($latitude*PI()/180)*COS(`shop_wei`*PI()/180)*POW(SIN(($longitude*PI()/180-`shop_jing`*PI()/180)/2),2)))*1000) AS distance from sp_shop order by distance ) as a where a.distance<=5000";  // $sql = "select * from (select shop_id,shop_name,shop_tel,shop_position,shop_logo, ROUND(6378.138*2*ASIN(SQRT(POW(SIN((36.09297*PI()/180-`shop_wei`*PI()/180)/2),2)+COS(36.09297*PI()/180)*COS(`shop_wei`*PI()/180)*POW(SIN((120.3743*PI()/180-`shop_jing`*PI()/180)/2),2)))*1000) AS distance from sp_shop order by distance ) as a where a.distance<=5000";  $shopInfo = M()->query($sql);  echo json_encode($shopInfo);exit;  }else{      if(session('openid')){        //獲取微信簽名包信息(用戶地理位置的獲取)填寫的配置信息中,需要寫入的東西(調用簽名包封裝的類:http://blog.csdn.net/bj123467/article/details/72910160)        $jssdk = new /Home/Model/WechatModel();        $signPackage = $jssdk->GetSignPackage();        $this->assign('signPackage', $signPackage);      $this->display();      }else{        //判斷該用戶是否存在         $model = new /Home/Model/WechatModel();         $openid_accesstoken = $model->openId();         $rst = M('user')->where(array('user_openid' => $openid_accesstoken['openid']))->find();         if($rst){          session('openid',$openid_accesstoken['openid']);          session('user_id', $rst['user_id']);          $jssdk = new /Home/Model/WechatModel();          $signPackage = $jssdk->GetSignPackage();          $this->assign('signPackage', $signPackage);          $this->display();exit;        }else{          //如果不存在獲取微信用戶的基本信息          $userInfo = $model->getOpenId($openid_accesstoken['openid'],$openid_accesstoken['access_token']);          $data = array(            'user_img' => $userInfo['headimgurl'],            'user_openid' => $userInfo['openid'],            'user_name' => filter($userInfo['nickname']),            'user_register_time' => time(),            'city' => $userInfo['province'].'-'.$userInfo['city'],          );          $id = M('user')->add($data);          session('openid', $userInfo['openid']);          session('user_id',$id);          $jssdk = new /Home/Model/WechatModel();          $signPackage = $jssdk->GetSignPackage();          $this->assign('signPackage', $signPackage);          $this->display();        }      }  }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人看片人aa| 中文字幕亚洲一区二区三区| 亚洲欧洲一区二区三区在线观看| 97视频在线观看成人| 国产福利精品av综合导导航| 久久久国产精品免费| 亚洲国产欧美一区| 91久久在线播放| 在线成人中文字幕| xxav国产精品美女主播| 久久久久久中文| 午夜免费久久久久| 亚洲欧美国产精品va在线观看| 欧美性猛交xxxx免费看漫画| 欧美成人午夜剧场免费观看| 2019中文字幕在线免费观看| 日韩高清欧美高清| 日韩在线视频中文字幕| 亚洲精品98久久久久久中文字幕| 国产免费一区二区三区香蕉精| 中文字幕在线视频日韩| 91精品国产成人www| 97人人爽人人喊人人模波多| 精品女厕一区二区三区| 久久精品视频网站| 国产精品视频26uuu| 北条麻妃一区二区在线观看| 日韩欧美亚洲综合| 97人洗澡人人免费公开视频碰碰碰| 精品国产一区久久久| 久久久亚洲天堂| 亚洲在线观看视频网站| 欧美另类精品xxxx孕妇| 91国偷自产一区二区三区的观看方式| 亚洲欧美中文日韩v在线观看| 国产91精品久久久久久久| 亚洲xxx自由成熟| 欧美精品激情在线观看| 中文字幕久精品免费视频| 欧洲精品久久久| 亚洲男人天堂手机在线| 92版电视剧仙鹤神针在线观看| 一个人看的www欧美| 精品网站999www| 国产欧美日韩丝袜精品一区| 欧美激情亚洲另类| 亚洲一区二区三区在线视频| 欧美美女15p| 1769国内精品视频在线播放| 国产精品久久久久免费a∨| 国产精品久久久久久久久| 视频一区视频二区国产精品| 成人激情黄色网| 欧美日韩国产页| 狠狠躁夜夜躁人人躁婷婷91| 7777免费精品视频| 性欧美办公室18xxxxhd| 国产精品吴梦梦| 中文字幕免费精品一区高清| 国产精品男人的天堂| 成人福利在线观看| 91成人精品网站| 欧美激情综合亚洲一二区| 欧美在线一级视频| 欧美日韩国内自拍| 亚洲自拍小视频| 欧美日韩中文字幕在线| 日韩最新免费不卡| 欧美一区二区.| 日韩欧美国产中文字幕| 国产精品91在线观看| 91精品综合久久久久久五月天| 国产91精品视频在线观看| 91青草视频久久| 国产九九精品视频| 欧美大尺度在线观看| 欧美黑人xxx| 国内久久久精品| 亚洲一区二区中文| 91po在线观看91精品国产性色| 亚洲jizzjizz日本少妇| 国产一区玩具在线观看| 不卡中文字幕av| 51ⅴ精品国产91久久久久久| 日韩中文字幕网站| 日韩小视频在线| 在线成人一区二区| 欧美xxxx做受欧美.88| 日韩av在线一区| 亚洲人成在线一二| yellow中文字幕久久| 欧美激情乱人伦| 欧美激情a在线| 亚洲人成网站色ww在线| 精品国内自产拍在线观看| 日韩的一区二区| 成人福利免费观看| 成人信息集中地欧美| 欧美日韩国产一区在线| 欧美激情啊啊啊| 欧美日韩亚洲激情| 亚洲国内精品在线| 亚洲美女性生活视频| 久久福利视频导航| 91精品视频在线| 1769国产精品| 黑人巨大精品欧美一区二区三区| 亚洲美女动态图120秒| 久久久久久成人精品| 国产精品一区二区久久久| 九九九久久久久久| 亚洲国产精品久久久久久| 亚洲欧洲成视频免费观看| 亚洲激情在线观看| 97精品视频在线播放| 成人免费看吃奶视频网站| 欧美在线一区二区三区四| 成人黄色在线播放| 国产成人精品日本亚洲| 日韩暖暖在线视频| 精品夜色国产国偷在线| 97超级碰碰人国产在线观看| 国产成人av在线| 久久国产精品亚洲| 91色在线观看| 亚洲男人av在线| 91精品国产自产91精品| 亚洲激情久久久| 日韩av一区二区在线观看| 欧美另类在线播放| 国产精品99久久99久久久二8| 亚洲国产精品久久久久| 久久久久久国产精品久久| 九九精品在线播放| 97色伦亚洲国产| 国产在线观看91精品一区| 国产欧美日韩综合精品| 成人免费淫片视频软件| 成人免费大片黄在线播放| 91香蕉嫩草神马影院在线观看| 国产精品亚洲激情| 亚洲成人av片在线观看| 国产经典一区二区| 日韩免费在线看| 欧美高清视频免费观看| 精品爽片免费看久久| 国产日韩精品视频| 国产啪精品视频网站| 中文字幕日韩综合av| 91国语精品自产拍在线观看性色| 日韩欧美国产成人| 欧美丰满少妇xxxxx| 国产精品丝袜一区二区三区| 国产精品电影网站| 久久久久国产一区二区三区| 高清视频欧美一级| 美女999久久久精品视频| 亚洲精品乱码久久久久久金桔影视| 国产精品永久免费| 日韩av中文字幕在线播放| 国内外成人免费激情在线视频网站| 最新国产成人av网站网址麻豆| 日产精品久久久一区二区福利| 国产va免费精品高清在线|