H5的使用

直接利用浏览器获取地理信息

<script>
    var x=document.getElementById("demo");
    function getLocation()
    {
        if (navigator.geolocation)
        {
            navigator.geolocation.getCurrentPosition(showPosition,showError);
        }
        else
        {
            x.innerHTML="该浏览器不支持定位。";
        }
    }
    function showPosition(position)
    {
        x.innerHTML="纬度: " + position.coords.latitude +
            "<br>经度: " + position.coords.longitude;
    }
    function showError(error)
    {
        switch(error.code)
        {
            case error.PERMISSION_DENIED:
                x.innerHTML="用户拒绝对获取地理位置的请求。"
                break;
            case error.POSITION_UNAVAILABLE:
                x.innerHTML="位置信息是不可用的。"
                break;
            case error.TIMEOUT:
                x.innerHTML="请求用户地理位置超时。"
                break;
            case error.UNKNOWN_ERROR:
                x.innerHTML="未知错误。"
                break;
        }
    }
</script>
  1. 对于安卓手机可以正常访问
  2. 对于苹果手机要求,必须网站为https
  3. 阿里云的SSL证书购买,可以使用免费DV SSL证书!
  4. SSL证书的在Apache中的安装方法

利用百度地图获取当前位置:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
    <title>Title</title>
    <script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&ak=Oo4RtSpIOGQ8i1nlsVwdvRlIGsZamOzv"></script>
</head>
<body>
    <div id="mymap" style="width: 900px;height: 500px"></div>
    <script>
        //实例化地图对象,并指定渲染目标
        var map = new BMap.Map("mymap");
        //位置对象
        var point = new BMap.Point(116.404, 39.915);
        //把地图进行渲染,指定地图级别(值大越精细)
        map.centerAndZoom(point,12);
        //利用point生成marker,并利用其标出自身位置
        var marker = new BMap.Marker(point);
        map.addOverlay(marker);


        //获取设备的地理坐标
        let geolocation = new BMap.Geolocation();
        // 开启SDK辅助定位(不是必须,可以直接利用浏览器权限开启服务)
        geolocation.enableSDKLocation();
        geolocation.getCurrentPosition(function (r) {
            console.log(r)//r对象已经包含了足够多的信息

            //移动地图,到自身位置
            map.panTo(r.point);
            //利用point生成marker,并利用其标出自身位置
            marker = new BMap.Marker(r.point);
            map.addOverlay(marker);

            //可以使用GeoCoder对象,进一步解析成为人性化数据
            let geoCoder=new  BMap.Geocoder();
            geoCoder.getLocation(r.point,addrInfo=>console.log(addrInfo.address))
        });

    </script>
</body>
</html>
  1. 此方法并不需要网站是https协议,较为方便!
  2. 但需要注册百度的开发者帐号,并获取AccessKey 百度JS-API
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容