1. 程式人生 > >百度地圖(BaiduMap)定位工具類封裝和使用

百度地圖(BaiduMap)定位工具類封裝和使用

(轉載請註明出處哦)本篇部落格主要是提供思路,具體的百度地圖許可權和apikey配置不敘述,地圖定位工具類如下

/**

 * @ClassName: LocationHelper

 * @author: hewei

 * @version: v1.0

 */

public class LocationHelper {

    private LocationCallBackcallBack;

    private static LocationHelperhelper;

    private LocationClientlocationClient;

    private BDLocationListenerlocationListener = new MyBDLocationListener();

    private LocationHelper() {

        //第一步例項化定位核心類

        locationClient = newLocationClient(BaseApp.getInstance(), getLocOption());

        //第二步設定位置變化回撥監聽

       locationClient.registerLocationListener(locationListener);

    }

    public static LocationHelpergetInstance() {

        if (helper == null) {

            helper = newLocationHelper();

        }

        return helper;

}

    public void start() {

//        第三步開始定位

        locationClient.start();

    }

//一般會在Activity的OnDestroy方法呼叫

    public void stop() {

        if (locationClient !=null) {

           locationClient.unRegisterLocationListener(locationListener);

           locationClient.stop();

            locationClient = null;

        }

    }

    private LocationClientOptiongetLocOption() {

        LocationClientOptionoption = new LocationClientOption();

       option.setAddrType("all");

        //設定定位座標系

       option.setCoorType("bd09ll");

       //重新定位時間間隔

       //option.setScanSpan(60*1000);

        //設定是否開啟gps

        option.setOpenGps(true);

      //設定定位模式

       option.setLocationNotify(true);

        //是否需要poi結果

        option.setPoiDistance(1000);

       option.setPoiExtraInfo(true);

        return option;

    }

    private classMyBDLocationListener implements BDLocationListener {

        @Override

        public voidonReceiveLocation(BDLocation bdLocation) {

            if (callBack != null&&bdLocation!=null){

               callBack.callBack(bdLocation.getAddrStr(),bdLocation.getStreetNumber(),bdLocation.getLatitude(),bdLocation.getLongitude(),bdLocation.getDistrict(),bdLocation.getStreet(),bdLocation.getCity(),bdLocation.getProvince());

            }

      //多次定位必須要呼叫stop方法

           locationClient.stop();

        }

           @Override

           public voidonReceivePoi(BDLocation arg0) {

           }

    }

    public interfaceLocationCallBack {

        void callBack(Stringaddr,String streetnumber ,double lat, double lng, String district ,Stringstreet,String city,String province);

    }

    public LocationCallBackgetCallBack() {

        return callBack;

    }

    public void setCallBack(LocationCallBackcallBack) {

        this.callBack = callBack;

    }

}

那我們如何呼叫定位工具呢,利用介面回撥傳遞資料,覆蓋物等功能請自行新增,具體如下

public class HomePageActivity extends BaseActivity implements LocationCallBack{

      private BaiduMap baiduMap;

      private LocationHelperhelper;

      private MapView mapView;

      private TextView addrtext;

      @Override

      protected voidonCreate(Bundle savedInstanceState) {

           super.onCreate(savedInstanceState);

                     setContentView(R.layout.activity_homepage_hasmenukey_layout);

           mapView=(MapView)findViewById(R.id.bmapView);

           addrtext=(TextView)findViewById(R.id.addrtext);

           setBaiduMap();

           startLocation();

      }

      //百度地圖設定

      public void setBaiduMap(){

           //去掉百度地圖自帶的放大縮小按鈕,以及左下角的小圖示

           mapView.showZoomControls(false);

           mapView.showScaleControl(false);

           for (int i = 0; i <mapView.getChildCount(); i++) {

            View child =mapView.getChildAt(i);

            if (child instanceofImageView) {

               child.setVisibility(View.INVISIBLE);

                break;

            }

        }

           baiduMap=mapView.getMap();

           baiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);

           baiduMap.setMyLocationEnabled(true);

           baiduMap.setOnMapTouchListener(this);

           baiduMap.setOnMapLoadedCallback(this);

      }

      //定位返回的資料

      @Override

      public void callBack(Stringaddr, String streetnumber, double lat, double lng, String district,

           String street, Stringcity,String province) {

           addrtext.setText(addr);

      }

      //開啟定位

      public void startLocation(){

           helper=LocationHelper.getInstance();

           helper.setCallBack(this);

           helper.start();

      }

      @Override

      public void onDestroy(){ 

           helper.stop();

           baiduMap.setMyLocationEnabled(false);

                   mapView.onDestroy();

                   mapView=null;

                   super.onDestroy();

}

  @Override 

    protected void onResume() { 

        super.onResume(); 

        mapView.onResume(); 

        } 

    @Override 

    protected void onPause() { 

        super.onPause(); 

        mapView.onPause(); 

        }

}

本篇部落格主要提供的是思路,喜歡的朋友可以關注和收藏哦

相關推薦

地圖(BaiduMap)定位工具封裝使用

(轉載請註明出處哦)本篇部落格主要是提供思路,具體的百度地圖許可權和apikey配置不敘述,地圖定位工具類如下 /**  * @ClassName: LocationHelper  * @author: hewei  * @version: v1.0  */ public

