2010-09-21 189 views
0

我正在開發一個Android映射應用程序,並且已經成功將Google的ItemizedOverlay教程應用到我的代碼中。我在地圖上很好地繪製了我的小圈子。Android映射覆蓋問題

但是,我想標記我的小標誌和它的標題 - 所有的時間。我將在地圖上放置幾個不同的符號,並且能夠顯示他們的標籤將是一個很大的幫助。我使用了onTap方法,但是當您點擊屏幕時,它會佔用整個顯示屏 - 這不是很有幫助。

我還沒有設法在互聯網上找到這件事,所以我不樂觀,但如果任何人有任何建議,那將非常感激。

回答

1

不知道什麼onTap與此或你的意思是「它接管整個顯示器」,但我想顯示標籤,你將不得不自己畫。你可以用幾種方法做到這一點。一種方法是直接覆蓋ItemizedOverlay.draw方法,並遍歷每個GeoPoints並直接將標題直接繪製到Canvas上,並在該位置的某個小偏移處。另一種可能的方法是返回一個自定義標記;您可以創建一個Picture,而不是僅僅返回該符號,您可以通過繪製圓圈然後在其旁邊繪製一些文本來創建Picture,然後您可以將其包裝在PictureDrawable中,並將其用作覆蓋項目的標記。

+0

的onTap:當我對映射後的碼元點按,則顯示標題,但在遮蓋了地圖(基本上)的方式。除此之外,我認爲這並沒有太大的作用,除此之外,我確信這些數據都在應用程序中。我會採取一個措施 – Rich 2010-09-21 20:45:01

+0

糟糕,我在完成之前打回來......繼續:我會看到什麼我可以使用ItemizedOverlay.draw,謝謝你的提示。 – Rich 2010-09-21 20:49:28

+0

現在是您教我的時候了;-) - 您如何在「onTap」中顯示標題?我也是這樣做的,但是我必須在創建'TextView'的同時完成所有這些額外的工作,並且在視圖上更改'LayoutParams',以使其集中在用戶點擊的任何標記上。你有沒有找到一種方法讓覆蓋層自動爲你做? – 2010-09-21 21:51:34

0

我的方法的onTap看起來是這樣的:

 
protected boolean onTap (int index) 
{ 
    OverlayItem item = mOverlays.get (index); 
    AlertDialog.Builder dialog = new AlertDialog.Builder (mContext); 

    dialog.setTitle (item.getTitle()); 
    dialog.setMessage (item.getSnippet()); 
    dialog.show(); 
    return true; 
} 

調用應用程序通過在其上下文(本),當它實例化逐項疊加。我仍然不確定這意味着什麼,但是我保存mContext中的傳入上下文,並在onTap()中使用它。當然,自從其他人登錄到互聯網後,我無法真正承認它。它確實在屏幕上顯示了Overlay的信息,但是(不幸的是,對我來說)並不是我滿意的方式。

我正在努力重寫draw方法,但這已經被打斷了很多,並且還處於早期階段。如果有任何興趣,我會在這裏發佈。

R.

+0

尼爾更新:繪製方法被覆蓋,它似乎運行良好。我的應用很好地在我的小符號旁繪製了小標籤,我對此很滿意。讓我知道你是否對代碼感興趣。 – Rich 2010-09-27 17:30:33

+0

啊,我現在明白了,我沒有意識到你正在使用對話框。很高興聽到你想出了一些更好的東西! – 2010-10-15 14:17:27