HTML5-地理位置接口

HTML5地理位置接口

简单来说这个接口的使用就是两个函数

  • getCurrentPosition(successCallback, errorCallback, options) 一次更新位置
  • watchPosition(successCallback, errorCallback, options) 重复更新位置
    两者的区别在于,前者一次性获得,而后者是一个函数监听,位置发生变化就会调用函数,并返回一个watchId,使用clearWatch(watchID)就能终止监听

successcallback

该回调函数会获得一个position,一些特性将会保存在corrds中

function updateLocation(position) {
    latitude = position.coords.latitude; //纬度
    longitude = position.coords.longitude; //经度
    var accuracy = position.coords.accuracy; //误差

    var altitude = position.coords.altitude; //海拔高度
    var altitudeAccuracy = position.coords.altitudeAccuracy; //海拔高度的准确度
    var heading = position.coords.heading; //前进方向
    var speed = position.coords.speed; //前进速度

    var timestamp = position.timestamp; // 调用时间戳
}

errosrCallback

发生错误时返回将获得必要的参数

//出错调用函数
function handleLocationError(error) {
    switch (error.code){
        case 0:
            $('#error>span').html(error.message);
            break;
        case 1:
            $('#error>span').html(error.message);
            break;
        case 2:
            $('#error>span').html(error.message);
            break;
        case 3:
            $('#error>span').html(error.message);
            break;
        default:
            $('#error>span').html('未知错误');
            break;
    }
}

options

navigator.geolocation的行为进行调节,使用对象的形式进行使用

对象属性描述
enableHighAccuracy是否启用高精度模式
timeout设置超时时间
maximumAge间隔重新获取时间

有毒的百度地图

以下是百度地图接口的调用,但是有毒的百度建议我么在前端调用时使用前端接口,后端调用使用后端接口,但是申请的前端接口根本无法使用,在前端使用后端接口却正常

<style>
        html{height:100%}
        body{height:100%;margin:0px;padding:0px}
        #container{height:100%}
    </style>
</head>
<body>
<div id="container"></div>
</body>
<script>
    var api = navigator.geolocation;
    var latitude,longitude;

    //更新用户地理位置信息
    function updateLocation(position) {
        latitude = position.coords.latitude; //纬度
        longitude = position.coords.longitude; //经度
        var accuracy = position.coords.accuracy; //误差

        var altitude = position.coords.altitude; //海拔高度
        var altitudeAccuracy = position.coords.altitudeAccuracy; //海拔高度的准确度
        var heading = position.coords.heading; //前进方向
        var speed = position.coords.speed; //前进速度

        var timestamp = position.timestamp;

       loadScript();
    }

    //出错调用函数
    function handleLocationError(error) {
        switch (error.code){
            case 0:
                $('#error>span').html(error.message);
                break;
            case 1:
                $('#error>span').html(error.message);
                break;
            case 2:
                $('#error>span').html(error.message);
                break;
            case 3:
                $('#error>span').html(error.message);
                break;
            default:
                $('#error>span').html('未知错误');
                break;
        }
    }

    api.watchPosition(updateLocation, handleLocationError,{enableHighAccuracy: true, timeout: 10000});

    //使用百度的接口
    function initialize() {
        var map = new BMap.Map("container");          // 创建地图实例
        var point = new BMap.Point(longitude, latitude);  // 创建点坐标
        map.centerAndZoom(point, 15);                 // 初始化地图,设置中心点坐标和地图级别
    }

    function loadScript() {


        var script = document.createElement("script");
        script.src = "http://api.map.baidu.com/api?v=2.0&ak=&callback=initialize";//此为v2.0版本的引用方式
        document.body.appendChild(script);
    }
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值