下文说的是高德地图 Android SDK版本,详细版本如下:
2D地图:v2.3.1
定位:v1.3.0
导航:v1.1.1
发现的问题如下,其中一些疑是地图BUG,一些是需要你自己小心的地方:
1、定位。
public void requestLocationData(java.lang.String provider, long minTime, float minDistance, AMapLocationListener listener)对于第二个参数,会影响所有回调接口的回调时间。官方的邮件回复是说,会以传入的第二个参数的最大的那个数,作为回调时间。
也就是,如果你在某个地方调用此接口,设置一分钟回调一次,requestLocationData(xxx, 60 * 1000, xx, xxxlistener),而在地图中,对定位按钮添加事件:requestLocationData(xxx, -1, xx, xxxxxlistener),那么这个定位事件会在1分钟之后才回调。如果你有定时更新定位的需求的话,自己写计时器吧。
影响:较大。
2、比例尺。
如果你不调用此接口:mUiSettings.setScaleControlsEnabled(
true
);那么会有以下结果:
两指缩放地图,会显示出比例尺,并且比例尺会随着地图变化。
双击,或者点击缩放按钮进行地图缩放的话,不会使比例尺出现。而如果比例尺出现的话,也不会因此随着地图而变化。
基于以上结果,导致比例尺与实际不符。
对此问题,官方邮件回复中确定为已知问题。
解决方法,很简单,手动设置为true或false就行。
影响:极小。
3、显示infowindow。
在添加Marker的时候,一定要对MarkerOptions设置anchor和title,否则不能显示InfoWindow。此问题纠结了我许久,最后在与demo的代码进行几乎逐行对比之后,加上了这行代码后才显示出来infowindow。
影响:自己小心。
4、导航的起始坐标点。
导航建议传入一个起始坐标点。反正如果不传,我在室内总是定位不到也无法计算路线,更不用说导航了。