程序员开发的地图的选择

文章目录

1、前言

本文只是针对个人开发者或者小型项目,基本不用高级的功能,属于白嫖党,大型项目选择不适用本项目

在项目开发的过程中,离不开使用了地图,但是现在地图的种类也很多,常用的有百度、高德、腾讯,然后进行选择呢?怎么避免踩坑呢?本文根据笔者项目经验进行介绍

先下结论:

不差钱的公司不说,但是对于个人开发者或者小型项目来说,优先推荐腾讯、高德 ,不要使用百度,想知道选用理由的话,感兴趣可逐步往下看。

2、功能

首先我们必须考虑什么场景使用地图,是CRM、还是车辆管理、还是考勤管理,运输仓库管理。其实这些场景都有个共同的方式。

  • 在地图上进行标记
  • 标记的点之间的距离

进阶的有(一般用不到)

  • 两个点之间的最优路线(优先高速、排除高速等)
  • 多个点之间的最佳运输路线

其实上述的功能,最主要的还是在地图上进行标记,比如可用于仓库的位置,或者车辆的实时位置

3、经纬度的录入

3.1 在地图上打点

这种方式什么地图都可以,就是在地图上显示数据库存储的点

3.2 使用手机进行打卡

一般大部分人都会选择企业微信或者钉钉

从以上可以看出:

企业微信是跟腾讯深度绑定的,钉钉是跟高德地图深度绑定的,只有百度地图没有啥用,这个是不用百度地图的理由之一

4、关于经纬度

高德地图、腾讯地图使用的是BD09

百度地图是GCJ102

可以通过以下方法进行转换

java 复制代码
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;

public class MapUtils {
    /*GCJ-02(火星坐标) 和 BD-09 (百度坐标)
     *    算法代码如下,其中 bd_encrypt 将 GCJ-02 坐标转换成 BD-09 坐标, bd_decrypt 反之。
     */
    static double x_pi = 3.14159265358979324 * 3000.0 / 180.0;

    //高德转百度
    public static Map<String,Float> bdEncrypt(double gg_lat, double gg_lon){
        Map<String,Float> data = new HashMap<String,Float>();
        double x = gg_lon, y = gg_lat;
        double z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * x_pi);
        double theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * x_pi);
        double bd_lon = z * Math.cos(theta) + 0.0065;
        double bd_lat = z * Math.sin(theta) + 0.006;
        System.out.println(bd_lon+","+bd_lat);
        System.out.println(new BigDecimal(String.valueOf(bd_lon)).floatValue()+","+new BigDecimal(String.valueOf(bd_lat)).floatValue());
        data.put("lon", new BigDecimal(String.valueOf(bd_lon)).floatValue());
        data.put("lat",new BigDecimal(String.valueOf(bd_lat)).floatValue());
        return data;
    }

    //百度转高德
    public static Map<String,Double> bd_decrypt(double bd_lat, double bd_lon){
        double x = bd_lon - 0.0065, y = bd_lat - 0.006;
        double z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi);
        double theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi);
        double gg_lon = z * Math.cos(theta);
        double gg_lat = z * Math.sin(theta);
        Map<String,Double> data = new HashMap<String,Double>();
        data.put("lon", gg_lon);
        data.put("lat", gg_lat);
        return data;
    }
}

但是是无论是怎么转,两个坐标系都是有差异的 ,大概几百米,可以看出百度的BD09是多么的异类,从兼容性来说,不要选择百度地图

5、关于授权的问题

对于个人用户或者小型项目,根本没办法承担5w 每年的费用。而百度动不动就要限制使用,即使你不使用高级功能,也会各种警告。甚至到最后,连免费的底图都显示不出来

一个项目对接了大半天,这个是多恶心啊。这个是不选用百度地图的一个重要理由。

6、结尾

反正不要选百度地图

1、使用企业微信,选用腾讯地图。使用钉钉,使用高德地图

2、腾讯地图和高德地图都是GCJ02,基本无缝切换

3、百度地图审核太严,动不动就各种警告,体验感极差

个人想法仅供参考,不喜勿喷

相关推荐
Love_云宝儿9 天前
GeoJSON简介
java·gis·地图·jts
文阿花9 天前
大屏地图实现方案之-高德(二)
vue·地图·高德
腾讯位置服务10 天前
5月产品上新|行业潜客产品、违停状态查询API、两轮车距离矩阵3大能力全新上线!
地图·导航·两轮车·腾讯位置服务
文阿花10 天前
大屏实现方案之-高德
vue·地图·高德
丷丩14 天前
MapLibre GL JS第11课:获取鼠标指针坐标
前端·javascript·gis·地图·mapbox·maplibre gl js
蜡台1 个月前
Vue3 + ECharts 实现地图显示,深蓝色科技风地图、涟漪点、向上连线 ,标签
vue.js·科技·echarts·map·地图
lpfasd1232 个月前
地图服务商用定价分析:小企业及一人公司的负担与平台套餐策略拆解
地图
tzy2332 个月前
Web GIS 矢量瓦片(MVT)入门:一文读懂栅格与矢量的核心差异
gis·地图·mvt·mapbox·瓦片
极海拾贝2 个月前
【最新最权威】ArcGIS ArcMap中添加在线地图-天地图(地形、矢量、影像、全球境界)的方法
arcgis·gis·地图·arcmap·天地图·底图