




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、地圖開發Day24-一、 本章要搞定的內容重點類:1,MapView 地圖視圖類3, BaiduMap 地圖對象類2, MapSusUpdate 地圖狀態類 4, Lng 坐標點類 5,OverOptions 覆蓋物類二、 準備工作(一)獲取 API Key打開 HYPERLINK http:/d/map/index http:/d/map/index.詳細步驟見 API?title=androidsdk 申請一個 Key HYPERLINK http:/d/map/index http:/d/map/index.?title=androidsdk/guide/key(二)SDK HYPERL
2、INK http:/d/map/index http:/d/map/index.?title=androidsdk/sdkandev-downloado BaiduMap三、(一)創建工程 Android_BaiduMap_01_o(二)添加地圖引擎到 And 工程中第一步:在工程里新建 libs 文件夾,將開發包里的 baidumapapi_vX_X_X.jar 拷貝到 libs 根目錄下,將 libBaiduMapSDK_vX_X_X.so 拷貝到libsarmeabi 目錄下(官網 demo里已有這兩個文件,如果要集成到自己的工程里,就需要自己添加),拷貝完成后的工程目錄如下圖所示;注:
3、liblocSDK6.so 和 locSDK_6.XX.jar 為 定位 SDK 所使用資源,開發者可根據實際需求自行添加。第二步:在工程屬性-Java Build Path-Libraries 中選擇“Add External JARs”,選定 baidumapapi_vX_X_X.jar,確定后返回。通過以上兩步操作后,您就可以正常使用地圖SDK 為您提供的全部功能了。注意:由于 adt 插件升級,若您使用 Eclipse adt 22 的話,需要對開發環境進行相應的設置,方法如下:1. 在Eclipse 中選中工程,右鍵選 Properties-Java Build Path-Order
4、 and Export 使Android Privaibraries 處于勾選狀態;2. Project - clean- clel .(三)顯示地圖地圖 SDK 為開發者提供了便捷的顯示地圖數據的接口,通過以下幾步操作,即可在您的應用中使用地圖數據:第一步:創建并配置工程(具體方法參見工程配置部分的介紹);第二步:在 AndroidManifest 中添加開發密鑰、所需權限等信息;1)在 application 中添加開發密鑰2)添加所需權限uses-permisuses-permisuses-permisuses-permisuses-permisuses-permisuses-permi
5、suses-permisuses-permisuses-permisuses-permisuses-permisuses-permis.USE_CREDENTIALS /.MANAGE_ACCOUNTS /.AUTHENTICATE_ACCOUNTS /.AC.S_NETWORK_SERNET /E /android:name=com.android.launchermis.READ_SETTINGS /android:name=android.permisandroid:name=android.permis android:name=android.permis android:name=
6、android.permis android:name=android.permis android:name=android.permis android:name=android.permis.CHANGE_WIFI_SE /E / E /.ACS_WIFI_S.READ_PHONE_S.WRITE_EXTERNAL_STORAGE /.BROADCAST_STICKY /.WRITE_SETTINGS /.READ_PHONE_SE /3)在布局 xml 文件中添加地圖控件;4)在應用程序創建時初始化 SDK的 Context 全局變量:public class MainActivity
7、 extendivity Override5)創建地圖 Activity,管理地圖生命周期;public class MainActivity extendivity MapView mMapView = null;Overrideprotected void onCreate(Bundle savedInstane) super.onCreate(savedInstane);/在使用 SDK 各組件之前初始化 context 信息,傳入 ApplicationContext/注意該方法要再 setContentView 方法之前實現 SDKInitializer.initialize(get
8、ApplicationContext(); setContentView(R.layout.activity_main);/獲取地圖控件mMapView = (MapView) findViewById(R.id.bmapView);Overrideprotected void onDestroy() super.onDestroy();/在 activity 執行 onDestroy 時執行 mMapView.onDestroy(),實現地圖生命周期管理mMapView.onDestroy();Overrideprotected void onResume() super.onResume(
9、);/在 activity 執行 onResume 時執行 mMapView. onResume (),實現地圖生命周期管理mMapView.onResume();Overrideprotected void onPause() super.onPause();/在 activity 執行 onPause 時執行 mMapView. onPause (),實現地圖生命周期管理mMapView.onPause();protected void onCreate(Bundle savedInstane) super.onCreate(savedInstane);/在使用 SDK 各組件之前初始化
10、context 信息,傳入 ApplicationContext/注意該方法要再 setContentView 方法之前實現 SDKInitializer.initialize(getApplicationContext(); setContentView(R.layout.activity_main);注意:在 SDK 各功能組件使用之前都需要調用SDKInitializer.initialize(getApplicationContext();,因此建議該方法放在 Application 的初始化方法中完成以上步驟后,運行程序,即可在您的應用中顯示如下地圖:以上的例子為大家介紹了如何構建一
11、個基礎的地圖頁面。地圖控件自 v2.3.5 版本起,支持多實例,即開發者可以在一個頁面中建立多個地圖對象,并且針對這些對象分別操作且不會產生相互干擾。具體使用方法請參考 MutiMapViewDemo 中的相關介紹。此外,自 v2.3.5 版本開始。MapView 控件還增加了對 Fragment 框架的支持。用戶可以使用SupportMapFragment 控件完成相應框架內的開發工作(詳見 MapFragmentDemo)6)設置中心點/ 設定中心點坐標Lng po= new Lng(30.459891, 114.436291);/ 定義地圖狀態MapSMapSus mMapSus= ne
12、w(pous.Builder().).zoom(16).build();/ 定義MapSusUpdate對象,以便描述地圖狀態將要發生的變化MapSMapSusUpdate mMapSusUpdate =usUpdateFactory.newMapSus(mMapSus);/ 改變地圖狀態mBaiduMap.setMapSus(mMapSusUpdate);四、基礎地圖(一)簡介開發者可利用 SDK 提供的接口,使用為您提供的基礎地圖數據。目前地圖 SDK所提供的地圖等級為 3-19 級,所包含的信息有建筑物、道路、河流、學校、公園等內容。所有疊加或覆蓋到地圖的內容,統稱為地圖覆蓋物。如標注、
13、矢量圖形元素(包括:折線、多邊形和圓等)、定位圖標等。覆蓋物擁有自己的地理坐標,當您拖動或縮放地圖時,它們會相應的移動。地圖 SDK 為廣大開發者提供的基礎地圖和上面的各種覆蓋物元素,具有一定的層級壓蓋關系,具體如下(從下至上的順序):1、基礎底圖(包括底圖、底圖道路、 2、地形圖圖層(GroundOverlay);3、熱力圖圖層(HeatMap);圖等);4、實時路況圖圖層(BaiduMap.setTrafficEnabled(true););5、城市熱力圖(BaiduMap.setBaiduHeatMnabled(true);); 了解6、底圖標注(指的是底圖上面自帶的那些 POI 元素)
14、;7、幾何圖形圖層(點、折線、弧線、圓、多邊形);8、標注圖層(Marker),文字繪制圖層(Text);9、指南針圖層(當地圖發生旋轉和視角變化時,默認出現在左上角的指南針); 10、定位圖層(BaiduMap.setMyLocationEnabled(true););11、彈出窗圖層(InfoWindow);12、自定義 View(MapView.addView(View););(二)地圖類型地圖 Android SDK 為您提供了兩種類型的地圖資源(普通矢量地圖和圖),開發者可以利用BaiduMap 中的 mapType()方法來設圖類型。代碼如下:(三)實時交通圖當前,范圍內已支持多個
15、城市實時路況查詢,且會陸續開通其他城市。已開通城市列表可查看。在地圖上打開實時路況的代碼如下:(四)城市熱力圖地圖 SDK 繼為廣大開發者開放熱力圖本地繪制能力之后,再次進一步開放據的城市熱力圖層,幫助開發者構建形式更加多樣的移動端應用。自有數城市熱力圖的性質及使用與實時交通圖類似,只需要簡單的接口調用,即可在地圖上展現樣式豐富的在地圖上開啟城市熱力圖。城市熱力圖的代碼如下:mMapView = (MapView) findViewById(R.id.bmapView); mBaiduMap = mMapView.getMap();/開啟城市熱力圖mBaiduMap.setBaiduHeatM
16、nabled(true);mMapView = (MapView) findViewById(R.id.bmapView); mBaiduMap = mMapView.getMap();/開啟交通圖mBaiduMap.setTrafficEnabled(true);mMapView = (MapView) findViewById(R.id.bmapView); mBaiduMap = mMapView.getMap();/普通地圖mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);/地圖mBaiduMap.setMapType(BaiduMap.MA
17、P_TYPE_SALITE);(五)覆蓋物常用類ArcOptions, 弧線覆蓋物 CircleOptions, 圓形 DotOptions, 點狀覆蓋物 GroundOverlayOptions, MarkerOptions, 標注覆蓋物PolygonOptions, 幾何圖形覆蓋物 PolylineOptions, 折線覆蓋物 TextOptions 文字覆蓋物覆蓋物1)標注覆蓋物開發者可根據自己實際的業務需求,利用標注覆蓋物,在地圖指定的位置上添加標注信息。具體實現方法如下:/定義 Maker 坐標點LatLng point = new LatLng(39.963175, 116.400
18、244);/構建 Marker 圖標BitmapDescriptor bitmap = BitmapDescriptorFactory.fromResource(R.drawable.icon_marka);/構建 MarkerOption,用于在地圖上添加 MarkerOverlayOptions option = new MarkerOptions().position(point).icon(bitmap);/在地圖上添加 Marker,并顯示mBaiduMap.addOverlay(option);InfoWindow彈出框覆蓋物TextOptionsAttributesP l li
19、O tionsAttributesPolygonOptionsAttributesMarkerOptionsAttributesGdO l Options針對已經添加在地圖上的標注,可采用如下方式進行手勢拖拽:第一步,設置可拖拽:第二步,設置方法:/調用 BaiduMap 對象的 setOnMarkerDragListener 方法設置 marker 拖拽的mBaiduMap.setOnMarkerDragListener(new OnMarkerDragListener() public void onMarkerDrag(Marker marker) /拖拽中public void onM
20、arkerDragEnd(Marker marker) /拖拽結束public void onMarkerDragStart(Marker marker) /開始拖拽);OverlayOptions options = new MarkerOptions().ition(llA) /設置 marker 的位置.icon(bdA) /設置 marker 圖標.zIndex(9) /設置 marker 所在層級.draggable(true); /設置手勢拖拽/將 marker 添加到地圖上marker = (Marker) (mBaiduMap.addOverlay(options);里面可以使
21、用marker.getition().latitude 得到緯度marker.getition().longitude 得到經度針對已添加在地圖上的標注覆蓋物,可利用如下方法進行修改和刪除操作:marker.remove(); /調用 Marker 對象的 remove 方法實現指定 marker 的刪除 2)幾何圖形覆蓋物地圖 SDK 提供多種結合圖形覆蓋物,利用這些圖形,可幫助您構建更加豐富多彩的地圖應用。目前提供的幾何圖形有:點(Dot)、折線(Polyline)、弧線(Arc)、圓(Circle)、多邊形(Polygon)。下面以多邊形為例,向大家介紹如何使用幾何圖形覆蓋物:/定義多邊
22、形的五個頂點L ng pt1 = new L ng(39.93923, 116.357428); L ng pt2 = new L ng(39.91923, 116.327428); L ng pt3 = new L ng(39.89923, 116.347428); L ng pt4 = new L ng(39.89923, 116.367428); L ng pt5 = new L ng(39.91923, 116.387428);List pts = new ArrayList(); pts.add(pt1);pts.add(pt2);pts.add(pt3);pts.add(pt4);
23、pts.add(pt5);/構建用戶繪制多邊形的 Option 對象OverlayOptions polygonOption = new PolygonOptions().pos(pts).stroke(new Stroke(5, 0 xAA00FF00).fillColor(0 xAAF00);/在地圖上添加多邊形 Option,用于顯示mBaiduMap.addOverlay(polygonOption);3)文字覆蓋物文字,在地圖中也是一種覆蓋物,開發者可利用相關的接口,快速實現在地圖需求。實現方式如下:寫文字的/定義文字所顯示的坐標點Lng llText = new Lng(39.86
24、923, 116.397428);/構建文字 Option 對象,用于在地圖上添加文字OverlayOptions textOption = new TextOptions().bgColor(0 xAAF00) /注意顏色.fontSize(24).fontColor(0 xF00FF).text(就看你出不出來).roe(-30).ition(llText);/在地圖上添加該文字對象并顯示mBaiduMap.addOverlay(textOption);4)彈出窗覆蓋物彈出窗覆蓋物的實現方式如下,開發者可利用此接口,構建具有更強交互性的地圖頁面。下圖為點擊 Marker 彈出 InfoWi
25、ndow 的示例圖,開發者只需將 InfoWindow 的顯示方法寫在 Maker 的點擊事件處理中即可實現該效果。 mBaiduMap.setOnMarkerClickListener(new OnMarkerClickListener() OverridepubliconMarkerClick(Marker arg0) / 顯示InfoWindow mBaiduMap.showInfoWindow(mInfoWindow); return true;);/創建 InfoWindow 展示的 viewButton button = new Button(getApplicationConte
26、xt(); button.setBackgroundResource(R.drawable.popup);/定義用于顯示該 InfoWindow 的坐標點Lng pt = new Lng(39.86923, 116.397428);/創建 InfoWindow , 傳入 view, 地理坐標, y 軸偏移量InfoWindow mInfoWindow = new InfoWindow(button, pt, -47);/顯示 InfoWindowmBaiduMap.showInfoWindow(mInfoWindow);(六)地形圖圖層地形圖圖層(GroundOverlay),又可叫做圖層,即
27、開發者可在地圖的指定位置上添加圖片。該可隨地圖的平移、縮放、旋轉等操作做相應的變換。該圖層是一種特殊的 Overlay,它位于底圖和底圖標注層之間(即該圖層不會遮擋地圖標注信息)。在地圖中添加使用地形圖覆蓋物的方式如下:/定義 Ground 的顯示地理范圍Lng southwest = new Lng(39.92235, 116.380338); Lng northeast = new Lng(39.947246, 116.414977); LngBounds bounds = new LngBounds.Builder().include(northeast).include(southwe
28、st).build();/定義 Ground 顯示的BitmapDescriptor bdGround = BitmapDescriptorFactory.fromResource(R.drawable.ground_overlay);/定義 Ground 覆蓋物選項OverlayOptions ooGround = new GroundOverlayOptions().itionFromBounds(bounds).image(bdGround).transparency(0.8f);/在地圖中添加 Ground 覆蓋物mBaiduMap.addOverlay(ooGround);(七)熱力
29、圖功能(了解)熱力圖是用不同顏色的區塊疊加在地圖上描述人群分布、密度和變化趨勢的一個產品,地圖 SDK 將繪制熱力圖的能力為廣大開發者開放,幫助開發者利用自有數據,構建屬于自己的熱力圖,提供豐富的展示效果。利用熱力圖功能構建自有數據熱力圖的方式如下:第一步,設置顏色變化:第二步,準備數據:第三步,添加、顯示熱力圖:/在大量熱力圖數據情況下,build 過程相對較慢,建議放在新建線程實現HeatMap heatmap = new HeatMap.Builder().data(randomList).gradient(gradient).build();/以下數據為隨機生成地理位置點,開發者根據自
30、己的實際業務,傳入自有位置數據即可List randomList = new ArrayList(); Random r = new Random();for (i = 0; i 500; i+) / 116.220000,39.780000 116.570000,40.150000rlat = r.next(370000); rlng = r.next(370000); lat = 39780000 + rlat; lng = 116220000 + rlng;Lng ll = new Lng(lat / 1E6, lng / 1E6); randomList.add(ll);/設置漸變顏色
31、值 DEFAULT_GRADIENT_COLORS = Color.rgb(102, 225, 0), Color.rgb (255, 0, 0) ;/設置漸變顏色起始值float DEFAULT_GRADIENT_START_POS = 0.2f, 1f ;/構造顏色漸變對象Gradient gradient = new Gradient(DEFAULT_GRADIENT_COLORS, DEFAULT_GRADIENT_START_POS);第四步,刪除熱力圖:heatmap.removeHeatMap();/在地圖上添加熱力圖mBaiduMap.addHeatMap(heatmap);(
32、八)檢索結果覆蓋物針對檢索功能模塊(POI 檢索、線路規劃等),地圖 SDK 還對外提供相應的覆蓋物來快速展示結果信息。這些方法都是開源的,開發者可根據自己的實際去求來做個性化的定制。利用檢索結果覆蓋物展示POI 搜索結果的方式如下:第一步,構造自定義 PoiOverlay 類;第二步,在POI 檢索回調接口中添加自定義的 PoiOverlay;public void onGetPoiResult(PoiResult result) if (result = null | result.error = SearchResult.ERRORNO.RESU LT_NOT_FOUND) return
33、;if (result.error = SearchResult.ERRORNO.NO_ERROR) mBaiduMap.clear();/創建 PoiOverlayPoiOverlay overlay = new MyPoiOverlay(mBaiduMap);/設置 overlay 可以處理標注點擊事件mBaiduMap.setOnMarkerClickListener(overlay);/設置 PoiOverlay 數據overlay.setData(result);/添加 PoiOverlay 到地圖中 overlay.addToMap(); overlay.zoomToSpan();
34、 return;private class MyPoiOverlay extends PoiOverlay public MyPoiOverlay(BaiduMap baiduMap) super(baiduMap);OverridepubliconPoiClick(index) super.onPoiClick(index); return true;(九)利用 TransitRouteOverlay 展示換乘結果運行結果如下:/在線路規劃回調方法中添加 TransitRouteOverlay 用于展示換乘信息public void onGetTransitRouteResult(Trans
35、itRouteResult result) if (result = null | result.error != SearchResult.ERRORNO.NO_E RROR) /未找到結果return;if (result.error = SearchResult.ERRORNO.AMBIGUOUS_ROURE_ADDR)/起終點或途經點地址有岐義,通過以下接口獲取建議查詢信息/result.getSuggestAddrInfo()return;if (result.error = SearchResult.ERRORNO.NO_ERROR) route = result.getRouin
36、es().get(0);/創建路線規劃線路覆蓋物TransitRouteOverlay overlay = new MyTransitRouteOverlay(mBa idumap);/設置路線規劃數據overlay.setData(route);/將路線規劃覆蓋物添加到地圖中 overlay.addToMap(); overlay.zoomToSpan();(十)實現線路規劃/ 處理搜索按鈕響應EditText editSt = (EditText) findViewById(R.id.start); EditText editEn = (EditText) findViewById(R.i
37、d.end);/ 設置起終點信息,對于tranist search 來說,城市名無意義PlanNode stNode = PlanNode.withCityNameAndPlaceName(, editSt.getText().toString(); PlanNode enNode = PlanNode.withCityNameAndPlaceName(, editEn.getText().toString();/ 實際使用中請對起點終點城市進行正確的設定if (v.getId() = R.id.drive) mSearch.(new DrivingRoutePlanOption().from(stNode).t
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教版(2024)九年級上冊23.1 圖形的旋轉第1課時教案
- 七年級地理上冊 1.1《地球和地球儀》經線、緯線教學設計 (新版)新人教版
- 白內障病人護理查房
- 六年級語文上冊 第六單元 18 古詩三首 浪淘沙教學設計 新人教版
- 五年級上信息技術教學設計-圖文配樂秀詩作-交大版
- 2024中國鐵路工程集團有限公司所屬單位崗位合集筆試參考題庫附帶答案詳解
- 2024中國通號資本運營公司(籌)總經理副總經理崗位招聘4人筆試參考題庫附帶答案詳解
- 七年級道德與法治上冊 第四單元 生命的思考教學設計 新人教版
- 2024中國聯通國際有限公司校園招聘(4個崗位)筆試參考題庫附帶答案詳解
- 寫作《語言簡明》教學設計2023-2024學年統編版語文七年級下冊
- 育兒真經知到課后答案智慧樹章節測試答案2025年春浙江中醫藥大學
- 2025合同模板個人車位轉讓合同 范本
- 2025-2030動力電池回收產業市場深度調研及發展趨勢與投資戰略研究報告
- 2025《中國建設銀行房產抵押合同》
- 企業集團文件與檔案管理制度
- 2024福建漳州市九龍江集團有限公司招聘10人筆試參考題庫附帶答案詳解
- 建筑行業勞動保護制度與措施
- 中國少數民族文化知到課后答案智慧樹章節測試答案2025年春云南大學
- 初級車工(五級)技能認定理論考試題(附答案)
- 2025年監理工程師考試《建設工程監理案例分析(水利工程)》綜合案例題
- 2025年自考學位英語試題及答案
評論
0/150
提交評論