Kandroid Archive (Old article backup) 
맵 오버레이 띄우는 간단한 방법입니다.
작성자
작성일 2008-05-20 (화) 09:37
ㆍ추천: 0  ㆍ조회: 7221      
IP: 220.xxx.211
생각보다 매우 간단하더군요.-_ -;;
대신 오버레이안에 뭘 띄우냐가 관건이겠죠.ㅋ;;
우선 맵띄우는 메인 클레스의 onCreate 문안에
MapView.createOverlayController().add(
              new MyOverlay(this),
               true);
의 코드를 넣어 줍니다. createOverlayController()의 세부 메서드 add 를 이용하여 MyOverlay라고 만든 클래스의 내용을
붙여 넣어줍니다. 물론 MapView는 MapView로 선언해준 생성자 변수를 넣어줘야되겠구요.
 
그리고 오버레이를 띄울 클래스를 새로 생성 합니다.
저 같은 경우에는 클래스 이름을 위와 같이 MyOverlay라고 지었습니다.
그리고 MyOverlay 클래스에
public class MyOverlay extends Overlay
위와 같이 Overlay 클래스를 상속시켜줍니다.
그리고 클래스 안에 Draw 메서드를 이용해서 오버레이 안에 띄울 내용을 그려주는 것으로 대략 그려보았습니다
 
    abc mMap;
    Paint paint1 = new Paint();
    Paint paint2 = new Paint();
    Bitmap bmp;
    public MyOverlay(abc map) {
        mMap = map;
        paint2.setARGB(255, 255, 255, 255);
    }
    public void draw(Canvas canvas, PixelCalculator pixelCalculator, boolean b) {
        super.draw(canvas, pixelCalculator, b);
                int[] screenCoords = new int[2];
                Point point = new Point((int) (40.80 * 1E6), (int) (-73.97 * 1E6));
                pixelCalculator.getPointXY(point, screenCoords);
                canvas.drawCircle(screenCoords[0], screenCoords[1], 12, paint1);
                canvas.drawText("뉴욕",
                        screenCoords[0] - 4,
                        screenCoords[1] + 4, paint2);
               
    }
 
저는 소스를 이렇게 대강 짯는데요. draw의 내용은 자신이 오버레이하고싶은 내용을 마음대로 표현하셔도 되구요.
여기서 screenCoords는 getPointXY 메서드가 위의 point를 담아주는 저장공간이 되겠습니다.
나머지 내용은 메서드의 내용을 참조하여 공부해보시면 되겠습니다~
이름아이콘 cococo
2008-05-20 13:27
고맙습니다. ㅎㅎㅎㅎㅎ
   
이름아이콘 들풀
2008-05-20 17:07
현국이다님이랑..저랑..이쪽 게시판 꾸준히 채워나가보시죠..~ㅎㅎ
   
이름아이콘 현국이다
2008-05-20 19:19
네.ㅋ 답답한 다른 사람들 심정 정말 이해갑니다. 저도 여태까지 너무 답답해서 힘들었습니다.ㅋ;;
아무 도움없이 맨땅에 해딩하려니.... ㅠ_ ㅠ 안습이죠. ㅎㅎ
   
이름아이콘 들풀
2008-05-20 19:51
현국이다님..좋은 생각가지시고..이곳에 글 많이 남기시면..
제가 물질적으로 보상해 드릴 수 있는 방법을 찾아보겠습니다..ㅎㅎㅎ
   
이름아이콘 현국이다
2008-05-20 21:46
저 위에 Point값을 여러개 찍고싶으면 위도 경도 찍은걸 배열로 주고 for문으로 배열값 주고 찍으면 나오네요. 그리고 drawBitmap 이란 메서드를 이용하면 비트맵이미지도 띄우는것이 가능합니다~
   
이름아이콘 cococo
2008-05-21 10:07
현국이다님
 위도 경도는 어디서 얻어 오나요?
제가 이번 ADC에서 물먹고 새로운 프로젝트를 진행중인데 내용은 자신의 동선(이동경로)을 데이터베이스하는 프로젝트를 구상하고 있는데요. 지도쪽은 공부를 안해서 알 수가 없네요.
이번 대회 50App를 분석해 봤는데 지도를 사용한 App가 많아요. 저도 진작에 지도 공부 좀 하는 건데.ㅎㅎㅎㅎㅎ
   
이름아이콘 현국이다
2008-05-21 19:53
위도 경도는 저같은 경우에는 임의의 가상 프로바이더에서 얻어오고있거든요.ㅋ;;;
가상 프로바이더 쓰실 경우가 아니면 그냥 임의의 수를 쓰시면 됩니다. ㅎㅎ
   
이름아이콘 cococo
2008-05-21 21:07

저~~ 제가 좀 무식해서..
가상 프로바이더 이건 잘 모르겠네요.
조금더 자세히 설명해주시면 정말 정말 끔찍하게 감사하겠습니다~~^^*
   
이름아이콘 현국이다
2008-05-22 11:25
웹상에 xml정보를 파싱해올수있게 php 등으로 xml파일을 생성하는 겁니다.
그리고 프로그램상에서 그 xml 정보를 파싱해오는데 그 파싱해오는 정보가
위도와 경도인 것이지요.
예를 들어
<gps>
 <Location latitude="40.80" longitude="-73.97" city="" />
</gps>
이런 방법으로 xml 데이터를 만들고 위도 경도 값을 파싱하는 것입니다.
   
이름아이콘 cococo
2008-05-22 12:09
기다리는 자료입니다.
잘은 모르지만 열심히 연구해 보겠습니다.
감사합니다. ㅎㅎㅎㅎㅎ
   
이름아이콘 현국이다
2008-05-22 13:54
저도 자바도 제대로 다룰줄 몰르는 미천한 지식이라서 열심히 공부하구있습니다.ㅎㅎ;;
   
 
덧글 쓰기 0
3500
※ 회원등급 레벨 0 이상 읽기가 가능한 게시판입니다.