腾讯地图H5位置获取

腾讯地图H5位置获取

  1. 直接ctrl+c 就行了
  2. 直接打开
<!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">
   <style>
       * {
           margin: 0;
           padding: 0;
           border: 0;
       }
       body {
           position: absolute;
           width: 100%;
           height: 100%;
           text-align: center;
       }
       #pos-area {
           background-color: #009DDC;
           margin-bottom: 10px;
           width: 100%;
           overflow: scroll;
           text-align: left;
           color: white;
       }
       #demo {
           padding: 8px;
           font-size: small;
       }
       #btn-area {
           height: 100px;
       }
       button {
           margin-bottom: 10px;
           padding: 12px 8px;
           width: 42%;
           border-radius: 8px;
           background-color: #009DDC;
           color: white;
       }
   </style>
   <script type="text/javascript" src="https://3gimg.qq.com/lightmap/components/geolocation/geolocation.min.js"></script>
</head>
<body>
   <div id="pos-area">
       <p id="demo">点击下面的按钮,获得对应信息:<br /></p>
   </div>

   <div id="btn-area">
       <button onClick="geolocation.getLocation(showPosition, showErr, options)">获取精确定位信息</button>
       <button onClick="geolocation.getIpLocation(showPosition, showErr)">获取粗糙定位信息</button>
       <button onClick="showWatchPosition()">开始监听位置</button>
       <button onClick="showClearWatch()">停止监听位置</button>
   </div>
   <script type="text/JavaScript">
       var geolocation = new qq.maps.Geolocation("OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77", "myapp");

       document.getElementById("pos-area").style.height = (document.body.clientHeight - 110) + 'px';

       var positionNum = 0;
       var options = {timeout: 8000};
       function showPosition(position) {
           positionNum ++;
           document.getElementById("demo").innerHTML += "序号:" + positionNum;
           document.getElementById("demo").appendChild(document.createElement('pre')).innerHTML = JSON.stringify(position, null, 4);
           document.getElementById("pos-area").scrollTop = document.getElementById("pos-area").scrollHeight;
       };

       function showErr() {
           positionNum ++;
           document.getElementById("demo").innerHTML += "序号:" + positionNum;
           document.getElementById("demo").appendChild(document.createElement('p')).innerHTML = "定位失败!";
           document.getElementById("pos-area").scrollTop = document.getElementById("pos-area").scrollHeight;
       };

       function showWatchPosition() {
           document.getElementById("demo").innerHTML += "开始监听位置!<br /><br />";
           geolocation.watchPosition(showPosition);
           document.getElementById("pos-area").scrollTop = document.getElementById("pos-area").scrollHeight;
       };

       function showClearWatch() {
           geolocation.clearWatch();
           document.getElementById("demo").innerHTML += "停止监听位置!<br /><br />";
           document.getElementById("pos-area").scrollTop = document.getElementById("pos-area").scrollHeight;
       };
   </script>
</body>
</html>
  1. 还有一份
<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
   <title>Geolocation Components Demo - zoom effect</title>
   <meta name="viewport" content="width=device-width,initial-scale=1,
   minimum-scale=1,maximum-scale=1,user-scalable=no">
   <style>
       * {margin: 0; padding: 0; border: 0;}
       body {
           position: absolute;
           width: 100%;
           height: 100%;
       }
       #geoPage, #markPage {
           position: relative;
       }
   </style>
</head>
<body>
   <!--  通过 iframe 嵌入前端定位组件,此处没有隐藏定位组件,使用了定位组件的在定位中视觉特效  -->
   <iframe id="geoPage" width="100%" height="30%" frameborder=0 scrolling="no"
   src="https://apis.map.qq.com/tools/geolocation?key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77&referer=myapp&effect=zoom"></iframe>

   <script type="text/JavaScript">
       var loc;
       var isMapInit = false;
       //监听定位组件的message事件
       window.addEventListener('message', function(event) {
           loc = event.data; // 接收位置信息
           console.log('location', loc);

           if(loc  && loc.module == 'geolocation') { //定位成功,防止其他应用也会向该页面post信息,需判断module是否为'geolocation'
               var markUrl = 'https://apis.map.qq.com/tools/poimarker' +
               '?marker=coord:' + loc.lat + ',' + loc.lng +
               ';title:我的位置;addr:' + (loc.addr || loc.city) +
               '&key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77&referer=myapp';
               //给位置展示组件赋值
               document.getElementById('markPage').src = markUrl;
           } else { //定位组件在定位失败后,也会触发message, event.data为null
               alert('定位失败');
           }

           /* 另一个使用方式
           if (!isMapInit && !loc) { //首次定位成功,创建地图
               isMapInit = true;
               createMap(event.data);
           } else if (event.data) { //地图已经创建,再收到新的位置信息后更新地图中心点
               updateMapCenter(event.data);
           }
           */
       }, false);
       //为防止定位组件在message事件监听前已经触发定位成功事件,在此处显示请求一次位置信息
       document.getElementById("geoPage").contentWindow.postMessage('getLocation', '*');

       //设置6s超时,防止定位组件长时间获取位置信息未响应
       setTimeout(function() {
           if(!loc) {
               //主动与前端定位组件通信(可选),获取粗糙的IP定位结果
           document.getElementById("geoPage")
               .contentWindow.postMessage('getLocation.robust', '*');
           }
       }, 6000); //6s为推荐值,业务调用方可根据自己的需求设置改时间,不建议太短
   </script>

   <!-- 接收到位置信息后 通过 iframe 嵌入位置标注组件 -->
   <iframe id="markPage" width="100%" height="70%" frameborder=0 scrolling="no" src=""></iframe>
</body>
</html>



评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值