附DEmo记录百度地图API哪些坑
项目可以实时获取当前位置并且计算和某固定位置的距离,并显示在屏幕上方。
做项目时遇到的难点:
- 如何把覆盖物固定在屏幕中间,不随着地图的移动而移动
- 如何获取地图中间位置的坐标/经纬度
- 如何把两点之间的距离在textView中显示出来
首先第一点折腾了比较久,思维太僵硬了,只想着把覆盖物固定在地图中间,其实换个角度想,只要把覆盖物固定在屏幕中心点,不就可以让覆盖物不随着地图一起移动了吗?想通之后就好解决了,把覆盖物当做一个控件,放在layout文件中设置layout属性为center,这样覆盖物就可以固定在屏幕中间了,可以随意移动地图,并且覆盖物不会随着地图一起移动。
覆盖物是固定好了,但是怎么获取屏幕中心点的位置呢?当时想到了两点,把屏幕坐标转换为地图经纬度,但是这样比较麻烦,最后失败了,查阅百度API后发现有提供方法给我们。
OnMapStatusChangeListener listener = new OnMapStatusChangeListener() { /** * 手势操作地图,设置地图状态等操作导致地图状态开始改变。 * @param status 地图状态改变开始时的地图状态 */ public void onMapStatusChangeStart(MapStatus status){ } /** 因某种操作导致地图状态开始改变。 * @param status 地图状态改变开始时的地图状态 * @param reason表示地图状态改变的原因,取值有: * 1:用户手势触发导致的地图状态改变,比如双击、拖拽、滑动底图 * 2:SDK导致的地图状态改变, 比如点击缩放控件、指南针图标 * 3:开发者调用,导致的地图状态改变 */ public void onMapStatusChangeStart(MapStatus status, int reason); } /** * 地图状态变化中 * @param status 当前地图状态 */ public void onMapStat