收藏
回答

map问题,小程序用的经纬度和百度地图的一致吗?需要转换吗?

1、如题

2、小程序的地图有没有更多的案例可供CV大法?


回答关注问题邀请回答
收藏

2 个回答

  • 泰
    2022-08-26

    大哥 你好 我使用的是高德地图的sdk 在小程序里使用的是腾讯地图的组件 导入坐标串 后 发现画出来的线路 有偏差 请问大哥你解决了吗

    2022-08-26
    有用
    回复
  • 拾忆
    拾忆
    2022-04-01
    /**
     * 返回两个经纬度之间的距离
     * @param  {string} lat1    起点纬度
     * @param  {string} lng1    起点经度
     * @param  {string} lat2    终点纬度
     * @param  {string} lng2    终点经度
     * @return {string}         返回两个经纬度之间的距离
     */
     
    function getDistance(lat1, lng1, lat2, lng2) {
        function e(lat1, lng1, lat2, lng2) {
            lat1 = (lat1 * f) / 180;
            lat2 = (lat2 * f) / 180;
            lng1 =
                2 *
                Math.asin(
                    Math.sqrt(
                        Math.pow(Math.sin((lat1 - lat2) / 2), 2) +
                            Math.cos(lat1) *
                                Math.cos(lat2) *
                                Math.pow(Math.sin(((lng1 * f) / 180 - (lng2 * f) / 180) / 2), 2),
                    ),
                );
            return (lng1 = Math.round(6378137 * lng1));
        }
        let f = Math.PI;
        return 1e3 < e(lat1, lng1, lat2, lng2) ? Math.round(e(lat1, lng1, lat2, lng2)) : e(lat1, lng1, lat2, lng2);
    }
    /**
     * 百度地图经纬度转为腾讯地图经纬度
     * @param {Number} lat
     * @param {Number} lng
     * @returns
     */
    function bdMapToTxMap(lat, lng) {
        let pi = (3.14159265358979324 * 3000.0) / 180.0;
        let x = lng - 0.0065;
        let y = lat - 0.006;
        let z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * pi);
        let theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * pi);
        lng = z * Math.cos(theta);
        lat = z * Math.sin(theta);
        return { lng: lng, lat: lat };
    }
    /**
     * 腾讯地图转百度地图经纬度
     * @param {Number} lat
     * @param {Number} lng
     * @returns
     */
    function txMapToBdMap(lng, lat) {
        let x_pi = (3.14159265358979324 * 3000.0) / 180.0;
        let x = lng;
        let y = lat;
        let z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * x_pi);
        let theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * x_pi);
        let lngs = z * Math.cos(theta) + 0.0065;
        let lats = z * Math.sin(theta) + 0.006;
     
        return {
            lng: lngs,
            lat: lats,
        };
    }
    
    2022-04-01
    有用
    回复 2
    • Mr.W
      Mr.W
      2022-04-01
      大哥你好,如果直接引入百度地图使用的话,性能方面差距大吗?
      2022-04-01
      回复
    • 拾忆
      拾忆
      2022-04-02回复Mr.W
      引不了百度地图,小程序只能使用原生MAP组件
      2022-04-02
      回复
登录 后发表内容