1. 程式人生 > >android百度地圖:在地圖上繪製點、線、多邊形、圓形和文字

android百度地圖:在地圖上繪製點、線、多邊形、圓形和文字

轉載自:http://blog.csdn.net/rt77777/article/details/9186691

首先介紹一個類:GraphicsOverlay

這是一個在地圖上繪製圖形的overlay。GraphicsOverlay通過呼叫setData(Graphic g) 完成圖形繪製。

Graphic 通過構造方法Graphic(Geometry g, Symbol s) 獲得。Geometry 是幾何圖形,而Symbol是幾何圖形的樣式, 

設定線的樣式:setLineSymbol(Symbol.Color color, int width) 

設定點的樣式:setPointSymbol(Symbol.Color color)

設定面的樣式:setSurface(Symbol.Color color, int status, int linewidth)

Geometry 就是一個幾何圖形,

繪製圓:setCircle(GeoPoint geoPoint, int radius)

繪製矩形:setEnvelope(GeoPoint geoPoint1, GeoPoint geoPoint2)

繪製點:setPoint(GeoPoint geoPoint, int pixel)

繪製多邊形:setPolygon(GeoPoint[] geoPoints)

繪製線:setPolyLine(GeoPoint[] geoPoints)

2.1.2還新增了Textoverlay,可以在地圖上新增文字。

  1. TextOverlay textOverlay = new TextOverlay(mMapView);  
  2.         mMapView.getOverlays().add(textOverlay);  
  3.         textOverlay.addText(drawText()); //drawText()返回的是TextItem 類

具體來看看程式碼怎麼寫:

繪製線:

  1. /** 
  2.      * 繪製折線,該折線狀態隨地圖狀態變化 
  3.      * @return 折線物件
     
  4.      */
  5.     public Graphic drawLine(){  
  6.         double mLat = 39.97923;  
  7.         double mLon = 116.357428;  
  8.         int lat = (int) (mLat*1E6);  
  9.         int lon = (int) (mLon*1E6);       
  10.         GeoPoint pt1 = new GeoPoint(lat, lon);  
  11.         mLat = 39.94923;  
  12.         mLon = 116.397428;  
  13.         lat = (int) (mLat*1E6);  
  14.         lon = (int) (mLon*1E6);  
  15.         GeoPoint pt2 = new GeoPoint(lat, lon);  
  16.         mLat = 39.97923;  
  17.         mLon = 116.437428;  
  18.         lat = (int) (mLat*1E6);  
  19.         lon = (int) (mLon*1E6);  
  20.         GeoPoint pt3 = new GeoPoint(lat, lon);  
  21.         //構建線
  22.         Geometry lineGeometry = new Geometry();  
  23.         //設定折線點座標
  24.         GeoPoint[] linePoints = new GeoPoint[3];  
  25.         linePoints[0] = pt1;  
  26.         linePoints[1] = pt2;  
  27.         linePoints[2] = pt3;   
  28.         lineGeometry.setPolyLine(linePoints);  
  29.         //設定樣式
  30.         Symbol lineSymbol = new Symbol();  
  31.         Symbol.Color lineColor = lineSymbol.new Color();  
  32.         lineColor.red = 255;  
  33.         lineColor.green = 0;  
  34.         lineColor.blue = 0;  
  35.         lineColor.alpha = 255;  
  36.         lineSymbol.setLineSymbol(lineColor, 10);  
  37.         //生成Graphic物件
  38.         Graphic lineGraphic = new Graphic(lineGeometry, lineSymbol);  
  39.         return lineGraphic;  
  40.     }  

