마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 구글맵을 이용한 이동경로 구현

0 추천
구글맵에서 이동경로를 그리기 위해서 오버레이아이템 클래스를 만들어서 호출해서 사용중인데요.

지금 안되는 부분이 lat5_list, lng5_list arraylist String 배열에 위도 경도 정보가 저장되어있습니다. 약 10개

이때 marker = getResources().getDrawable(R.drawable.ic_launcher);
     mapView.getOverlays().add(new MyOverlay(marker));  

이걸 써서 오버레이 클래스를 호출해서 사용중입니다.

 

public class Vertex
  {
   public float x;
   public float y;
   public boolean Draw;
   public Vertex(float _x, float _y, boolean _Draw)
   {
    x = _x;
    y = _y;
    Draw = _Draw;
   }
  }
  
  class MyOverlay extends ItemizedOverlay{
   public ArrayList<Vertex> arVertex = new ArrayList<Vertex>();
   public ArrayList<Vertex> arVertexOri = new ArrayList<Vertex>();
   
   List<OverlayItem> items = new ArrayList<OverlayItem>();
   
   Drawable marker;
   
   public MyOverlay(Drawable marker)
   {
    super(marker);
    this.marker = marker;
    populate();     
   }
   public boolean onTap(GeoPoint p, MapView mapView)
   {
//    recvOp = new GeoPoint((int)
//      p.getLatitudeE6(),(int)p.getLongitudeE6());
//    items.add(new OverlayItem(recvOp, "inchon", "my room"));
//    
//    populate();    
    
    return true;
   }
   
   public void draw(Canvas canvas, MapView mapView, boolean shadow)
   {
    super.draw(canvas, mapView, shadow);
    boundCenterBottom(marker);
    
    recvOp = new GeoPoint((int)
      35899387,(int) 128854473);
    
    items.add(new OverlayItem(recvOp, "inchon", "my room"));
    
    populate();
    
    
    Paint paint1 = new Paint();
    paint1.setStrokeWidth(4);
    paint1.setARGB(255, 255, 0, 0);
    
    if(recvOp == null) return;
    
    arVertexOri.add(new Vertex((int) recvOp.getLatitudeE6(), (int) recvOp.getLongitudeE6(), true));
    
    arVertex.clear();
    
    Point pixPoint = new Point();
    
    for ( int i = 1; i< arVertexOri.size(); i++)
    {
     GeoPoint k = new GeoPoint((int) arVertexOri.get(i).x, (int) arVertexOri.get(i).y);
     mapView.getProjection().toPixels(k, pixPoint);
     
     arVertex.add(new Vertex(pixPoint.x, pixPoint.y, true));
    }
    for (int i = 1; i< arVertex.size(); i++)
    {
     if(arVertex.get(i).Draw)
     {
      canvas.drawLine(arVertex.get(i-1).x, arVertex.get(i-1).y, arVertex.get(i).x, arVertex.get(i).y, paint1);
     }
    }
   }

   @Override
   protected OverlayItem createItem(int i) {
    // TODO 자동 생성된 메소드 스텁
    return items.get(i);
   }

   @Override
   public int size() {
    // TODO 자동 생성된 메소드 스텁
    return items.size();
   }
  }

 

지금 이렇게 해서 실행을 하게 되면 구글맵에 하나의 좌표가 생깁니다.

원래 소스는 폰에서 터치를 하게 되면 마커가 하나씩 그려지고 하나더 그리게 되면 두개 사이에 선이 그이는 형식이었습니다.

이를 배열에 저장되어있는 정보를 가져와서 그려주려고 하는데.. 어찌해야 될까요??
익명사용자 님이 2013년 5월 25일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...