안드로이드 개발 질문/답변
(글 수 45,052)
List<Overlay> mapOverlays = mapView.getOverlays(); Drawable drawable = this.getResources().getDrawable(R.drawable.mark); Drawable drawable1 = this.getResources().getDrawable(R.drawable.mark1); Drawable drawable2 = this.getResources().getDrawable(R.drawable.mark2); Drawable drawable3 = this.getResources().getDrawable(R.drawable.mark3); Drawable drawable4 = this.getResources().getDrawable(R.drawable.mark4); Drawable drawable5 = this.getResources().getDrawable(R.drawable.mark5); MarkItemizedOverlay itemizedOverlay = new MarkItemizedOverlay(drawable,this); MarkItemizedOverlay itemizedOverlay1 = new MarkItemizedOverlay(drawable1,this); MarkItemizedOverlay itemizedOverlay2 = new MarkItemizedOverlay(drawable2,this); MarkItemizedOverlay itemizedOverlay3 = new MarkItemizedOverlay(drawable3,this); MarkItemizedOverlay itemizedOverlay4 = new MarkItemizedOverlay(drawable4,this); MarkItemizedOverlay itemizedOverlay5 = new MarkItemizedOverlay(drawable5,this); GeoPoint point0 = new GeoPoint(lat00, lng00); OverlayItem overlayitem0 = new OverlayItem(point0, null, date0); GeoPoint point1 = new GeoPoint(lat11, lng11); OverlayItem overlayitem1 = new OverlayItem(point1, null, date1); GeoPoint point2 = new GeoPoint(lat22, lng22); OverlayItem overlayitem2 = new OverlayItem(point2, null, date2); GeoPoint point3 = new GeoPoint(lat33, lng33); OverlayItem overlayitem3 = new OverlayItem(point3, null, date3); GeoPoint point4 = new GeoPoint(lat44, lng44); OverlayItem overlayitem4 = new OverlayItem(point4, null, date4); GeoPoint point5 = new GeoPoint(lat55, lng55); OverlayItem overlayitem5 = new OverlayItem(point5, null, date5); itemizedOverlay.addOverlay(overlayitem0); itemizedOverlay1.addOverlay(overlayitem1); itemizedOverlay2.addOverlay(overlayitem2); itemizedOverlay3.addOverlay(overlayitem3); itemizedOverlay4.addOverlay(overlayitem4); itemizedOverlay5.addOverlay(overlayitem5); mapOverlays.add(itemizedOverlay); mapOverlays.add(itemizedOverlay1); mapOverlays.add(itemizedOverlay2); mapOverlays.add(itemizedOverlay3); mapOverlays.add(itemizedOverlay4); mapOverlays.add(itemizedOverlay5); /////////////////////////////////////////////////////////////////////////////// public class MarkItemizedOverlay extends ItemizedOverlay<OverlayItem> { @Override //그리기,. 옵션 , 그림자없애기 public void draw(Canvas canvas, MapView mapView, boolean shadow) { super.draw(canvas, mapView, false); //아이템 좌표를 가져와 생성한 포인트객체에 할당 mapView.getProjection().toPixels(mOverlays.get(0).getPoint(), targetPosition); ///이부분 ! mapView.getProjection().toPixels(mOverlays.get(1).getPoint(), startPosition); Paint paint = new Paint(); //페인트 생성 paint.setStyle(Paint.Style.STROKE); // 스타일 paint.setAntiAlias(true); //부드럽게 paint.setStrokeWidth(3); //굵기 // paint.setColor(Color.RED); paint.setARGB(70,255, 0, 0); //색깔, 투명도 (a, r, g, b) Paint textpaint = new Paint(); textpaint.setColor(Color.BLACK); textpaint.setStyle(Paint.Style.STROKE); textpaint.setAntiAlias(true);
Paint backpaint = new Paint(); backpaint.setAntiAlias(true); backpaint.setARGB(70,255, 0, 0); RectF backRect = new RectF(targetPosition.x +2 + mRadius, targetPosition.y - 3*mRadius, targetPosition.x + 65, targetPosition.y +mRadius); canvas.drawLine(targetPosition.x, targetPosition.y, startPosition.x, startPosition.y, paint); canvas.drawRoundRect(backRect, 5 , 5, backpaint); canvas.drawText("현재 위치", targetPosition.x + 2*mRadius, targetPosition.y, textpaint);
}이런식으로 그린다고할때.. 마커이미지를 하나로했을땐 달토끼님의 답변으로, 충분이 선과 사각박스를 그릴수있었습니다.
하지만 마커이미지를 달리했을때는 안되더라구요.,, 어떤식으로 받아 와야하나요?
정녕 답없이. 그냥 선그을땐 한이미지로만으로, 해야하나요? 답변 꼭좀 부탁드리겠습니다.
2010.05.11 21:20:14
// 마커 이미지 자원을 가져옵니다
Drawable drawable1 =
Drawable drawable1 =
this
.getResources().getDrawable(R.drawable.mark);
//자바 프로그래밍에서와 마찬가지로 이미지를 불러왔으면 Bounds 해줘야 합니다. 파라미터는 (x, y, 가로크기, 세로크기)
drawalble1.setBounds(0, 0, drawalble1.getIntrinsicWidth(), drawalble1.getIntrinsicHeight());
// 리스트의 첫번째 항목을 가져와 그곳에는 위에서 만든 마커를 set 하겠다는 메서드
mapOverlays.get(0).setMarker(drawalble1);
리스트에있는 항목마다 마커를 다르게 설정 할 수 있어요.
지금은 수업중이라 끝나고 집에서 자세히 설명해 드릴께요.