1. 程式人生 > >百度地圖的簡單開發之實現基本地圖的型別及覆蓋物的新增(二)

百度地圖的簡單開發之實現基本地圖的型別及覆蓋物的新增(二)

今天,我們接著上一講,上一講我們把地圖上介面自定義了一番,加上了按鈕等一系列的控制元件,但是還沒有給這些加上具體的功能,今天這一講,主要是實現幾種地圖的切換,是否開啟實時交通,通過自定義的按鈕去控制地圖的縮放,以及在地圖上新增覆蓋物及相關顯示覆蓋物的資訊。

   一、先給路況那個控制元件新增實時路況開關的功能,這個功能比較簡單,就是通過一個API中的方法isTrafficEnabled()來判斷是不是已經處於實時交通的開啟狀態,如果已經是打開了,當點選後就應該關閉。

[java] view plain copy  print?在CODE上檢視程式碼片派生到我的程式碼片
  1. /** 
  2.  * @author mikyou
     
  3.  * 是否開啟實時交通 
  4.  * */
  5. privatevoid switchRoadCondition() {  
  6.     if (myBaiduMap.isTrafficEnabled()) {//如果是開著的狀態,當點選後,就會出關閉狀態
  7.         myBaiduMap.setTrafficEnabled(false);  
  8.         mapRoad.setImageResource(R.drawable.main_icon_roadcondition_off);  
  9.     }else{//如果是的關閉的狀態,當點選後,就會處於開啟的狀態
  10.         myBaiduMap.setTrafficEnabled(true
    );  
  11.         mapRoad.setImageResource(R.drawable.main_icon_roadcondition_on);  
  12.     }  
  13. }  


二、然後接著就是新增選擇地圖型別的功能,這裡提供了3種類型的地圖分別是:普通地圖、衛星地圖、熱力地圖。我是通過彈出一個選擇的對話方塊來供使用者選擇不同型別的地圖。

[java] view plain copy  print?在CODE上檢視程式碼片派生到我的程式碼片
  1. /** 
  2.      * @author mikyou 
  3.      * 選擇地圖的型別 
  4.      * */
  5.     private
    void selectMapType() {  
  6.         AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);  
  7.         builder.setIcon(R.drawable.icon)  
  8.         .setTitle("請選擇地圖的型別")  
  9.         .setItems(types, new DialogInterface.OnClickListener() {  
  10.             @Override
  11.             publicvoid onClick(DialogInterface dialog, int which) {  
  12.                 String select=types[which];  
  13.                 if (select.equals("普通地圖")) {  
  14.                     myBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);  
  15.                 }elseif (select.equals("衛星地圖")) {  
  16.                     myBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);  
  17.                 }elseif (select.equals("熱力地圖(已關閉)")||select.equals("熱力地圖(已開啟)")) {  
  18.                     if(myBaiduMap.isBaiduHeatMapEnabled()) {  
  19.                         myBaiduMap.setBaiduHeatMapEnabled(false);  
  20.                         Toast.makeText(MainActivity.this"熱力地圖已關閉"0).show();  
  21.                         types[which]="熱力地圖(已關閉)";  
  22.                     }else {  
  23.                         myBaiduMap.setBaiduHeatMapEnabled(true);  
  24.                         Toast.makeText(MainActivity.this"熱力地圖已開啟"0).show();  
  25.                         types[which]="熱力地圖(已開啟)";  
  26.                     }  
  27.                 }  
  28.             }  
  29.         }).show();  
  30.     }  

三、給控制地圖比例放大縮小控制元件加上,放大和縮小的功能。具體實現是這樣的,設定一個全域性的變數來表示實時的比例,然後通過點選放大和縮小的控制元件,來控制這個變數增加和減少,並實時將這個變數設定給建立地圖狀態物件的引數,從而實現實時控制放大和縮小地圖。

[java] view plain copy  print?在CODE上檢視程式碼片派生到我的程式碼片
  1. /** 
  2.  * @author zhongqihong 
  3.  * 放大地圖的比例 
  4.  * */
  5. privatevoid narrowMapScale() {  
  6.     current-=0.5f;  
  7.     MapStatusUpdate msu=MapStatusUpdateFactory.zoomTo(15.0f+current);  
  8.     myBaiduMap.animateMapStatus(msu);  
  9. }  
  10. /** 
  11.  *@author zhongqihong 
  12.  *縮小地圖的比例  
  13.  * */
  14. privatevoid expandMapScale() {  
  15.     current+=0.5f;  
  16.     MapStatusUpdate msu2=MapStatusUpdateFactory.zoomTo(15.0f+current);  
  17.     myBaiduMap.animateMapStatus(msu2);  
  18. }  

