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에 대한 마커 추가를 구현하는 가장 쉬운 방법은 무엇입니까?
안녕하세요 제이, 정확히 내가 뭘 찾고 있었는지, canvas.drawBitmap 메소드입니다. 감사! – jcrowson
제이, 나는 canvas.drawBitmap (getResources(), R.drawable.arrow) 행에 오류가있는 것 같습니다. "메소드 getResources()는 MyOverlay 유형에 대해 정의되지 않았습니다." – jcrowson
필요합니다. getResources()를 호출하는 컨텍스트 객체. 리소스를 액세스하고 드로잉 할 때마다 새로운 드로어 블을 생성하는 것과는 반대로 맵 액티비티에 드로어 블을 생성하여 오버레이에 전달하거나 맵 액티비티의 컨텍스트를 오버레이에 전달해야하며 드로어 블을 생성자에서 한 번 가져 오십시오. 엄지 손가락의 규칙은 드로잉 메서드에서 매우 느리기 때문에 새로운 객체를 만들지 않고 로직을 수행하는 것이 최선이라고 말합니다. 사용 사례에 따라 다른 곳에서 투영을 수집하는 것이 좋습니다. 잘. –