百度地图,各种问题解决汇总

来源:互联网 发布:vb串口通信及编程实例 编辑:程序博客网 时间:2024/05/17 07:15

本文转自:https://www.cnblogs.com/mltx/p/6943475.html

工作过程中,用到了百度地图,出现了一些问题。把各种问题进行一个汇总,很多都是网友智慧。

1、如何获取地图中心点的经纬度?

    移动、放大、缩小之后,需要获取地图的中心点位置。其实很简单

    1、获取到一个百度map的对象

?
1
2
mMapView = (MapView) findViewById(R.id.bmapView);
mBaiduMap = mMapView.getMap();

  2、设置一个监听

?
1
view.getMap().setOnMapStatusChangeListener(this);

  该监听,地图放大缩小都可以收到。

     3、在回调的方法中处理

?
1
2
3
4
5
6
@Override
    publicvoidonMapStatusChangeFinish(MapStatus mapStatus)
    {
        LatLng latLng = mapStatus.target;
        LogUtil.i("onMapStatusChangeFinish",""+ latLng.latitude,""+ latLng.longitude);
    }

  在onMapStatusChangeFinish方法里面处理即可mapStatus.target就是中心点的坐标。

 2、如何在地图中心点绘制一个图标,固定不动?

    效果类似市面上那些软件的效果,如摩拜、滴滴之类的。

    我最开始是根据问题1,可以得到中心点坐标,在回调里面刷新一下。

    但这样会有一个效果就是,会有一个移动过程,和这些软件里面的不一样。

    最后是在论坛上面看到其他人的思路:在地图上覆盖一层layout,和地图的view重合,然后把图标add在上面的layout里面就解决了。

3、图标中心点和地图中心点不重合

    根据2,做出之后,大体上看是没什么问题的。但恰好,我是最开始按问题1方式做的代码没有删掉。

    这样就发现一个问题,根据问题2做出的图标和根据问题1做出的图标居然不重合。

    经过分析,是我自己的失误。我是直接设置图标在layout的中心位置,没考虑到图标的是长宽的,在layout里面的坐标是指的左上角。地图里面却不是

    在layout里面考虑一下图标大小,修正一下坐标就可以了。

4、获取LocationClient,多次定位

    我的需求是,我调用一次百度地图定位就返回一次就好,不要一直在后台频繁更新。因为没有这个需求,这样会消耗流量和电量。

    本来这个是很简单的,但是我强迫症,我希望是不要很次获取一下定位就new一个LocationClient,希望可以多次使用。

    这是前提,使用的时候,发现第一次是好使的。但第二次就不触发回调了,就在放弃,大不了每次都new的时候,发现百度地图还有一个方法

    那就是,在后面start(),加上requestLocation()即可。

 

标签: 百度地图, 中心点, 不重合
好文要顶关注我收藏该文
忙里偷闲
关注 - 0
粉丝 - 0
+加关注
0
0
»下一篇:AccessibilityManager LeakCanary
posted @ 2017-06-05 10:02 忙里偷闲 阅读(358) 评论(0)编辑收藏
原创粉丝点击