繪製多邊形:
  1. /** 
  2.    * 繪製多邊形,該多邊形隨地圖狀態變化 
  3.    * @return 多邊形物件 
  4.    */
  5.    public Graphic drawPolygon(){  
  6.     double mLat = 39.93923;  
  7.         double mLon = 116.357428;  
  8.     int lat = (int) (mLat*1E6);  
  9.     int lon = (int) (mLon*1E6);       
  10.     GeoPoint pt1 = new GeoPoint(lat, lon);  
  11.     mLat = 39.91923;  
  12.         mLon = 116.327428;  
  13.     lat = (int) (mLat*1E6);  
  14.     lon = (int) (mLon*1E6);  
  15.     GeoPoint pt2 = new GeoPoint(lat, lon);  
  16.     mLat = 39.89923;  
  17.         mLon = 116.347428;  
  18.     lat = (int) (mLat*1E6);  
  19.     lon = (int) (mLon*1E6);  
  20.     GeoPoint pt3 = new GeoPoint(lat, lon);  
  21.     mLat = 39.89923;  
  22.         mLon = 116.367428;  
  23.     lat = (int) (mLat*1E6);  
  24.     lon = (int) (mLon*1E6);  
  25.     GeoPoint pt4 = new GeoPoint(lat, lon);  
  26.     mLat = 39.91923;  
  27.         mLon = 116.387428;  
  28.     lat = (int) (mLat*1E6);  
  29.     lon = (int) (mLon*1E6);  
  30.     GeoPoint pt5 = new GeoPoint(lat, lon);  
  31.     //構建多邊形
  32.         Geometry polygonGeometry = new Geometry();  
  33.         //設定多邊形座標
  34.         GeoPoint[] polygonPoints = new GeoPoint[5];  
  35.         polygonPoints[0] = pt1;  
  36.         polygonPoints[1] = pt2;  
  37.         polygonPoints[2] = pt3;   
  38.         polygonPoints[3] = pt4;   
  39.         polygonPoints[4] = pt5;   
  40.         polygonGeometry.setPolygon(polygonPoints);  
  41.         //設定多邊形樣式
  42.         Symbol polygonSymbol = new Symbol();  
  43.         Symbol.Color polygonColor = polygonSymbol.new Color();  
  44.         polygonColor.red = 0;  
  45.         polygonColor.green = 0;  
  46.         polygonColor.blue = 255;  
  47.         polygonColor.alpha = 126;  
  48.         polygonSymbol.setSurface(polygonColor,1,5);  
  49.         //生成Graphic物件
  50.         Graphic polygonGraphic = new Graphic(polygonGeometry, polygonSymbol);  
  51.         return polygonGraphic;  
  52.    }  

