카카오 지도 Camera fit Map Points 관련 문의드립니다

기존 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개의 좋아요