2010-03-31 13 views
1

GPS 위치를 SQLite 데이터베이스에 저장 한 다음, 점 사이에 빨간색 선을 그려서 오버레이를 사용하여 데이터를 MapView로 출력하는 애플리케이션을 구축하고 있습니다. .안드로이드에서 ItemizedOverlay를 사용하여 MapView에 지포를 표현하기위한 "마커"추가하기

붉은 선뿐만 아니라 각 점에 대한 그래픽 마커 (이미지)를 보여주고 싶습니다. 내 코드는 다음과 같습니다 :

public class MyOverlay extends ItemizedOverlay<OverlayItem> { 

// private Projection projection; 
private Paint linePaint; 
private Vector<GeoPoint> points; 

public MyOverlay(Drawable defaultMarker) { 
    super(defaultMarker); 
    points = new Vector<GeoPoint>(); 
    //set colour, stroke width etc. 
    linePaint = new Paint(); 
    linePaint.setARGB(255, 255, 0, 0); 
    linePaint.setStrokeWidth(3); 
    linePaint.setDither(true); 
    linePaint.setStyle(Style.FILL); 
    linePaint.setAntiAlias(true); 
    linePaint.setStrokeJoin(Paint.Join.ROUND); 
    linePaint.setStrokeCap(Paint.Cap.ROUND); 

} 

public void addPoint(GeoPoint point) { 
    populate(); 
    points.addElement(point); 

} 

//public void setProjection(Projection projection) { 
// this.projection = projection; 
// } 

public void draw(Canvas canvas, MapView view, boolean shadow) { 
    populate(); 
    int size = points.size(); 
    Point lastPoint = new Point(); 
    if(size == 0) return; 
    view.getProjection().toPixels(points.get(0), lastPoint); 
    Point point = new Point(); 
    for(int i = 1; i<size; i++){ 
     view.getProjection().toPixels(points.get(i), point); 
     canvas.drawLine(lastPoint.x, lastPoint.y, point.x, point.y, linePaint); 
     lastPoint = point; 

    } 
} 

@Override 
protected OverlayItem createItem(int arg0) { 
    // TODO Auto-generated method stub 
    return null; 
} 

@Override 
public int size() { 
    // TODO Auto-generated method stub 
    return 0; 
} 
} 

각 GeoPoint에 대한 마커 추가를 구현하는 가장 쉬운 방법은 무엇입니까?

답변

2

http://www.vtgroup.com/index.html#MapLocation을보고 질문에 대답하는지 확인하십시오.

+0

안녕하세요 제이, 정확히 내가 뭘 찾고 있었는지, canvas.drawBitmap 메소드입니다. 감사! – jcrowson

+0

제이, 나는 canvas.drawBitmap (getResources(), R.drawable.arrow) 행에 오류가있는 것 같습니다. "메소드 getResources()는 MyOverlay 유형에 대해 정의되지 않았습니다." – jcrowson

+1

필요합니다. getResources()를 호출하는 컨텍스트 객체. 리소스를 액세스하고 드로잉 할 때마다 새로운 드로어 블을 생성하는 것과는 반대로 맵 액티비티에 드로어 블을 생성하여 오버레이에 전달하거나 맵 액티비티의 컨텍스트를 오버레이에 전달해야하며 드로어 블을 생성자에서 한 번 가져 오십시오. 엄지 손가락의 규칙은 드로잉 메서드에서 매우 느리기 때문에 새로운 객체를 만들지 않고 로직을 수행하는 것이 최선이라고 말합니다. 사용 사례에 따라 다른 곳에서 투영을 수집하는 것이 좋습니다. 잘. –