您的位置:首页 > 其它

关于地图坐标转换的小总结

2017-03-20 10:23 337 查看

本文仅记录一下当前项目APP使用高德地图遇到的问题。

平台使用的是百度地图(原方案是规定统一使用高德),APP端使用的是高德地图,对于各家地图的好坏先不说,这里只是说明下经纬度转换问题。仅做个人记录笔记,以防忘记。

不论百度地图,高德地图,还是其他地图,都会有个坐标转换工具类。

高德地图的相关开发说明链接

原文档是如下的示例:

CoordinateConverter converter  = new CoordinateConverter();
// CoordType.GPS 待转换坐标类型
converter.from(CoordType.GPS);
// sourceLatLng待转换坐标点 LatLng类型
converter.coord(sourceLatLng);
// 执行转换操作
LatLng desLatLng = converter.convert();


但是工程项目中使用时converter.coord()方法参数并不是latLang类型,而是DPoint,因此需要将LatLang转化为DPoint类型,返回的类型也是DPoint。如下是我工程中的代码

/**
* 百度坐标转换为高德坐标
*/
private LatLng baiduConverGaode(LatLng latLng) {

CoordinateConverter converter = new CoordinateConverter(this);
// CoordType.GPS 待转换坐标类型
converter.from(CoordinateConverter.CoordType.BAIDU);//百度坐标
try {
// sourceLatLng待转换坐标点 LatLng类型
DPoint dPoint = new DPoint();
dPoint.setLongitude(latLng.longitude);
dPoint.setLatitude(latLng.latitude);
converter.coord(dPoint);
// 执行转换操作
DPoint point = converter.convert();
return new LatLng(point.getLatitude(),point.getLongitude());
} catch (Exception e) {
e.printStackTrace();
return null;
}
}


converter.from()参数是传入的坐标系,CoordType类型中有百度,高德,GPS,soso地图等多种选择。根据传入的坐标选择。
地图开发中有个小问题整了一下午,就是new LatLng(纬度,经度)时将经纬度弄颠倒了,导致标注点无法显示。即


new LatLng(point.getLatitude(), point.getLongitude())


先百度普及一下,纬度范围是:-90~90,经度范围是:-180~180。百度坐标拾取,高德坐标拾取选取一个点,例如[116.380122,39.934191]。附上坐标拾取链接,方便其他人使用。

百度坐标拾取器

高德坐标拾取器
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: