안드로이드 스튜디오 Kotlin으로 Kakao Map을 이용중입니다.
현재 카카오 맵 범위를 알고 싶어서 그런데 적당한 api가 없어서 그런 것 같은데
각 bound를 알아내서 현재 맵을 보여주는 원의 반지름 길이를 구할려고 합니다.
마땅한 방법이 없을까요?
안드로이드 스튜디오 Kotlin으로 Kakao Map을 이용중입니다.
현재 카카오 맵 범위를 알고 싶어서 그런데 적당한 api가 없어서 그런 것 같은데
각 bound를 알아내서 현재 맵을 보여주는 원의 반지름 길이를 구할려고 합니다.
마땅한 방법이 없을까요?
LatLngBounds 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 의 반지름. meter 단위.
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));