DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> JavaScript微信定位功能實現方法
JavaScript微信定位功能實現方法
編輯:關於JavaScript     

分享下微信是如何定位的:

本文主要講解如何利用微信定位,如何將定位到的經緯度轉換為百度地圖對應的經緯度,以及處理定位失敗、取消及錯誤時的默認做法。

//獲取地理位置信息start
//封裝成一個函數
 function getPosition() {
 //用ajax請求
  $.ajax({
   url: "/wechat/jssdk",//請求地址
   type: 'post',//post請求
   dataType: 'json',
   contentType: "application/x-www-form-urlencoded; charset=utf-8",
   data: {
    'url': location.href.split('#')[0]//將第一個#號前的地址傳遞
   },
//請求成功的函數
   success: function (data) {
    wx.config({
     // debug: true,
     appId: data.data.appId,
     timestamp: data.data.timestamp,
     nonceStr: data.data.nonceStr,
     signature: data.data.signature,
     jsApiList: ['checkJsApi', 'getLocation']
    });
    wx.ready(function () {
     wx.getLocation({
     //獲得定位成功
      success: function (res) {
      //這是微信返回的真正經緯度
       var oldLat = res.latitude; // 緯度,浮點數,范圍為90 ~ -90
       var oldLng = res.longitude; // 經度,浮點數,范圍為180 ~ -180。
       /*下面是為了將獲得的真正經緯度轉換為對應的百度經緯度,因為是利用百度地圖的經緯度去查詢數據的,數據庫中存的也是百度的經緯度*/
       //創建一個百度地圖的點
       var customerPoint = new BMap.Point(oldLng, oldLat);
       //
       var convertor = new BMap.Convertor();

       var pointArr = [];//創建一個數組
       pointArr.push(customerPoint);//將剛才的點放進去
       convertor.translate(pointArr, 1, 5, initMap); //轉換坐標
       function initMap(data) {
        if (data.status === 0) {//轉換成功
         var point = data.points[0];//得到後的點
         var lng = point.lng;//獲得轉換後的經度
         var lat = point.lat;//獲得轉換後的緯度
         toDoFunction(lng, lat);//將經緯度傳入到要運用的函數中
        } else {
        //下面兩行是默認定位到西湖的經緯度
         lng = 120.141375;
         lat = 30.257806;
         toDoFunction(lng, lat);//將經緯度傳入到要運用的函數中
        }
       }

      },
      //取消定位
      cancel: function () {
      //下面兩行是默認定位到西湖的經緯度
       var lng = 120.141375;
       var lat = 30.257806;
       toDoFunction(lng, lat);//將經緯度傳入到要運用的函數中
      },
      //定位失敗
      fail: function () {
      //下面兩行是默認定位到西湖的經緯度
       var lng = 120.141375;
       var lat = 30.257806;
       toDoFunction(lng, lat);//將經緯度傳入到要運用的函數中
      }

     });
     //定位發生錯誤
     wx.error(function () {
     //下面兩行是默認定位到西湖的經緯度
      var lng = 120.141375;
      var lat = 30.257806;
      toDoFunction(lng, lat);//將經緯度傳入到要運用的函數中
     });

    });
   }
  });
 }

以上代碼,如果可以定位到就用定位到的真正的經緯度,再轉換成百度地圖對應的經緯度,如果定位失敗或者是點擊取消或者發生錯誤,則默認定位到西湖的經緯度。

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

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved