H5 移動端獲取當(dāng)前位置

3種方法:

1沐旨、H5自帶的方法,獲取經(jīng)緯度
2妖谴、通過地圖提供的JS。獲取位置
3、通過微信的API(這個需要公眾號 / 小程序)

1膝舅、通過H5自帶的獲取經(jīng)緯度的方法

優(yōu)點:
需要引用的資源較少嗡载,H5自帶的方法

缺點:
1、獲取的經(jīng)緯度偏差較大仍稀,如果需要配合地圖使用洼滚,還需要使用地圖提供的經(jīng)緯度轉(zhuǎn)換方法
2、目前大多數(shù)瀏覽器(包括手機(jī)端)技潘,已經(jīng)不支持http的請求獲取用戶地址遥巴,必須為https域名的才能發(fā)起請求。目前測試享幽,在安卓手機(jī)的微信打開的瀏覽器和IE瀏覽器還能支持獲取經(jīng)緯度

JS:

// 獲取當(dāng)前經(jīng)緯度
getLocation: function () {
    var that = this
    if (navigator.geolocation) {               
        navigator.geolocation.getCurrentPosition(function (position) {
            alert('經(jīng)度:'+ position.coords.latitude)
            alert('緯度:'+ position.coords.longitude)
        }, function (error) {
            switch (error.code) {
                case error.PERMISSION_DENIED:
                    alert('用戶拒絕對獲取地理位置的請求铲掐。')
                    break;
                case error.POSITION_UNAVAILABLE:
                    alert('位置信息是不可用的。')
                    break;
                case error.TIMEOUT:
                    alert('請求用戶地理位置超時值桩。')
                    break;
                case error.UNKNOWN_ERROR:
                    alert('未知錯誤摆霉。')
                    break;
            }
        }, { enableHighAcuracy: false });
    } else {
        alert('Geolocation is not supported by this browser.')
    }
}

2、通過地圖定位

簡單說下:
其實所有地圖的定位奔坟,也是基于H5的定位(所以很多時候引入地圖定位的時候携栋,可能會報一個警告,和H5一樣咳秉,報錯信息如上圖)刻两,在進(jìn)行的坐標(biāo)計算,那如果是不支持H5獲取定位的呢滴某?那么地圖的API則會根據(jù)IP磅摹,查詢粗略位置,定位的準(zhǔn)確度為城市級霎奢。詳情可以看下百度地圖的API户誓。

代碼部分:
引入地圖js(百度地圖)

<script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&ak=密鑰"></script>

if (navigator.geolocation) {
   var geolocation = new BMap.Geolocation();
   geolocation.getCurrentPosition(function(r){
       if(this.getStatus() == BMAP_STATUS_SUCCESS){
           alert('您的位置:'+r.point.lng+','+r.point.lat);
       }else {
           alert('failed'+this.getStatus());
       }       
   },{enableHighAccuracy: true})
} else {
   alert('Geolocation is not supported by this browser.')
}

結(jié)果:http地址下ios定位比較準(zhǔn)確,Android 定位在地級市幕侠。
解決:http 換成 https

3帝美、微信提供的API (這個必須有公眾號才能實現(xiàn))

1、確保公眾號的配置一切正常(合法域名晤硕、token悼潭、回調(diào)地址、JS合法域名…)

2舞箍、引入相關(guān)的JS文件

<script src="http://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>

3舰褪、獲取簽名 => 初始化需要請求的API => 獲取定位

// 這里的ajax請求,是為了獲取簽名(都是后端的工作了疏橄。根據(jù)文檔生成簽名等)
  $.ajax({
    type: "post",
    url: "你自己的生成簽名的地址",
    data: {
      // 這里好像是需要回調(diào)的地址
      'askUrl': encodeURIComponent(location.href.split('#')[0])
    },
    dataType: "json",
    success: function (data) {
     
     // 生成簽名后占拍,開始使用微信的  wx.config 略就。其中jsApiList就是我們要用的API的列表,因為只需要取經(jīng)緯度晃酒,所以用getLocation就可以了
      wx.config({
        debug: false, // 開啟調(diào)試模式,調(diào)用的所有api的返回值會在客戶端alert出來表牢,若要查看傳入的參數(shù),可以在pc端打開贝次,參數(shù)信息會通過log打出崔兴,僅在pc端時才會打印。  
        appId: data.appId, // 必填蛔翅,公眾號的唯一標(biāo)識
        timestamp: data.timestamp, // 必填敲茄,生成簽名的時間戳
        nonceStr: data.nonceStr, // 必填,生成簽名的隨機(jī)串
        signature: data.signature, // 必填搁宾,簽名,見附錄1
        jsApiList: [
          'getLocation'
        ]
      });
      wx.error(function (res) {
        alert("失斁笥住:"+res.msg");
      });
     
    // wx.config 檢測無誤后盖腿,會進(jìn)入到  ready 方法 。 注意type參數(shù)损同。微信多數(shù)的坐標(biāo)體系都為gcj02
      wx.ready(function () {
        wx.getLocation({
          type: "gcj02",
          success: function (res) {
            latitude = res.latitude;
            longitude = res.longitude;
          },
          cancel: function (res) {
             alert("定位失敗翩腐,權(quán)限不足")
          },
        });
      });
    }
  });

總結(jié):目前的H5獲取定位,都需要HTTPS的支持膏燃。而微信的api則需要公眾號才行茂卦,各有優(yōu)缺點。更多詳細(xì)的內(nèi)容组哩,可以查看相關(guān)的文檔

參考來源

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末等龙,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子伶贰,更是在濱河造成了極大的恐慌蛛砰,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件黍衙,死亡現(xiàn)場離奇詭異泥畅,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)琅翻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進(jìn)店門位仁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人方椎,你說我怎么就攤上這事聂抢。” “怎么了棠众?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵涛浙,是天一觀的道長。 經(jīng)常有香客問我,道長轿亮,這世上最難降的妖魔是什么疮薇? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮我注,結(jié)果婚禮上按咒,老公的妹妹穿的比我還像新娘。我一直安慰自己但骨,他們只是感情好励七,可當(dāng)我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著奔缠,像睡著了一般掠抬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上校哎,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天两波,我揣著相機(jī)與錄音,去河邊找鬼闷哆。 笑死腰奋,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的抱怔。 我是一名探鬼主播劣坊,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼屈留!你這毒婦竟也來了局冰?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤灌危,失蹤者是張志新(化名)和其女友劉穎锐想,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體乍狐,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡赠摇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了浅蚪。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片藕帜。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖惜傲,靈堂內(nèi)的尸體忽然破棺而出洽故,到底是詐尸還是另有隱情,我是刑警寧澤盗誊,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布时甚,位于F島的核電站隘弊,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏荒适。R本人自食惡果不足惜梨熙,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望刀诬。 院中可真熱鬧咽扇,春花似錦、人聲如沸陕壹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽糠馆。三九已至嘶伟,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間又碌,已是汗流浹背九昧。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留赠橙,地道東北人耽装。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓愤炸,卻偏偏與公主長得像期揪,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子规个,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內(nèi)容