百度地圖,各種問題解決匯總


工作過程中,用到了百度地圖,出現了一些問題。把各種問題進行一個匯總,很多都是網友智慧。

1、如何獲取地圖中心點的經緯度?

    移動、放大、縮小之后,需要獲取地圖的中心點位置。其實很簡單

    1、獲取到一個百度map的對象

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

  2、設置一個監聽

view.getMap().setOnMapStatusChangeListener(this);

  該監聽,地圖放大縮小都可以收到。

     3、在回調的方法中處理

@Override
    public void onMapStatusChangeFinish(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()即可。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM