腾讯地图-通过定位显示当前位置地图

<!DOCTYPE html>
<html>

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>腾讯地图-通过定位显示当前位置地图</title>
    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no">
</head>

<body>
    <h3 style="color: red;text-align: left;">在微信中必须是https才能定位,不然可能会定位失败!!!</h3>
    <div class="map" style="float: left;">
        <script charset="utf-8"
            src="https://map.qq.com/api/gljs?v=1.exp&key=xx"></script>
        <div id="container" style="height: 400px;width: 400px;margin: auto;"></div>
    </div>
    <div class="location" style="float: left;margin-left: 20px;">
        <script type="text/javascript"
            src="https://apis.map.qq.com/tools/geolocation/min?key=xx&referer=myapp"></script>
        <div id="pos-area">
            <p id="demo">点击下面的按钮,获得对应信息:<br /></p>
        </div>
        <button onclick="showWatchPosition()">开始监听位置</button>
        <button onclick="showClearWatch()">停止监听位置</button>
    </div>

    <script type="text/JavaScript">
        var geolocation = new qq.maps.Geolocation();  
        var options = {timeout: 9000,failTipFlag:true};
        var positionNum = 0;
 
        getCurLocation();

        //定位方法
        function getCurLocation() {
            geolocation.getLocation(showPosition, showErr, options);
        }
        
        //定位成功执行方法
        function showPosition(position) {
            positionNum ++;
            document.getElementById("demo").innerHTML += "序号:" + positionNum;
            document.getElementById("demo").appendChild(document.createElement('pre')).innerHTML = JSON.stringify(position, null, 4); 
            makeMap(position.lat,position.lng)
        };
 
        //定位失败执行方法
        function showErr() {
            positionNum ++;
            document.getElementById("demo").innerHTML += "序号:" + positionNum;
            document.getElementById("demo").appendChild(document.createElement('p')).innerHTML = "定位失败!"; 
            getCurLocation();
        };
 
        function showWatchPosition() {
            document.getElementById("demo").innerHTML += "开始监听位置!<br /><br />";
            geolocation.watchPosition(showPosition); 
        };
 
        function showClearWatch() {
            geolocation.clearWatch();
            document.getElementById("demo").innerHTML += "停止监听位置!<br /><br />"; 
        };
    </script>

    <script type="text/javascript">
        var map;
        function makeMap(lat, lng) {
            //如果存在地图,则销毁之前的地图
            if (map) {
                map.destroy();
            }
            var center = new TMap.LatLng(lat, lng);
            // 初始化地图
            //MapOptions文档地址:https://lbs.qq.com/webApi/javascriptGL/glDoc/docIndexMap#2
            map = new TMap.Map('container', {
                zoom: 15, // 设置地图缩放
                center: center, // 设置地图中心点座标, 
                draggable: false,//是否支持拖拽移动地图
                scrollable: false,//是否支持鼠标滚轮缩放地图
                showControl: false,//是否显示地图上的控件
                doubleClickZoom: false,//是否支持双击缩放地图
            });

            // MultiMarker文档地址:https://lbs.qq.com/webApi/javascriptGL/glDoc/glDocMarker
            var marker = new TMap.MultiMarker({
                map: map,
                styles: {
                    // 点标记样式
                    marker: new TMap.MarkerStyle({
                        width: 20, // 样式宽
                        height: 30, // 样式高
                        anchor: { x: 10, y: 30 }, // 描点位置
                    }),
                },
                geometries: [
                    // 点标记数据数组
                    {
                        // 标记位置(纬度,经度,高度)
                        position: center,
                        id: 'marker',
                    },
                ],
            });
        }
    </script>
</body>

</html>

 

效果图

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章