안녕하세요.
제가 지금 맵뷰에 반경 관련 작업을 하고 있습니다.
반경 on/off 기능이 있어 on을 누르면 반경이 켜지고
off를 누르면 반경이 사라지고 있습니다.
근데 문제가 처음 반경을 키고 다음 반경을 끈다음 다시 on을 눌러 반경을 키면
이전 draw()에서 그렸던 canvas가 초기화가 안되어 색이 겹치는 현상이 나타나 반경이 원래 색보다 진하게 보입니다.
초기화를 하려고 해도 관련 함수도 없고..
어떻게 방법이 없을까요?
@Override
public void draw(Canvas canvas, MapView mapView, boolean shadow) {
super.draw(canvas, mapView, shadow);
if (isViewDistance) {
Log.e("test", "draw() set View circle");
OverlayItem item = overlayItems.get(0);
// Converts lat/lng-Point to coordinates on the screen
GeoPoint geoPoint = item.getPoint();
Point point = new Point() ;
// 반경 표시하기 (4km)
Projection projection = mapView.getProjection();
projection.toPixels(geoPoint, point);
float projectedRadius = projection.metersToEquatorPixels(radius);
Paint paint = new Paint();
paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.RED);
paint.setAlpha(90);
canvas.drawCircle((float)point.x, (float)point.y, projectedRadius, paint);
}
Log.e("test", "canvas = " + canvas.toString());
}




요부분은 문제가 없으실거구요.
range overlay를 등록하시는 부분을 확인해보세요.
아마 overlay를 계속 재생성 해서 그리고 계실거예요.
mapview 에서 removeall 하시고 다시 그리셔도 되시구요.
아니면 range overlay를 global로 잡으시고 range 값만 변경하시고 mapview에서 invalidate() 불러주시면 됩니다.