利用JavaScript獲取用戶(hù)IP屬地方法詳解
寫(xiě)在前面
想要像一些平臺(tái)那樣顯示用戶(hù)的位置信息,例如某省市那樣。那么這是如何做到的, 據(jù)說(shuō)這個(gè)位置信息的準(zhǔn)確性在通信網(wǎng)絡(luò)運(yùn)營(yíng)商那里?先不管,先實(shí)踐嘗試下能不能獲取。
嘗試一:navigator.geolocation
嘗試了使用 navigator.geolocation,但未能成功拿到信息。
getGeolocation(){
if ('geolocation' in navigator) {
/* 地理位置服務(wù)可用 */
console.log('地理位置服務(wù)可用')
navigator.geolocation.getCurrentPosition(function (position) {
console.dir('回調(diào)成功')
console.dir(position) // 沒(méi)有輸出
console.dir(position.coords.latitude, position.coords.longitude)
}, function (error) {
console.error(error)
})
} else {
/* 地理位置服務(wù)不可用 */
console.error('地理位置服務(wù)可用')
}
}嘗試二:sohu 的接口
嘗試使用http://pv.sohu.com/cityjson?ie=utf-8獲取用戶(hù)位置信息, 成功獲取到信息,信息樣本如下:
{"cip": "14.11.11.11", "cid": "440000", "cname": "廣東省"}
// 需要做跨域處理
getIpAndAddressSohu(){
// config 是配置對(duì)象,可按需設(shè)置,例如 responseType,headers 中設(shè)置 token 等
const config = {
headers: {
Accept: 'application/json',
'Content-Type': 'application/json;charset=UTF-8',
},
}
axios.get('/apiSohu/cityjson?ie=utf-8', config).then(res => {
console.log(res.data) // var returnCitySN = {"cip": "14.23.44.50", "cid": "440000", "cname": "廣東省"};
const info = res.data.substring(19, res.data.length - 1)
console.log(info) // {"cip": "14.23.44.50", "cid": "440000", "cname": "廣東省"}
this.ip = JSON.parse(info).cip
this.address = JSON.parse(info).cname
})
}調(diào)試的時(shí)候,做了跨域處理。
proxy: {
'/apiSohu': {
target: 'http://pv.sohu.com/', // localhost=>target
changeOrigin: true,
pathRewrite: {
'/apiSohu': '/'
}
},
}下面是一張獲取到位置信息的效果圖:

嘗試三:百度地圖的接口
需要先引入百度地圖依賴(lài),有一個(gè)參數(shù) ak 需要注意,這需要像管理方申請(qǐng)。例如下方這樣
<script src="https://api.map.baidu.com/api?v=2.0&ak=3ufnnh6aD5CST"></script>
getLocation() { /*獲取當(dāng)前位置(瀏覽器定位)*/
const $this = this;
var geolocation = new BMap.Geolocation();//返回用戶(hù)當(dāng)前的位置
geolocation.getCurrentPosition(function (r) {
if (this.getStatus() == BMAP_STATUS_SUCCESS) {
$this.city = r.address.city;
console.log(r.address) // {city: '廣州市', city_code: 0, district: '', province: '廣東省', street: '', …}
}
});
}function getLocationBaiduIp(){/*獲取用戶(hù)當(dāng)前位置(ip定位)*/
function myFun(result){
const cityName = result.name;
console.log(result) // {center: O, level: 12, name: '廣州市', code: 257}
}
var myCity = new BMap.LocalCity();
myCity.get(myFun);
}成功用戶(hù)的省市位置,以及經(jīng)緯度坐標(biāo),但會(huì)先彈窗征求用戶(hù)意見(jiàn)。


寫(xiě)在后面
嘗試結(jié)果不太理想,sohu 的接口內(nèi)部是咋實(shí)現(xiàn)的,這似乎沒(méi)有彈起像下面那樣的征詢(xún)用戶(hù)意見(jiàn)的提示。

而在 navigator.geolocation 和 BMap.Geolocation() 中是彈起了的。
用別人的接口總歸是沒(méi)多大意思,也不知道不用征求用戶(hù)意見(jiàn)是咋實(shí)現(xiàn)的。
經(jīng)實(shí)測(cè) sohu 的接口和 new BMap.Geolocation() 都可以拿到用戶(hù)的位置信息(省市、經(jīng)緯度等)。
到此這篇關(guān)于利用JavaScript獲取用戶(hù)IP屬地方法詳解的文章就介紹到這了,更多相關(guān)JavaScript獲取用戶(hù)IP屬地內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
javascript小組件 原生table排序表格腳本(兼容ie firefox opera chrome)
javascript小組件 原生table排序表格腳本 兼容ie firefox opera chrome,需要的朋友可以參考下2012-07-07
利用不到200行代碼寫(xiě)一款屬于你自己的js類(lèi)庫(kù)
這篇文章主要給大家介紹了如何利用不到200行代碼寫(xiě)一款屬于你自己的js類(lèi)庫(kù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用js具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
JavaScript正則表達(dá)式中g(shù)標(biāo)志詳解
正則的思想都是一樣的,但是具體的寫(xiě)法會(huì)有所不同,下面這篇文章主要給大家介紹了關(guān)于JavaScript正則表達(dá)式中g(shù)標(biāo)志的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-03-03
微信小程序地圖繪制線段并且測(cè)量(實(shí)例代碼)
這篇文章主要介紹了微信小程序地圖繪制線段并且測(cè)量,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-01-01
JavaScript中toLocaleString()和toString()的區(qū)別實(shí)例分析
這篇文章主要介紹了JavaScript中toLocaleString()和toString()的區(qū)別,結(jié)合實(shí)例形式對(duì)比分析了toLocaleString()和toString()針對(duì)字符串、數(shù)組與日期操作過(guò)程中的區(qū)別與使用技巧,需要的朋友可以參考下2018-08-08
js實(shí)現(xiàn)最短的XML格式化工具實(shí)例
這篇文章主要介紹了js實(shí)現(xiàn)最短的XML格式化工具,實(shí)例分析了基于jquery-latest.js實(shí)現(xiàn)XML代碼格式化的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03
微信小程序web-view不支持打開(kāi)非業(yè)務(wù)域名https?//XXXX?請(qǐng)重新配置的解決辦法
小程序現(xiàn)在日漸成熟,功能也越來(lái)越強(qiáng)大,我們今天來(lái)一起看看小程序跳轉(zhuǎn)H5頁(yè)面的問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于微信小程序web-view不支持打開(kāi)非業(yè)務(wù)域名https?//XXXX?請(qǐng)重新配置的解決辦法,需要的朋友可以參考下2022-08-08
Bootstrap Table實(shí)現(xiàn)定時(shí)刷新數(shù)據(jù)的方法
這篇文章主要介紹了Bootstrap Table實(shí)現(xiàn)定時(shí)刷新數(shù)據(jù)的方法,在這里小編比較推薦使用第二種方法,需要的朋友參考下吧2018-08-08

