fornewid / naver-map-compose

NAVER Map Android SDK for Jetpack Compose 🗺
https://fornewid.github.io/naver-map-compose/
Apache License 2.0
115 stars 7 forks source link

Marker 에 대한 Icon Custom Design 지원 #103

Closed easyhooon closed 1 month ago

easyhooon commented 1 month ago

혹시 Marker 의 Design 을 Composable 함수를 사용해서 Custom Design 할 수 있도록 지원이 가능할까요?

네이버 맵에는 LeafMarker, ClusterMarker 에 대한 아이콘을 OverlayImage 타입으로 설정해야하는 특성이 있습니다.

    @Keep
    @b
    @UiThread
    public void setIcon(@NonNull OverlayImage icon) {
        this.e();
        if (!ObjectsCompat.equals(this.a, icon)) {
            this.a = icon;
            if (this.isAdded()) {
                this.nativeSetIcon(icon);
            }

        }
    }

image 출처) https://navermaps.github.io/android-map-sdk/guide-ko/5-2.html

OverlayImage 로 타입을 맞춰줘야 하기 때문에, 보통은 Drawable Resource를 사용해 Custom Marker 를 만들 수 있겠으나, 다음과 같은 UI 를 구현하기 위해선 Drawable Resource 를 사용해서 만들기엔 한계가 존재합니다. image (captionText 가 marker의 Design 내에 포함되는 경우, clustering marker 의 info.size 파라미터를 Marker View 의 파라미터로 추가해줘야하는 케이스)

Marker 를 커스텀 해보려구 구글링을 해봤을 때, 다음과 같은 글을 찾을 수 있었습니다.

Layout View로 Bitmap 만들기

CustomView 를 만들어서 이를 OverlayImage.fromView(customView) 함수를 이용해 OverlayImage 로 변환하여 icon 에 넣는 방식으로 추측이 되는데,

혹시 CustomView 가 아닌 Composable 함수를 OverlayImage 로 변환하게 하는 것을 지원하는게 가능한 것인지 궁금합니다. 이것이 가능하다면, Marker 를 커스텀하는데 있어서 제약이 많이 해결될 것으로 보입니다.

아니면, 혹시 CustomView 형태로도 위와 같은 요구사항(captionText 가 Marker 의 디자인에 포함되는 경우)을 만족시킬 수 있는지 궁금합니다.

읽어주셔서 감사합니다!

easyhooon commented 1 month ago

질문 이전에 네이버 클라우드 플랫폼에 문의를 하여 답변을 받을 수 있었으나, 문제를 해결하진 못하였습니다..

안녕하세요. 네이버 클라우드 플랫폼입니다.

Clusterer를 생성할 때 Builder에 clusterMarkerUpdater를 지정하여 클러스터링 마커를 커스터마이징 할 수 있습니다.

고정된 이미지는 아이콘으로, 변하는 숫자는 캡션 텍스트로 표현하는 것을 권장하나 하나의 이미지로 만들어 아이콘으로 지정할 수도 있습니다.

https://github.com/navermaps/android-map-sdk/blob/master/app/src/main/java/com/naver/maps/map/demo/kotlin/clustering/ComplexClusteringActivity.kt#L119-L138 예제를 참고하시기 바랍니다.

감사합니다.
fornewid commented 1 month ago

@easyhooon Composable 함수를 Bitmap으로 변환하는 기능을 말씀하시는 것 같은데요. 이건 서비스 앱에서 필요한 것을 직접 구현하시면 될 것 같습니다.

naver-map-compose 라이브러리에서 담당해야 할 기능은 아닌 것 같습니다.

fornewid commented 1 month ago

v1.7.1 버전에 MarkerComposable 반영되었습니다. 다만 버그가 있을 수 있다는 점 참고해주세요.

easyhooon commented 1 month ago

정말 감사합니다! ㅎㅎ