JavaScript获取地理位置

众所周知(雾),浏览器确定你的位置的方法有以下四种:

  1. GPS
  2. IP address
  3. 蜂窝电话
  4. Wi-Fi
    这里暂且不谈各种方式的优缺点,但很多小伙伴可能会疑惑:
    这么多方式,浏览器到底该采取哪种方式来确定我的位置呢?
    其实不必疑惑,浏览器会根据情况自行选择,通常顺序是:
    蜂窝电话 -> Wi-Fi或GPS.
    IP地址在城市中会更加精确
    虽然没有了解这些的必要,但多知道一点总没坏处。
    OK,话不多说,我们切入正题。
    ——————————分割线————————————————
    我们先建立一个基本的html页面:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Where am I?</title>
    <script src="./myLoc.js"></script>
</head>
<body>
    <div id="location">
    	<!--注意,id为"location"-->
        Your location will go here.
    </div>
</body>
</html>

接下来创建一个myLoc.js文件,存放我们的js代码
在这里插入图片描述
首先是一个getMyLocation函数

function getMyLocation() {  
    if (navigator.geolocation) {
        //检测浏览器是否支持地理定位API
        navigator.geolocation.getCurrentPosition(displayLocation, displayError);
        //navigator.geolocation属性是一个对象,其中包含整个地理定位API,这个API支持的主要方法是getCurrentPosition
        //getCurrentPosition的工作是获取浏览器位置,有三个参数,其中两个是可选的
        //参数:successHandler, errorHandler, options
        //successHandler是一个函数,如果浏览器能成功确定位置就会调用这个函数(必选)
        //errorHandler,字面意思,如果浏览器无法确定位置就会调用这个函数(可选)
        //options,允许定制地理定位方法
    } else {
        alert("Oops, no geolocation support.");
    }
}

window.onload = getMyLocation;

这函数的主要内容都在注释中,建议先把注释看完再接着往下食用~

我们接下来的工作,就是编写当浏览器成功获取位置之后所调用的函数:

function displayLocation(position) { 
    /*当getCurrent成功调用displayLocation时,会向此函数传入一个position对象
        这个position对象包含有关浏览器位置的信息,包括一个有纬度和经度的coordinates对象*/ 
    var latitude = position.coords.latitude; //得到纬度
    //coords是一个属性,其中包含对coordinates对象的一个引用
    var longitude = position.coords.longitude; //得到经度

    var div = document.getElementById("location");
    div.innerHTML = "You're at Latitude:"+latitude+", Longtitude:"+longitude;
}

这样子,不出意外的话打开浏览器显示的就会是当前所处的经纬度了。
还有一个需要注意的地方,Chrome浏览器获取地理位置是需要翻墙的;我最开始写完之后死活无法加载我的位置,盯着代码看了好久…

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值