zoukankan      html  css  js  c++  java
  • 微信端地图相关技术

    1,打卡签到 —— 500米范围限制

        a,getLocation 获取gcj02 == 腾讯系坐标,可以直接用来打开腾讯地图 (获取wgs84则需转换)
        b,百度坐标转腾讯坐标,引入链接配置

            <script charset="utf-8" src="http://map.qq.com/api/js?v=2.exp&libraries=convertor"></script><!-- 百度坐标转化为腾讯系坐标 -->    

            qq.maps.convertor.translate(new qq.maps.LatLng(vm.list.activityPlacePoilat,vm.list.activityPlacePoilng), 3, function(res){
                var latlng = res[0];
               var latitudeFromPC = latlng.lat;
               var longitudeFromPC = latlng.lng;
            })

      具体参数内容,详情:https://lbs.qq.com/javascript_v2/doc/convertor.html ;

        c,转换原理的理解

         WGS-84:是国际标准,GPS坐标(Google Earth使用、或者GPS模块)(GPS全球卫星定位系统使用的坐标系)

        GCJ-02:中国坐标偏移标准,Google Map、高德、腾讯使用(由WGS84坐标系经加密后的坐标系)

        BD-09:百度坐标偏移标准,Baidu Map使用(在GCJ02坐标系基础上再次加密。其中bd09ll表示百度经纬度坐标,bd09mc表示百度墨卡托米制坐标)

        d,500米经纬度差 大约 500÷1000÷40000×360=0.0045度   复验百度坐标地图观察

    2、腾讯地图api——逆解析

      a)  获取guj02坐标系     b)  申请key,请求转换    如下:

      var data={
          location : locationGCJ02.latitude + ',' + locationGCJ02.longitude,
                 /*换成自己申请的key*/
          key:"6EBBZ-S5SW6-FZ5SV-MBBXH-5TZPE-X4BN7",
          get_poi:0
      };
      var url="https://apis.map.qq.com/ws/geocoder/v1/?";
      data.output="jsonp";
      $.ajax({
        type:"get",
        dataType:'jsonp',
        data:data,
        jsonp:"callback",
        jsonpCallback:"QQmap",
        url:url,
        success:function(res){
          if(res.status==0){
            var toStr = JSON.stringify(res);
            alert(toStr);
          }
        },
        error : function(err){alert("服务端错误,请刷新浏览器后重试")}

      });

        参考:https://www.cnblogs.com/benefitworld/p/5328420.html

         https://lbs.qq.com/webservice_v1/guide-gcoder.html

        3,腾讯地图api——计算两个坐标系,非直线距离      

      distanceMap:function(){

        var that=this ,
        data={
          from : that.urgDate.locationForm.lat+','+that.urgDate.locationForm.lng ,
          to : getLocationStr.locationGCJ02.latitude + ',' + getLocationStr.locationGCJ02.longitude,
          key: window.common.mapKey.qqMapKey ,
        } ,
        url="https://apis.map.qq.com/ws/distance/v1/?";

        data.output="jsonp";
        $.ajax({
          url:url,

          type:"get",
          dataType:'jsonp',
          data:data,
          jsonp:"callback",
          jsonpCallback:"QQmap",
          success:function(res){
          if(res.status==0){
            try{
              var toStr = JSON.stringify(res);
              //alert(toStr);
              that.urgDate.myDistance = res.result.elements[0].distance;
            }catch(e){
              console.log("坐标系距离计算错误");
            }
          }
        },
        error : function(err){console.log("坐标系距离计算网络链接失败");}

        });
      },

        参考:https://lbs.qq.com/webservice_v1/guide-distance.html

       4,坐标间直线距离,计算公式:

      distanceMap:function(lat1, lng1, lat2, lng2){
        function toRad(d) { return d * Math.PI / 180; }
        var dis = 0;
        var radLat1 = toRad(lat1);
        var radLat2 = toRad(lat2);
        var deltaLat = radLat1 - radLat2;
        var deltaLng = toRad(lng1) - toRad(lng2);
        var dis = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(deltaLat / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(deltaLng / 2), 2)));
        return  dis * 6378137;
      }

  • 相关阅读:
    网络七层
    微信小程序开发工具 常用快捷键
    BZOJ 1026 windy数 (数位DP)
    BZOJ 1026 windy数 (数位DP)
    CodeForces 55D Beautiful numbers (SPOJ JZPEXT 数位DP)
    CodeForces 55D Beautiful numbers (SPOJ JZPEXT 数位DP)
    HDU 3709 Balanced Number (数位DP)
    HDU 3709 Balanced Number (数位DP)
    UVA 11361 Investigating Div-Sum Property (数位DP)
    UVA 11361 Investigating Div-Sum Property (数位DP)
  • 原文地址:https://www.cnblogs.com/fireflying/p/9854620.html
Copyright © 2011-2022 走看看