如何利用JS获取用户位置ip属地,方法是什么
Admin 2022-08-11 群英技术资讯 314 次浏览
想要像一些平台那样显示用户的位置信息,例如某省市那样。那么这是如何做到的, 据说这个位置信息的准确性在通信网络运营商那里?先不管,先实践尝试下能不能获取。
尝试了使用 navigator.geolocation,但未能成功拿到信息。
getGeolocation(){ if ('geolocation' in navigator) { /* 地理位置服务可用 */ console.log('地理位置服务可用') navigator.geolocation.getCurrentPosition(function (position) { console.dir('回调成功') console.dir(position) // 没有输出 console.dir(position.coords.latitude, position.coords.longitude) }, function (error) { console.error(error) }) } else { /* 地理位置服务不可用 */ console.error('地理位置服务可用') } }
尝试使用 pv.sohu.com/cityjson?ie… 获取用户位置信息, 成功获取到信息,信息样本如下:
{"cip": "14.11.11.11", "cid": "440000", "cname": "广东省"}
// 需要做跨域处理 getIpAndAddressSohu(){ // config 是配置对象,可按需设置,例如 responseType,headers 中设置 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.11.11.11", "cid": "440000", "cname": "广东省"}; const info = res.data.substring(19, res.data.length - 1) console.log(info) // {"cip": "14.11.11.11", "cid": "440000", "cname": "广东省"} this.ip = JSON.parse(info).cip this.address = JSON.parse(info).cname }) }
调试的时候,做了跨域处理。
proxy: { '/apiSohu': { target: 'http://pv.sohu.com/', // localhost=>target changeOrigin: true, pathRewrite: { '/apiSohu': '/' } }, }
下面是一张获取到位置信息的效果图:
需要先引入百度地图依赖,有一个参数 ak 需要注意,这需要像管理方申请。例如下方这样
<script src="https://api.map.baidu.com/api?v=2.0&ak=3ufnnh6aD5CST"></script>
getLocation() { /*获取当前位置(浏览器定位)*/ const $this = this; var geolocation = new BMap.Geolocation();//返回用户当前的位置 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(){/*获取用户当前位置(ip定位)*/ function myFun(result){ const cityName = result.name; console.log(result) // {center: O, level: 12, name: '广州市', code: 277} } var myCity = new BMap.LocalCity(); myCity.get(myFun); }
成功用户的省市位置,以及经纬度坐标,但会先弹窗征求用户意见。
尝试结果不太理想,sohu 的接口内部是咋实现的,这似乎没有弹起像下面那样的征询用户意见的提示。
而在 navigator.geolocation 、 BMap.Geolocation() 和 BMap.LocalCity() 中是弹起了的。
用别人的接口总归是没多大意思,也不知道不用征求用户意见是咋实现的。
经实测 sohu 的接口、BMap.Geolocation() 和 BMap.LocalCity() 都可以拿到用户的位置信息(省市、经纬度等)。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
本篇文章给大家带来了关于javascript的相关知识,其中主要介绍了关于JavaScript的push()、pop()、unshift()、shift() 方法的使用,下面一起来看一下,希望对大家有帮助。
本篇文章给大家带来了关于javascript的相关知识,其中主要介绍了JavaScript变量or循环中的var和let详解,文章围绕主题展开详细的内容介绍,具有一定的参考价值,下面一起来看一下,希望对大家有帮助。
vue跟小程序的区别:1、vue一般会在created或者mounted中请求数据,而在小程序会在onLoad或onShow中请求数据;2、vue动态绑定一个变量的值为元素的某个属性的时候,会在变量前面加上冒号,而小程序绑定某个变量的值为元素属性时,会用两个大括号括起来;3、vue用“v-if”和“v-show”控制元素的显示和隐藏,小程序用“wx-if”和hidden控制。
我们平常在浏览一些网站的时候,经常能看到选项卡展示功能,其好处就是节约页面空间,我们只要点击不同的区域,就能展现不同的内容,这样能比较合理的展示内容。那么JS是怎样实现选项卡插件的呢?
这篇文章我们来了解JS中如何隐藏html标签,一些朋友想要隐藏html标签,那么有什么方法可以实现呢?下文给大家分享了一个示例,文中的示例代码介绍得很详细,有需要的朋友可以参考,接下来就跟随小编一起了解看看吧。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008