日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Android学习笔记之使用百度地图实现地图控制

發(fā)布時間:2025/4/14 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android学习笔记之使用百度地图实现地图控制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

PS:吾之榮耀,離別已久.

?

學習內容:

1.實現地圖控制.

2.百度地圖開發(fā)的一些細節(jié)

?

? 1.實現地圖控制:

? 這一篇主要寫在百度地圖上添加一些其他控制.上一篇書寫了覆蓋物的添加,地理編碼和反地理編碼,還有如何實現定位.那么這一篇主要是說一下實現地圖控制,以及一些細節(jié).由于我也是看著牛人的博客學習的.因此可能有點雜亂無章.

? MapView.

? 地圖控制主要是通過使用MapView類中的一些相關函數來實現地圖控制.這里的實現地圖控制主要是控制Map上的View視圖.在Map上添加或者移除一個View.控制縮放控件和比例尺控件,設置縮放控件和比例尺的相關位置.默認的情況下,MapView是自帶縮放控件和比例尺的.

//不顯示縮放按鈕和比例尺 mapView.showZoomControls(false); mapView.showScaleControl(false);

? 設置縮放控件和比例尺的相關位置

mapView.setZoomControlsPosition(new Point(150,60)); mapView.setScaleControlsPosition(new Point(150,60));

? 這里還需要說明一點就是關于MapView的生命周期問題.MapView的生命周期和當前的Activity是緊密關聯(lián)的.因此我們需要在Activity當中去設置MapView的生命周期.同時在使用MapView控件的時候必須要使用SDKInitializer.initialize(Context)函數去提供全局的Context信息.

? MapView的內部函數其實并不是非常的多.也就這么幾種View的相應控制,以及生命周期函數的設定.例舉一下內部的相關函數.

mapView.addView(View child,LayoutParams params); //在地圖上添加子View.并設置相關的參數. mapView.onDestory(); //生命周期函數,當Activity被銷毀的時候.地圖控件也被銷毀. mapView.onPause(); //生命周期函數 mapView.onResume(); //生命周期函數 mapView.remove(View view); //移除MapView上的View視圖. mapView.onLayout(boolean changed,int l,int t,int r,int b); //個人認為是指定mapView的布局.官方API沒給出解釋.

? BaiduMap的監(jiān)聽事件控制

? 在地圖上我們可以設置相關的監(jiān)聽函數.監(jiān)聽的接口如下:

? setOnMapClickListener(OnMapClickListener)? 點擊函數.