地圖BaiduMap--學習(二)------定位到自己的位置之沒反應

過了開始的那一關,總以為就好一點,可惜人在江湖飄啊,怎能不挨刀,動不動就上刀山下油鍋。。。。 今天的是定位到自己的位置,本來我以為,這塊對著程式碼敲敲程式碼就能輕鬆搞定,結果還是掉水溝裡了。。 貼程式碼吧直接: 其餘的都不變 MainActivity.java packa

網頁中利用地圖實現定位省(直轄市)市(區)

ren location .get point asc sca set map char <!doctype html> <head> <meta http-equiv="Content-Type" content="text/h

H5跳轉到地圖定位

獲取 targe mark appname xpl ofo div 忽略 視野 找了半天的JS api,發現沒有,後來發現這個叫 url api,讓我好找。 官方文檔: http://lbsyun.baidu.com/index.php?title=uri/api/web

地圖API定位+顯示位置

col mar 位置 百度地圖api fail true acc ntp 引入 1. 先在需要嵌入地圖的頁面引入map.js <script src="http://api.map.baidu.com/api?v=2.0&ak=你的秘鑰"></s

AngularJS進階(十九)在AngularJS應用中整合地圖實現定位功能

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

android地圖基礎定位不用開啟許可權也可以獲取經緯度成功?什麼鬼

最近專案中需要使用百度地圖sdk,發現一個問題,手機未開啟地圖定位許可權,在地圖定位監聽裡面竟然可以返回狀態碼為161的正確定位返回,是不是很神奇。 測試了百度demo,把定位許可權關閉,也是可以定位成功的。看來確實不需要定位許可權,就可以獲取定位資訊呀。 這就讓我暈了,那這個許可權什麼時候

地圖切圖工具下載地圖切圖工具使用方法

百度地圖切圖很麻煩,雖然百度地圖提供了api,百度地圖API當前預設支援兩種地圖型別《map type》:普通圖和三維圖,如果您想自定義地圖,那麼這個時候就必須切圖了。。。下今天小編給大家分享一下本篇文章《百度地圖切圖工具下載和及百度地圖切圖工具用法》! 我們先從切圖工具的使用開始,接著再分析該

Android地圖開發定位路線導航

在寫之前要先加入百度地圖sdk的jar包從百度地圖開發者官網上就能下載 百度地圖sdk下載 官網(可翻牆選擇):http://developer.android.com/sdk/index.html 不可翻牆選擇:http://www.androiddevtools.cn/ 而其中用

地圖獲取定位 React Native

獲取金鑰:http://lbsyun.baidu.com/apiconsole/key 去百度地圖申請應用; 百度地圖api(ak值申請後可以獲得,安全碼在申請應用點選設定後可以檢視) BaiduMap_URL =‘https://api.map.baid

Vue:地圖API 定位 地點檢索

一個全棧向前端的退化過程。  (咳~抱怨一句)   高德--API清晰,就是定位可能差了那麼點! 百度--國內較好支援國外定位 搜尋的平臺。(不過需要申請配額) google -- 需要翻牆,沒花錢配額之前給你一次呼叫機會,   使用需求因個

地圖api定位,根據經緯度顯示當前城市名

當前城市:<span id="pro_num">鄭州</span> <div id="allmap"></div> <script type="text/javascript" src="http://api.map.baidu.com/

呼叫地圖API定位位置

以下程式碼是百度開發示例程式碼: <html> <head>     <meta http-equiv="Content-Type" content="text/html; charse

調用地圖API定位位置

nbsp stat toc tle over enable city user 密鑰 以下代碼是百度開發示例代碼: <html> <head> <meta http-equiv="Content-Type" content="text

地圖拾取座標工具-toolfk程式設計師線上工具

      本文要推薦的[ToolFk]是一款程式設計師經常使用的線上免費測試工具箱,ToolFk 特色是專注於程式設計師日常的開發工具,不用安裝任何軟體,只要把內容貼上按一個執行按鈕,就能獲取到想要的內容結果。ToolFk還支援  BarCode條形碼線上生

ionic使用地圖實時定位並匯入標記

最近遇到前端需要實現地圖的功能,其實呼叫地圖的例子網上有好多,這邊介紹一下我們如何通過ionic框架在前端呼叫百度地圖。 首先我們需要在src目錄下的index.html檔案中引入百度地圖,在這之前請申請百度地圖金鑰(金鑰在百度地圖官網申請) <script

地圖定位

百度地圖的展示,及詳細配置 官方Api 開始搭建環境 1.下載SDK 匯入Jar包,這裡分為2塊,第一塊是畫圈的jar包,需要小奶瓶,第二部分是檔案直接賦值即可 **清單檔案註冊** <application ..... <!

地圖自定義工具

function gongju() {     // 自定義控制元件     function ZoomControl() {         this.defaultAnchor

地圖定位功能,註冊祕鑰

1.1     百度地圖定位GPS  + WIFI  +  基站1.     GPS定位:是美國軍方提供全球定位系統。5~15米        北斗:中國研發定位系統。目前最先進的定位系統,精度能達到幾釐米        格洛納斯:俄羅斯定位系統,已交於北斗維護。