安卓项目使用了百度地图的定位SDK,web端使用的也是百度地图, 后来发现界面显示百度地图不如高德效果好,web改用高德地图,原本的百度地图坐标是可以直接使用的,由于高德和百度地图的坐标系不一致 要如何转换呢。
补充了下坐标系知识后发现高德使用的坐标系是“gcj02”也就是大家所说的“火星坐标”,
百度使用的是“BD09”因为是百度所用大家习惯称之为“百度坐标” ,如何将bd09转为gcj02呢,突然想到在百度的定位sdk里有这样一段说明(来自百度地图)
设置返回值的坐标类型。 public void setCoorType ( String ) 我们支持返回若干种坐标系,包括国测局坐标系、百度坐标系,需要更多坐标系请联系我们,需要深度合作。目前这些参数的代码为。因此需要在请求时指定类型,如果不指定,默认返回百度坐标系。注意当仅输入IP时,不会返回坐标。目前这些参数的代码为 返回国测局经纬度坐标系 coor=gcj02 返回百度墨卡托坐标系 coor=bd09 返回百度经纬度坐标系 coor=bd09ll 百度手机地图对外接口中的坐标系默认是bd09ll,如果配合百度地图产品的话,需要注意坐标系对应问题。
也就是说百度这个定位sdk应该是可以直接返回gcj02坐标的,这样就可以直接在高德上使用了
代码如下
LocationClientOption option = new LocationClientOption(); option.setCoorType("gcj02");//如果是百度坐标参数为 bd0911
看来百度公司对于SDK使用中发现这块要比高德做的好一些,所以才会出现尽管高德地图数据不错但在开发中还是百度地图摘得头彩。