繪製點:
  1. /** 
  2.     * 繪製單點,該點狀態不隨地圖狀態變化而變化 
  3.     * @return 點物件 
  4.     */
  5.    

    相關推薦

    Android 定位及地圖SDK

    一 、Android 百度定位SDK 1 、開發文件 1.2:配置環境: 1.2.1 :新增庫檔案 a) 在 相關下載下載最新 庫檔案。 b)使用Eclipse開發的開發者,將SO檔案的壓縮檔案解壓出來,把對應架構下的SO檔案放入開發者自己APP的對應架構下的資料夾中

    android地圖地圖繪製多邊形圓形文字

    轉載自:http://blog.csdn.net/rt77777/article/details/9186691 首先介紹一個類:GraphicsOverlay 這是一個在地圖上繪製圖形的overlay。GraphicsOverlay通過呼叫setDa

    Android地圖繪製圓形圓形半徑可動態變化

    問題:百度地圖繪製圓形,圓形半徑可隨進度拖動條發生改變 思路:圓形本身是一個覆蓋物,可參考百度地圖Demo中的OverlayDemo.java這個類進行實現。完成畫圓之後,圓形半徑如何隨著進度條的拖動進行變化?進度條與畫圓方法聯動,隨著進度條的拖動首先清除掉上次繪製的圓形重

    [android] 地圖開發 (一).申請AK顯示地圖及解決顯示空白網格問題

    定義 gps 官方 應用程序 2.x lns settings sap xmlns 近期做android百度地圖,可是使用baidumapapi_v2_3_1.jar和libBaiduMapSDK_v2_3_1.so顯示百度地圖時總是遇到問題——僅僅顯示

    android 地圖(具體請看開放平臺)

    int over layout tco pap 平臺 jar pil inter compile files(‘libs/BaiduLBS_Android.jar‘) compile ‘com.android.support:appcompat-v7:26.+‘

    Android地圖(二)結合方向傳感器我們自己定位哪裏走

    troy 真機 pretty 刪除文件 RR tap 大神 素材 near Android百度地圖(二)結合方向傳感器我們自己定位哪裏走 本文代碼在http://b

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

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

    Android地圖開發定位路線導航

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

    Android 地圖自定義地圖覆蓋物(Marker)

      理論和高德地圖一模一樣,換個sdk而已,換湯不換藥,詳情可以參考上一篇高德地圖https://blog.csdn.net/Crystal_xing/article/details/84314359,下面只給出核心程式碼:   //自定義佈局 Vie

    Android 地圖如何讓所有的Marker都顯示在螢幕範圍內。

    前言:        高德地圖有方法直接呼叫就可以,總結下百度地圖的(直接複製就可以) 程式碼: LatLngBounds.Builder builder = new LatLngBounds.B

    Android地圖開發之取消後臺持續定位

    網上的方法 1:注掉option.setScanSpan(1000);//注掉後只定位一次,感覺不太好 2:呼叫mLocClient.unRegisterLocationListener方法。//取消監聽的方法不讓後臺定位,樓主只成功過一次所以不太靠譜不推薦使用 3 :

    Android地圖開發-自定義地圖的使用

    設定個性化地圖config檔案路徑 */ public static void setMapCustomFile(Context context, String PATH) { FileOutputStream out = null; InputStream inputStream = null; Strin

    Android地圖坑之Error inflating class com.baidu.mapapi.map.MapView

    今天開始研究百度SDK,根據開發文件一步步操作,坑出現了,我添加了一個MapView顯示地圖,活動中getMap,它閃退!!!! 報錯指向這一行 報錯如下 百度了一下,有幾個比較常見的問題: 1、沒有初始化context,即沒有在setContentView(R.layout.act

    android地圖開發之完善版

    鑑於前段時間接了了小專案,一直沒時間完善百度地圖餘下的工作,現在終於完善出來了。現在給大家分享下。。。以下是部分功能截圖 這裡面做語音的時候測試了,提示沒語音裝置,在網上看說下一個google voice就可以了,但是我始終沒成功,所以語音那裡沒實現, 如果有朋友知道,可以

    Android地圖api呼叫

    1.首先,準備工作。前往百度地圖開放平臺 註冊百度開發者賬號,建立應用,獲取API key 地址:http://lbsyun.baidu.com/apiconsole/key 建立應用需要應用的數字簽名SHA1和包名 SHA1可以通過雙擊gradle裡面的signingRe

    Android 地圖開發(一)如何呼叫地圖介面在專案中顯示地圖以及實現定位

    二、下載百度地圖API庫 然後新增到專案中即可。   三、在專案清單AndroidMainifest.xml配置百度地圖API key和新增相關許可權                         四、在專案呼叫百度地圖專案功能,這篇文章就首先講講顯示地圖和定位的功能 首先

    android 地圖系列之新增覆蓋物覆蓋物的選事件

    之前講了百度地圖定位和地圖基本操作,這篇部落格講一下,怎麼去給地圖新增覆蓋物,並當點選覆蓋物的時候顯示詳細資訊。 要給地圖新增覆蓋物,首先需要覆蓋物的經緯度,如果還要實現點選事件,顯示詳細的資訊,還需要覆蓋物的描述資訊(如圖片,位置名稱等),所以先新建一個實體

    Android 地圖兩點畫弧線

    import android.support.annotation.NonNull; import com.baidu.mapapi.map.ArcOptions; import com.baidu.mapapi.map.OverlayOptions; import com.baidu.m

    android 地圖

    一、基本概念: (一)、百度地圖: 百度地圖 Android SDK是一套基於Android 2.1及以上版本裝置的應用程式介面。 您可以使用該套 SDK開發適用於Android系統移動裝置的地圖應用,通過呼叫地圖SDK介面,您可以輕鬆訪問百度地圖服務和資料, 構建功能豐富、互動性強的地圖類

    android 地圖 marker設定忽明忽暗閃爍

    說下思路  百度地圖設定marker的時候可以這是icon和icons 思路就是設定幾個不同透明度的相同的圖片的bitmap作為icons 話不多說 直接上碼 1。這是核心程式碼 //閃爍點 bb