2012-11-06 98 views
0

我想創建一個顯示國家地圖的活動。我想讓每個區域都可以點擊。android:繪製可點擊的地圖

enter image description here

我第一次嘗試來繪製地圖SVG數據/ JavaScript的(see here)並把它放在一個web視圖。但是,Vector Library不適用於大多數Android設備。

最好的解決方案似乎堆積區域(位圖格式)的圖像,並使它們可點擊,但我不知道該怎麼做。

對不起,是粗糙的,我解釋

謝謝!

+0

你在尋找什麼樣的功能? 「可點擊」非常廣泛。 – GraphicsMuncher

+0

謝謝你的回答。我想獲取所選區域的ID並將其作爲額外的意圖使用。 – johann

回答

1

你可以做到重疊 a 透明網格到地圖。網格由「觸敏」瓷磚組成。瓷磚尺寸必須足夠小以填充地圖的每個區域。每個地區都會包含一定數量的瓷磚。您需要將每組圖塊關聯到包含區域。然後,在瓦片上的每一次敲擊,您都可以關聯正確的區域。

編輯:例如平鋪定義

public class MapView extends ViewGroup { 

    // Tile definition 
    // 
    static enum Tile { 

     T_00 (30, Region.region_a), T_01 (31, Region.region_a) 
    , ... 
    , T_328 (288, Region.region_h); 

     private final int id; 
     private final Rg region; 

     Tile (int id, Rg region) { 
      this.id = id; 
      this.region = region; 
     } 

     public int getId() { return id; } 
     public Rg getRg() { return region; } 

    } 


// Implementation of MapView Class 
... 

PS:在我的答案所描述的實現的僅僅是可能實現的一個。您可以根據自己的需求創建自己的實現。

+0

謝謝。但取決於屏幕的分辨率,瓷磚的位置會不同,不是嗎?你有源代碼的例子嗎? – johann

+0

是的我有在Play Market上銷售的android應用程序中使用的源代碼。但我不能發佈給你。您突出顯示的問題的解決方案是從屏幕分辨率開始的「用戶界面的動態構建」(Map和Tiles必須重新排列)。這是一個常見的編程問題。 – rosco

+0

感謝您的建議。你能用幾句話來解釋我如何顯示地圖嗎?你使用它作爲你的gridView的背景嗎?你把所有的視圖放在一個frameView中嗎?謝謝 ! – johann

1

使您的地圖成爲SurfaceView的子類,以繪製地圖並覆蓋click(x,y)座標的onTouchEvent()過濾。

+0

謝謝。你有具體的例子或教程嗎? – johann

+0

@Canujohan:有一個SurfaceViews的android教程,它提供所有信息,google它。重寫onTouchEvent()時,使用手勢檢測器來識別單擊,雙擊,滾動等... – Bondax