기존 V1에서 제공하였던 아래 예시 기능
MapCircle circle1 = new MapCircle(
MapPoint.mapPointWithGeoCoord(37.537094, 127.005470), // center
500, // radius
Color.argb(128, 255, 0, 0), // strokeColor
Color.argb(128, 0, 255, 0) // fillColor
);
circle1.setTag(1234);
mMapView.addCircle(circle1);
MapCircle circle2 = new MapCircle(
MapPoint.mapPointWithGeoCoord(37.551094, 127.019470), // center
1000, // radius
Color.argb(128, 255, 0, 0), // strokeColor
Color.argb(128, 255, 255, 0) // fillColor
);
circle2.setTag(5678);
mMapView.addCircle(circle2);
// 지도뷰의 중심좌표와 줌레벨을 Circle이 모두 나오도록 조정.
MapPointBounds[] mapPointBoundsArray = { circle1.getBound(), circle2.getBound() };
MapPointBounds mapPointBounds = new MapPointBounds(mapPointBoundsArray);
int padding = 50; // px
mMapView.moveCamera(CameraUpdateFactory.newMapPointBounds(mapPointBounds, padding));
관련해서 V2에서는 지도뷰의 중심좌표와 줌레벨을 circle이 모두 나오도록 조정해주는 API는 제공하지 않는건가요?
V2 에서는 kakaoMap.moveCamera(CameraUpdateFactory.fitMapPoints()) 를 통해서 특정 좌표들이 모두 나오도록 카메라를 설정 할 수 있습니다. V1 API 처럼 bound
를 이용하는 방법은 다음 SDK 업데이트 때 추가할 수 있도록 검토 하도록 하겠습니다.
안녕하세요. 2.11.8 버전을 배포하면서 Circle 이 모두 나올 수 있도록 API 추가 됐습니다.
간단한 사용법은 아래와 같고, 샘플 프로젝트 의 CameraFitPointsDemoActivity 에서도 확인 하실 수 있습니다.
// circle1 의 스타일 설정
PolygonStyles firstStyles = PolygonStyles.from(
PolygonStyle.from(Color.argb(128, 0, 255, 0),
1, Color.argb(128, 255, 0, 0)));
// circle2 의 스타일 설정
PolygonStyles secondStyles = PolygonStyles.from(
PolygonStyle.from(Color.argb(128, 255, 255, 0),
1, Color.argb(128, 255, 0, 0)));
// circle1 과 circle2 의 중심점
LatLng centerOfCircle1 = LatLng.from(37.537094, 127.005470);
LatLng centerOfCircle2 = LatLng.from(37.551094, 127.019470);
// circle1 과 circle2 의 반지름
int radiusOfCircle1 = 500;
int radiusOfCircle2 = 1000;
// circle 추가
shapeLayer.addPolygon(PolygonOptions.from(
DotPoints.fromCircle(centerOfCircle1, radiusOfCircle1))
.setStylesSet(PolygonStylesSet.from(firstStyles)).setTag(1234));
shapeLayer.addPolygon(PolygonOptions.from(
DotPoints.fromCircle(centerOfCircle2, radiusOfCircle2))
.setStylesSet(PolygonStylesSet.from(secondStyles)).setTag(5678));
// circle1 과 circle2 의 bounds 구하기
LatLngBounds bounds1 = new LatLngBounds.Builder()
.include(MapUtils.getEndPoint(centerOfCircle1, radiusOfCircle1, Math.toRadians(0)))
.include(MapUtils.getEndPoint(centerOfCircle1, radiusOfCircle1, Math.toRadians(90)))
.include(MapUtils.getEndPoint(centerOfCircle1, radiusOfCircle1, Math.toRadians(180)))
.include(MapUtils.getEndPoint(centerOfCircle1, radiusOfCircle1, Math.toRadians(270)))
.build();
LatLngBounds bounds2 = new LatLngBounds.Builder()
.include(MapUtils.getEndPoint(centerOfCircle2, radiusOfCircle2, Math.toRadians(0)))
.include(MapUtils.getEndPoint(centerOfCircle2, radiusOfCircle2, Math.toRadians(90)))
.include(MapUtils.getEndPoint(centerOfCircle2, radiusOfCircle2, Math.toRadians(180)))
.include(MapUtils.getEndPoint(centerOfCircle2, radiusOfCircle2, Math.toRadians(270)))
.build();
LatLngBounds.Builder builder = new LatLngBounds.Builder();
kakaoMap.moveCamera(CameraUpdateFactory.fitMapPoints(builder.include(bounds1.getNortheast())
.include(bounds1.getSouthwest())
.include(bounds2.getNortheast())
.include(bounds2.getSouthwest())
.build(), 50));
1개의 좋아요