2012-03-05 48 views
1

我正在嘗試編寫一個Android應用程序,允許用戶搜索通用目的地(例如「加油站」),並提供最多約5處附近位置供您選擇。屏幕結果將在中心顯示用戶位置,可能的目標選項將由標記指示。Android動態繪製,可點擊的地圖覆蓋?

訣竅是我不想從地圖的起始比例重新縮放地圖,因此某些可能的目的地可能無法在屏幕上顯示。我想動態地繪製從用戶位置發出並指向任何離屏目的地的可點擊方向指示符(例如箭頭)。如果有多個離屏目的地,我可能需要縮放箭頭長度以指示相對距離。如果用戶點擊箭頭,他們應該被「傳送」到屏幕外的位置。

有關如何最好地實現這一點的任何想法?我在覆蓋層上找到的唯一信息是使用靜態文件(大多數覆蓋層似乎只是標記的.PNG文件;一個示例具有從XML文件中繪製的路徑)。我需要根據方向 計算箭頭到目的地(箭頭指向的方向)以及到該位置的相對距離(箭頭長度),因此覆蓋是我在運行時必須提出的。

我認爲主要的挑戰是繪製箭頭點擊,但想到另一個問題是,我應該搜索使用谷歌地圖API,或者是這個工作更適合谷歌Places API的?

謝謝!

+0

「如果用戶點擊箭頭,他們應該被」傳送「到屏幕外的位置。關於如何最好地實現這一點的任何想法?」好吧,實施一個傳送器似乎超出了我們目前的科學知識。也許如果你致力於幫助提出物理學的萬物統一理論,把量子領域和廣義相對論聯繫起來,你可以...... :-) – CommonsWare 2012-03-05 16:36:52

+0

嗯。我想我們應該暫停傳送,直到解決動態繪製的可點擊覆蓋問題爲止! – pjd 2012-03-05 16:45:50

回答

0

我想我們應該把teleportation擱置,直到解決動態繪製,可點擊疊加的問題然後!

動態繪製的可點擊疊加層僅僅是Overlay的一個子類。您將覆蓋draw()方法中的一個或兩個,以使用Canvas 2D繪圖API呈現箭頭。您將覆蓋onTap()以通知地圖上的水龍頭,以查看他們是否敲擊箭頭。您可以通過addOverlays().add()將覆蓋圖添加到MapView

大部分覆蓋似乎只是.png文件爲標誌

那些通常ItemizedOverlay類。實現起來要簡單得多,特別是如果你是那些開發人員(像我一樣),當涉及到Canvas時,他們都是大拇指。但是,您很可能無法通過ItemizedOverlay達到您想要的效果。

我需要根據到目的地的方向(箭頭指向的方向)以及到那個位置的相對距離(箭頭長度)來計算箭頭,所以疊加是我必須上來的東西與運行時間。

正確。如果需要,您可以使用Projection來幫助在像素空間和地理空間(經度和緯度)之間進行轉換。

請注意,這一切都假定您正在嘗試使用MapActivityMapView。如果您願意,也歡迎您使用WebView或普通瀏覽器來創建自己的基於JavaScript的地圖。

+0

感謝您的指導。我會研究Canvas以及你提到的其他類和方法。我正在使用MapActivity和MapView。聽起來這將會非常具有挑戰性(對我而言),但可能比提出TOE更容易! – pjd 2012-03-06 03:20:00