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;
      }

  • 相关阅读:
    vscode入门使用教程(页面调试)
    .net core3.1开始页面实时编译
    Ubuntu 编辑文件、安装、删除软件等常用命令(持续更新)
    .NetCore3.1中的WebApi如何配置跨域
    PC电脑端如何多开Skype,一步搞定!
    简单几步为博客园添加动态动漫妹子
    如何在SqlServer中使用层级节点类型hierarchyid
    Entity framework Core 数据库迁移
    牛客网剑指offer【Python实现】——part1
    Linux实战——Shell编程练习(更新12题)
  • 原文地址:https://www.cnblogs.com/fireflying/p/9854620.html
Copyright © 2011-2022 走看看