四、接著就是在地圖新增覆蓋物,並且給該覆蓋物新增點選事件,點選後並且在底部顯示出一個介紹該地點的圖文介紹資訊,和一個InfoWindow(該InfoWindow上顯示著該地點的名稱)。主要實現的思路是這樣的,我們首先得建立一個bean來儲存每一個覆蓋物的詳細資訊。包括該覆蓋物的經緯度,圖片路徑,覆蓋物的名稱等;實際這也就是相當於ListVIew中的每個Item的資訊,而顯示覆蓋物資訊只是分散的Item而已,每個覆蓋物詳細資訊項都一樣。所以寫一個Bean可以更好地管理資料。我們有很多個覆蓋物,那麼可以建立一個bean型別的List集合存放著不同覆蓋物物件,不同覆蓋物處於地圖中不同的位置,可以根據不同Bean中經緯度值構成的經緯度物件不同,只要拿到了經緯度物件,那麼就可以在地圖上唯一確定這個點,並且在這個點會顯示一個自定義的圖示。

[java] view plain copy  print?在CODE上檢視程式碼片派生到我的程式碼片
  1. /** 
  2.  * @author mikyou 
  3.  * 初始化覆蓋物資訊資料 
  4.  * */
  5. privatevoid initMarksData() {  
  6.     markInfoList=new ArrayList<MarkInfo>();  
  7.     markInfoList.add(new MarkInfo(32.079254118.787623, R.drawable.pic1, "英倫貴族小旅館""距離209米"1888));  
  8.     markInfoList.add(new MarkInfo(32.064355118.787624, R.drawable.pic2, "沙井國際高階會所""距離459米"388));  
  9.     markInfoList.add(new MarkInfo(28.7487420000115.8748860000, R.drawable.pic4, "華東交通大學南區""距離5米"888));  
  10.     markInfoList.add(new MarkInfo(28.7534890000115.8767960000, R.drawable.pic3, "華東交通大學北區"

    相關推薦

    地圖簡單開發實現基本地圖型別覆蓋物新增

    今天,我們接著上一講,上一講我們把地圖上介面自定義了一番,加上了按鈕等一系列的控制元件,但是還沒有給這些加上具體的功能,今天這一講,主要是實現幾種地圖的切換,是否開啟實時交通,通過自定義的按鈕去控制地圖的縮放,以及在地圖上新增覆蓋物及相關顯示覆蓋物的資訊。   

    4.ASP.NET全棧開發在MVC中使用服務端驗證

    help alt 來講 測試 數據類型 throw 存在 數據 問題 首先聲明,這篇博文是完善.ASP.NET全棧開發之在MVC中使用服務端驗證 的,所以重復內容,我就不過多的闡述,很多問題都是在實踐中去發現,然後再去完善,這篇博文也一樣,建立在已閱 “.ASP.NET

    Linux平臺下使用者基本管理機制原理剖析

    Linux平臺下使用者基本管理機制及原理剖析(二) 在前面的部落格中,我們對虛擬環境下使用者的新建、檢視、刪除以及使用者組的新建和管理有了一定的瞭解,這篇文章我們 接著瞭解虛擬環境下的使用者資訊的更改、使用者認證資訊的檢視,使用者密碼的管理以及使用者授權。   1.使用者資

    地圖簡單開發實現地圖全景,內景展示功能

    今天,我就接著來淺談一下關於百度地圖的內景,外景的展示功能。今天具體要實現的功能就是輸入該地點的名稱然後就展示該地點的內景圖片,有內景就展示內景,沒有則顯示該地點的街景,該功能是參考百度地圖官方的API來實現。      實現街景展示的地點的搜尋,需要涉及到幾個

    Android 使用雲文字識別實現通用文字識別

    今天給小夥伴們帶來的是如何使用百度雲api實現文字識別功能。 先上截圖 首介面,demo比較簡單 拍照 識別圖片內容 這就是整個demo的執行效果。 接下來我們看下專案結構,比較簡單整潔 接下來我大致說一下實現過程 首先我們需要去百度雲開放

    python一行程式碼實現翻譯和有道翻譯結果獲取-----py學習爬蟲歷程

    更新(18-6-2):利用requests庫只需一行程式碼就可以獲取結果,程式碼在最後前言:本文參考於https://blog.csdn.net/c406495762/article/details/59095864一.本節主要用到的知識1-1:urllib.request.

    linux驅動開發蜂鳴器驅動源碼分析

    linux 蜂鳴器 驅動 蜂鳴器的驅動源碼在/driver/char/buzzer/x210-buzzer.c文件中,源碼如下#include <linux/module.h> #include <linux/kernel.h> #include <linux

    自己寫的加密網頁,與網盤私密很相似,需要密碼才能訪問原創

    audio 查詢 數字 code 頁面 time AR 開發 其他 題記: 馬上就要招聘了,所以我打算放置簡歷在自己的網頁上,但是又不想給除了招聘的人,或者我指定的人外看,所以我需要對網頁頁面加密 我找了許多資料,查看了許多所謂的頁面加密,但是有60%左右都是網頁鎖,

    MySQL MHA + ProxySQL + keepalived 實現讀寫分離,高可用

    ProxySQL安裝 yum/rpm安裝 在github或官網上可以下載rpm包,wiki的Getting start章節有詳細介紹。 cat <<EOF | tee /etc/yum.repos.d/proxysql.repo [proxysql_repo] name= ProxyS

    前端面試題JS基本資料型別判斷

    JS基本資料型別有: Number String Boolean Undefined Object(Array,Function) Null Symbol(ES6新增) 其中Array,和Function是Object的子集。 判斷Number,String,B

    、騰訊和阿里內部的級別和薪資待遇2014

    級別和薪資待遇,除非身居其位,否則你不會知道;但是等你到那個位置知道了,卻又不能說,至少不能在公開場合談論。這是一個群眾喜聞樂見卻又諱莫如深的話題。 別問我是怎麼知道答案的,我不是網際網路獵頭,我正在做的事就是要用網際網路產品替代獵頭,因為獵頭不透明、不全面,還死貴。各

    ECharts 3.0 多座標軸統計圖一般配置詳解例項

    ECharts 是百度出品的jquery圖表外掛。相對於Chartist,擁有更加強大的功能,以及更加詳細的文件(ECharts的文件形式非常優秀,簡明易懂)。ECharts支援的圖表種類非常多,同時相容性也十分優良,故而在網站建設動態統計圖表時,是一個非常優秀

    獻給初學iOS的小盆友們——微博app專案開發十六搭建傳送微博介面

    從這節課開始我們學習搭建傳送微博介面。傳送介面看起來簡單,但是卻包含了許多細節處理。所以我們分為幾節課來完成,儘量講解詳細點。 本節內容 本節程式碼資料 16.1 設定傳送介面的導航內容 當我們點選中間加號按鈕的時候,微博會彈出一個傳送介面,

    網站開發HTML基礎知識超連結

            前面的文章我講述了HTML的基礎知識。包括:1.JSP前段設計及HTML基礎介紹;2.HTML常用標記符:HEAD、HTML屬性、BODY設定背景、註釋、FONT、B\I\U;3.HTML設定段落格式:分段P、換行BR、標題樣式Hn、HR、align對齊、列

    獻給初學iOS的小盆友們——微博app專案開發十八搭建傳送微博介面

    今天應該是這個專案最後一次更新啦,能堅持下來的小盆友真是棒棒噠。這節課我們將會完成傳送有圖片的微博,實現微博最後一個核心功能。因為微博的功能實在太多太多了,我們不可能把微博的每個功能都一一實現。小夥伴能從中學到最精髓的東西才是最主要的,萬變不離其宗,得到處理問題

    webpack學習—— 依賴圖(Dependency Graph) 構建目標Targets

    targe pan hunk ref bsp strong req class webp Dependency Graph 任何時候,一個文件依賴於另一個文件,webpack 就把此視為文件之間有依賴關系。這使得 webpack 可以接收非代碼資源(non

    zabbix系列使用ansible批量部署zabbix客戶端

    zabbix_agent ansible 批量部署客戶端 ansible ansible是新出現的自動化運維工具,基於Python開發,集合了眾多運維工具(puppet、cfengine、chef、func、fabric)的優點,實現了批量系統配置、批量程序部署、批量運行命令等功能。

    QT5:C++實現基於multimedia的音樂播放器

    彈框 rem tooltip loop dialog ets posit list sch 今天接著上一篇來實現播放器的槽函數。 先來實現播放模式,槽函數如下: 1 //播放模式 2 void Music::musicPlayPattern() 3 { 4

    從零開始Rtklib解讀篇-簡單的程式設計理論和演算法結構分析

    從bin裡進入。主進入方式為RTKLAUNCH.exe 第一個RTKPLOT右上角的小方塊可以勾選NormalAPs,RTKPOST_MKL,RTKPOST_WIN64, Minimize等選項。通常是第一個。另外64位系統下通常也是選用NormalAPs,RTKPOST_WIN

    「iOS開發」關於一對一視訊聊天直播系統技術處理

    針對視訊直播的實時流網路 LiveNet 和完整的直播雲解決方案,很多開發者對這個網路和解決方案的細節和使用場景非常感興趣。 結合實時流網路 LiveNet 和直播雲解決方案的實踐,我們將用一系列文章,更系統化地介紹當下大熱的視訊直播各環節的關鍵技術,幫助視訊直播創業者們更全面、深入地瞭解視訊直播技術,更好