高德地图 Android SDK 是一套地图开发调用接口,开发者可以轻松地在自己的Android应用中加入地图相关的功能,包括:地图显示(含室内、室外地图)、与地图交互、在地图上绘制、兴趣点搜索、地理编码、离线地图等功能。同时也提供也定位SDK、和导航SDK。
详细参考:http://lbs.amap.com/
使用高德地图来显示给定单个经纬度的点、多个经纬度的点、线、以及计算距离。
下载高德地图开发包,添加到工程中,并获取相关的高德Key。参考:http://lbs.amap.com/api/android-sdk/gettingstarted
坐标系
在给定一个经纬度时,如果要准确显示其位置,则必须知道这个经纬度对应的坐标系。如果对应坐标系不正确,则会出现几公里的偏差。目前国内使用的坐标系主要有下面三种:
- WGS84: 表示GPS获取的坐标。国际通用标准。
- GCJ02: 表示经过国测局加密的坐标。我国特有的。
- BD09 : 为百度坐标系,其中bd09ll表示百度经纬度坐标系。
高德地图默认使用的是GCJ02的坐标系,也就说如果给定一个经纬度且这个经纬度对应的坐标系是GCJ02 ,那么可以不需要转换,直接可以在高德地图上显示。如果是其他坐标系则需要进行转换。高德地图提供了相应的坐标系转换接口,可以把其他坐标系转换成GCJ02 ,如下代码,是把WGS84 坐标的经纬度转换为GCJ02坐标:
CoordinateConverter converter = new CoordinateConverter();
// CoordType.GPS 待转换坐标类型
converter.from(CoordType.GPS);
// sourceLatLng待转换坐标点 LatLng类型
converter.coord(sourceLatLng);
// 执行转换操作
LatLng desLatLng = converter.convert();
添加高德地图控件
在布局xml文件中添加地图控件,代码如下:
<com.amap.api.maps.MapView
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent">
</com.amap.api.maps.MapView>
显示单个经纬度的点
显示一个给定经纬度且坐标系为GCJ02的点,如下图:
代码如下:
1 | public class MainActivity extends Activity { |
先是通过R.id.map
找到布局文件文件中的地图控件mMapView
,然后再获得地图对象,创建一个经纬度为29.558392, 106.466887
的LatLng
对象,最后通过居中显示出相应的点。
显示多个经纬度的点
显示多个给定经纬度且坐标系为GCJ02的点,如下图:
代码如下:
1 | public class MainActivity extends Activity { |
在init
函数中把要显示点的经纬度添加到一个List
中,以List
中的第一个点为中心点,调用地图进行显示。
显示线
给定多个经纬度且坐标系为GCJ02的点,把它们连成一条线,如下图:
代码如下:
1 | public class MainActivity extends Activity { |
在init
函数中把要显示点的经纬度添加到一个List
中,以List
中的第一个点为中心点,直接调用addPolyline
函数就可以显示,可以设置显示线的颜色,大小等。
计算距离
高德地图提供了计算两个点之间的距离的函数calculateLineDistance
,把上面的线的距离计算出来,显示到MainActivity
的title
里。如下图:
代码如下:
1 | public class MainActivity extends Activity { |
通过调用calculateLineDistance
计算每两个点之间的距离,再把它们累加起来,最后显示在MainActivity
的title
里为229.51405
米。