2012-11-06 3 views
0

국가지도를 표시하는 활동을 만들고 싶습니다. 모든 지역을 클릭 할 수있게 만들고 싶습니다. android : 클릭 가능한지도 그리기

enter image description here

은 내가 먼저 SVG 데이터/자바 스크립트 ( see here)와지도를 그릴과 웹보기에 넣어했습니다. 그러나 대부분의 Android 기기에서는 벡터 라이브러리를 사용할 수 없습니다.

가장 좋은 해결책은 영역 이미지 (비트 맵 형식)를 쌓아서 클릭 할 수있는 것처럼 보이지만 어떻게해야하는지 잘 모릅니다.

내 설명이 거슬려서 미안 해요.

고맙습니다!

+0

어떤 종류의 기능을 찾으십니까? '클릭 가능'은 매우 광범위합니다. – GraphicsMuncher

+0

답변 해 주셔서 감사합니다. 선택한 지역의 ID를 가져 와서 의도로 추가로 사용하고 싶습니다. – johann

답변

1

투명한 눈금을지도에 겹쳐서 표시 할 수 있습니다. 그리드는 'touch sensitive'타일로 구성됩니다. 타일 ​​크기는 맵의 모든 영역을 채울만큼 작아야합니다. 모든 지역에는 일정 수의 타일이 포함됩니다. 모든 타일 그룹을 포함 된 영역에 연결해야합니다. 그런 다음 타일 위를 누를 때마다 올바른 영역을 연결할 수 있습니다.

편집 : 타일 정의

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 
... 

추신 : 내 대답에 설명 구현의 예는 단지 가능한 구현 중 하나입니다. 필요에 따라 직접 구현을 만들 수 있습니다.

+0

감사합니다. 그러나 화면의 해상도에 따라 타일의 위치는 달라집니다. 그렇습니까? 소스 코드 예제가 있습니까? – johann

+0

예 Play 마켓에서 판매되는 안드로이드 애플리케이션에 소스 코드가 사용되었습니다. 그러나 나는 너에게 그것을 게시 할 수 없다. 강조하는 문제의 해결책은 화면 해상도에서 시작하는 '사용자 인터페이스의 동적 빌드'입니다 (지도와 타일 모두 다시 배열해야 함). 일반적인 프로그래밍 문제입니다. – rosco

+0

조언 해 주셔서 감사합니다. 지도를 표시하는 방법을 몇 마디로 설명 할 수 있습니까? 귀하의 gridView의 배경으로 사용합니까? 모든 뷰를 프레임 뷰에 넣습니까? 고맙습니다 ! – johann

1

지도를 그리기 위해 SurfaceView의 하위 클래스를 만들고 클릭 (x, y) 좌표에 대해 onTouchEvent() 필터링을 재정의합니다.

+0

고맙습니다. 구체적인 예나 자습서가 있습니까? – johann

+0

@Canujohan : 모든 정보를 제공하는 SurfaceViews 용 안드로이드 튜토리얼이 있습니다. Google. onTouchEvent()를 재정의 할 때 클릭, 더블 탭, 스크롤 등을 인식하기 위해 GestureDetector를 사용하십시오. – Bondax