bdMap.setOnMapClickListener(new OnMapClickListener() {@Overridepublic boolean onMapPoiClick(MapPoi arg0) {// TODO Auto-generated method stubreturn false;}@Overridepublic void onMapClick(LatLng arg0) {// TODO Auto-generated method stub//設置地圖中心點msu = msuFactory.newLatLng(arg0);bdMap.animateMapStatus(msu);Toast.makeText(getApplicationContext(), "地圖中心點移動到"+arg0.toString(), Toast.LENGTH_SHORT).show();}});

? setOnMapDoubleClickListener(OnMapClickListener) 雙擊函數.

bdMap.setOnMapDoubleClickListener(new OnMapDoubleClickListener() {@Overridepublic void onMapDoubleClick(LatLng arg0) {}});

? setOnMapLongClickListener(OnMapClickListener) 長按函數.

?setOnMapStatusChangerListener(OnMapStatusChangerListener) 地圖狀態(tài)變化的監(jiān)聽函數.

?這兩個就不列舉了.主要是BaiduMap的兩個

?void animateMapStatus(MapStatusUpdate status)

?void animateMapStatus(MapStatusUpdate update int duration)

?這兩個函數表示當地圖狀態(tài)發(fā)生變化的時候.以動畫的形式進行改變.第一個函數沒有指定動畫的時間.默認時間為300毫秒.第二個則是指定時間的動畫.傳遞的參數則是MapStatusUpdate參數.不難看出這個類的含義就是當地圖狀態(tài)發(fā)生改變時的更新狀態(tài).需要將這個改變的狀態(tài)封裝成MapStatusUpdate對象.然后通過使用animateMapStatus()函數去完成這個變化. MapStatusUpdate是一個靜態(tài)類.因此實例化對象的方式采用MapStatusUpdateFactory工廠來完成對象的實例化. 這個類的內部函數還是非常的多的.我們可以通過使用內部的函數構造出各種各樣的MapStatusUpdate對象..

? 還是傳一張圖吧.手打真?zhèn)黄?.

?縮小地圖(縮小一個級別)

msu = msuFactory.zoomOut(); bdMap.animateMapStatus(msu);

?放大地圖(放大一個級別)

msu = msuFactory.zoomIn(); bdMap.animateMapStatus(msu);

?設置地圖中心點

msu = msuFactory.newLatLng(arg0); bdMap.animateMapStatus(msu);

?其他函數就不一一列舉了.我們可以看到這個類的內部存在一個newMapStatus(MapStatus status)函數.這個函數是將MapStatus封裝成MapStatusUpdate,然后通過調用animateMapStatus(msu);同樣可以完成一個地圖的狀態(tài)更新.那么就不得不說一下MapStatus了.這個類的相關函數如下:

?這個類可以設置地圖的旋轉和俯視效果.設置了相關效果之后.將MapStatus封裝成MapStatusUpdate對象.就可以實現旋轉和俯視效果的地圖狀態(tài)更新了.實現方式:

?設置了一個旋轉效果的地圖狀態(tài).

mapStatus = new MapStatus.Builder(bdMap.getMapStatus()).rotate(rotateAngle +=30).build(); msu = msuFactory.newMapStatus(mapStatus); bdMap.animateMapStatus(msu);

?設置了一個俯視效果的地圖狀態(tài).

mapStatus = new MapStatus.Builder(bdMap.getMapStatus()).overlook(overlookAngle -=10).build(); msu = msuFactory.newMapStatus(mapStatus);
bdMap.animateMapStatus(msu);

?這樣通過定義MapStatus對象也能夠實現一些地圖狀態(tài)的控制.最后再說一個關于地圖截圖的問題.個人感覺有點不是非常的使用了.現如今的手機都可以通過快捷鍵去直接實現截屏功能.這個功能就有點不怎么適用了.既然說了,那么還是要簡單的說一下.

?實現地圖的截圖需要使用以下函數.

?snapshot()函數..SnapshotReadyCallback()為其回調接口.截屏之后我們還可以對截取到的圖片進行數據的保存.

bdMap.snapshot(new SnapshotReadyCallback() {@Overridepublic void onSnapshotReady(Bitmap bitmap) {// TODO Auto-generated method stubFile file = new File("/mnt/sdcard/test.png");FileOutputStream fos = null;try {fos = new FileOutputStream(file);if(bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos)){fos.flush();fos.close();}Toast.makeText(MapControllActivity.this,"屏幕截圖成功,圖片存在: " + file.toString(),Toast.LENGTH_SHORT).show();} catch (Exception e) {// TODO Auto-generated catch block e.printStackTrace();}}});

?2.百度地圖開發(fā)的一些其他細節(jié).

?也算是對自己昨天寫的東西進行一些相關的補充.上一篇博客寫了關于定位的功能.也就是使用LocationClient去實現客戶端定位.同時也說了一下內部的監(jiān)聽函數.實現定位首先需要初始化對象.然后注冊定位監(jiān)聽.然后設置相關的定位參數.最后開始定位就可以了.

?只是忘記了說另一個監(jiān)聽函數:

?NotifyListener()

?注冊位置提醒監(jiān)聽.位置提醒一般表示的是我們設置了某一位置,當我們快要到達這個位置的時候,開啟位置監(jiān)聽.可以通過振動的方式來提示我們已經到達了這個位置的附近.因此這個監(jiān)聽的注冊是否必要取決于我們的需求.

?并且設置了這些相關監(jiān)聽的同時,我們需要在最后去釋放這些監(jiān)聽.

?釋放的方式:重寫onDestory函數去釋放.

@Override protected void onDestroy() { super.onDestroy(); mapview.onDestroy(); locationClient.unRegisterLocationListener(locationListener); //取消位置提醒 locationClient.removeNotifyEvent(notifyListener); locationClient.stop(); } class MyNotifyListener extends BDNotifyListener {@Overridepublic void onNotify(BDLocation bdLocation, float distance) {super.onNotify(bdLocation, distance);mVibrator.vibrate(1000);//振動提醒已到設定位置附近Toast.makeText(LocationActivity.this, "震動提醒", Toast.LENGTH_SHORT).show();}}

?LocationOptions的相關補充.

?LocationOptions表示的是定位參數.我們在定位的時候可以通過設置相關的參數去完善定位.

?還要說一下這個定位模式的問題:

?1. 高精度定位模式:同時使用網絡定位和GPS定位,優(yōu)先返回最高精度的定位結果。

?

?2. 低功耗定位模式:不使用GPS,只使用網絡定位(WiFi和基站)。

?

?3. 僅用設備定位模式: 不適用網絡定位,只使用GPS進行定位。但是此模式下不支持室內環(huán)境的定位。

?LocationOptions的一些相關函數:

LocationClientOption locOption = new LocationClientOption(); locOption.setLocationMode(LocationMode.Hight_Accuracy);// 設置定位模式 locOption.setCoorType("bd09ll");// 設置定位結果類型 locOption.setScanSpan(5000);// 設置發(fā)起定位請求的間隔時間,ms locOption.setIsNeedAddress(true);// 返回的定位結果包含地址信息 locOption.setNeedDeviceDirect(true);// 設置返回結果包含手機的方向

?還有關于定位是否能夠成功.還是發(fā)生了失敗的原因,我們可以通過使用getLocType()這個方法獲取到,返回的值為int類型.

? 通過這個值我們就可以判斷我們的定位是否成功,并且如果發(fā)生了錯誤,我們可以通過捕捉這個int數據來判斷我們在什么位置上發(fā)生了錯誤.通過這個錯誤信息我們就可以去調試.還是比較方便的.

?總體也就這么多了.最后再放上一個代碼.方便大家去研究.

?http://files.cnblogs.com/files/RGogoing/Map_1.rar

?

?

?

轉載于:https://www.cnblogs.com/RGogoing/p/5037524.html

總結

以上是生活随笔為你收集整理的Android学习笔记之使用百度地图实现地图控制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。