文章目录
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、百度地图审核太严,动不动就各种警告,体验感极差
个人想法仅供参考,不喜勿喷