mapview是個展示地圖的檢視。它可以獲取鍵盤事件(onkeydown 和onkeyup) 來支援地圖移動(東南西北)和縮放功能。它還支援多層overlay,可以在地圖上面畫座標,寫地名,畫等等。mapview只能通過mapactivity來建立。因為mapview需要在後台使用檔案系統和網路,所有這些執行緒需要在activity的生命週期中被控制。
android 是通過布局(layout)來定義ui(使用者介面)的。一般檢視(view)可以直接在布局的xml 裡面申明。但mapview不行,不知道是google 故意的,還是當前api 沒有實現。不過可以以自定義類來申明來實現:
這樣你可以新增你自己需要的其他檢視,比如乙個工具欄,或者乙個edittext 來輸入位址。基於mapview展示地圖的檢視
在詳細進入coding 之前, 我們先介紹下經緯度(geocode)。
經度是地球上乙個地點離一根被稱為本初子午線的南北方向走線以東或以西的度數。本初子午線的經度是0°,地球上其它地點的經度是向東到180°或向西到180°緯度是指某點與地球球心的連線和地球赤道面所成的線面角,其數值在0至90度之間。位於赤道以北的點的緯度叫北緯,記為n,位於赤道以南的點的緯度稱南緯,記為s。基於緯度 phi (φ) 和經度 lambda (λ)的地圖模型
使用geocode,地球上任何乙個地點都可以用精度+維度來代表。當然,geocode涉及的範圍很廣,本身就是乙個很大的課題,以後有機會我們再講。
回到android,com.google.android.maps.point 這個類代表了乙個地點的經緯度:point(int latitudee6, int longitudee6),e6 是微度(microdegrees),就是度數再乘以1000000。目前如果要指定地圖地點,一定要傳遞乙個point的類到地圖中:
// 紐約帝國大廈的經度和緯度
point p = new point(40.748356*1000000,-73.984621*1000000);
// 獲取當前地圖的控制器
mapcontroller mc = mapview.getcontroller();
// 地圖中心移動到指定的點上
mc.animateto(p);
// 放大到21級(level),level範圍1-21
mc.zoomto(21);
以拉斐特廣場為例的地圖效果
你也可以使用zoomto(int)來縮放到你需要的級別,比如獲取當前縮放等級並再縮放一級(zoom out 1 morelevel):mc.zoomto(mapview.getzoomlevel()-1)
經過縮放以後的地圖效果
mapview還提供了衛星圖、路況圖、街道圖的功能:<
-73.984703
在android 中,可以通過包裡面org.xml.sax 包來分析xml,也可以通過substring來做。如果你需要在地圖上畫地標、座標、等等,那就需要定義你自己的overlay 類:
public class myoverlay extends overlay
else if (keycode == keyevent.keycode_o)
else if (keycode == keyevent.keycode_s)
else if (keycode == keyevent.keycode_t)
return false;
}有興趣的讀者,可以去andoridcn 看看筆者發表的minigoogle map(包含所有source)。如果有機會,可以繼續深入關於gps的操作,如何在沒有gps硬體的情況下估計當前gps位置,以及使用kml,nmea來模擬gps路線等等。
android本身設計和系統的實現是乙個極其複雜的工作。就發稿時的m3-rc22a 版來看,系統還有需要充實的地方,相信在明年全面發布,真機發布之時,android會變得更加強壯和易用。感謝androidcn 社群的 lordhong( 吳巨集) 和 風雷( 李錕) 對本文成稿的貢獻。
更多關於android 中如何使用google map的文章,請閱讀maps external library。
軟體平台構建
mplab c for pic18 v3.35 upgrade version的安裝程式到microchip的 有 破解程式乙個,對v3.35有效 原理是建立假檔案,騙過c18 upgrade version的安裝程式 先執行執行破解程式,選擇c18即將要安裝的路徑後按儲存 之後直接執行c18 up...
構建LAMP平台
步驟一 恢復預設的web服務配置 利用備份檔案還原httpd.conf 將建立的虛擬web主機配置檔案改名 不要以.conf結尾 避免不必要的干擾 2 配置mysqld服務 首先啟動mysqld服務,並將其設定為開機後自動執行 然後為mysql資料庫設定乙個管理密碼 預設的管理使用者為root,密碼...
構建LNMP平台
2.構建lnmp平台 問題沿用練習一,通過調整nginx服務端配置,實現以下目標 1 配置fast cgi支援php網頁 2 建立php測試頁面,測試使用php連線資料庫的效果 方案使用2臺rhel6虛擬機器,其中一台作為lnmp伺服器 192.168.4.5 另外一台作為測試用的linux客戶機 ...