2010-03-19 5 views
0

현재 사용자가 Google지도에서 휴대 전화의 위치를 ​​추적 할 수있는 응용 프로그램을 구축 중입니다. 현재 onLocationChanged() 메서드가 호출되면 응용 프로그램은 현재 GPS 경도와 위도를 데이터베이스에 저장하고 animateTo() 메서드를 현재 위치로 호출합니다.오버레이를 사용하여 Android에서 데이터베이스에서 가져온 GPS 좌표를 연결합니다.

SDK 1.5를 사용하면 오버레이를 사용하여 MapView에 그려진 컬러 선으로이 점들을 어떻게 연결해야합니까?

답변

1

ItemizedOverlay를 확장하는 자체 클래스를 만들어야하고 그리기 메서드에서 Canvas에 선을 그립니다. 예를 들어

: onLocationChanged()에서

public class MyOverlay extends ItemizedOverlay<OverlayItem> { 
    private Projection projection; 
    private Point linePaint; 
    private Vector<GeoPoint> points; 
    public MyOverlay(Drawable defaultMarker) { 
     points = new Vector<GeoPoint>() 
     linePaint = new Paint(); 
     //set color, stroke width etc. 
    } 

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

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

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

당신은 overlay.addPoint을 통해 새로운 GeoPoint의 추가해야합니다. 지도보기가 표시됩니다 활동의 onCreate()에서 당신은 추가해야합니다

overlay = new MyOverlay(null); //overlay must be accessible from onLocationChanged 
map.getOverlays().add(overlay); //map = (MapView) findViewById(R.id.mapview) 

점 그리기 속도를 높이기 위해 눈에 보이는 사각형에있을 것입니다 경우도 (또는 다른 곳) 무승부로 확인해야합니다.

나는 약간의 실수가있을 때 이것을 비난하지 않으므로 이것을 비난하지 않았다.

+0

답장을 보내 주셔서 감사합니다. 그러나 WaypointsOverlay 클래스를 구현했지만, onLocationChanged() 아래에 있어야하는 addPoint 키워드에 대해서는 아무 것도 찾을 수 없습니다. – jcrowson

관련 문제