# 나만의 지도 스타일 만들기

## 스타일 제작 <a href="#map-studio" id="map-studio"></a>

Map Studio 서비스를 이용하시면 폰트는 물론, 지도 색상, 범례 아이콘까지 원하는대로 바꿔 나만의 특별한 지도를 동료와 함께 수정 할 수 있어 하나의 지도 스타일을 빠르고, 효과적으로 제작하고 배포하실 수 있습니다.

![Map Studio 지도 스타일 수정 화면](https://2296596695-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LjEmbGuGnOchPVUb5Zs%2F-MYsidHrGAoXiPInBm24%2F-MYsj-XfX9RSuJeyG69-%2Fimage.png?alt=media\&token=38b848d9-ec1f-4ffa-b7df-0ba04887b2a7)

## 스타일 접근과 적용 <a href="#access-set" id="access-set"></a>

아이나비 지도는 별도 스타일을 지정하지 않으셔도 기본 지도 스타일로 표출됩니다. Map Studio 서비스에서 제작한 커스텀 스타일은 **Appkey** 기준으로 관리 배포되며 SDK에서 제공하는 몇 가지 API를 이용하시면 커스텀 스타일을 지도 SDK에 적용하실 수 있습니다.

### 커스텀 지도 스타일 리스트 접근 <a href="#access" id="access"></a>

지도 초기화 인증이 완료되면 **Appkey** 기준으로 배포된 커스텀 지도 스타일 리스트를 [`InaviMapSdk.setAuthSuccessCallback()`](https://inavi-systems.github.io/inavi-maps-sdk-reference/android/com/inavi/mapsdk/maps/InaviMapSdk.html#setAuthSuccessCallback-com.inavi.mapsdk.maps.InaviMapSdk.AuthSuccessCallback-)에 설정된 [`AuthSuccessCallback`](https://inavi-systems.github.io/inavi-maps-sdk-reference/android/com/inavi/mapsdk/maps/InaviMapSdk.AuthSuccessCallback.html) 구현체로 전달됩니다. 전달된 지도 스타일 리스트는 SDK에 저장되며[ `InaviMapSdk.getSavedCustomMapStyles()`](https://inavi-systems.github.io/inavi-maps-sdk-reference/android/com/inavi/mapsdk/maps/InaviMapSdk.html#getSavedCustomMapStyles--) 로 인증 여부와 상관없이 저장된 지도 스타일 리스트에 접근하실 수 있습니다.

{% tabs %}
{% tab title="Kotlin" %}

```kotlin
InaviMapSdk.getInstance(this).authSuccessCallback = object: InaviMapSdk.AuthSuccessCallback{
    override fun onAuthSuccess(mapStyleList: MutableList<MapStyle>) {
        // 지도 초기화 인증 완료되면 지도 스타일 리스트를 콜백으로 전달
    }
}

// 저장된 지도 스타일 리스트 접근
val savedMapStyle: MutableList<MapStyle> = InaviMapSdk.getInstance(context).savedCustomMapStyles


```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
다른 **Appkey**로 변경하는 경우 기존 저장된 스타일 리스트는 초기화되며 변경된 **AppKey**의 스타일 리스트로 교체 저장됩니다. 또한 올바르지 않은 **Appkey**로 지도 초기화 인증에 실패한 경우에도 기존 스타일 리스트는 초기화됩니다.
{% endhint %}

### 커스텀 지도 스타일 적용 <a href="#set" id="set"></a>

스타일 접근 API를 이용해 접근하신 커스텀 지도 스타일 리스트에서 적용하실 하나의 스타일 선택하시고 [`InaviMap.setCustomMapStyle(MapStyle)`](https://inavi-systems.github.io/inavi-maps-sdk-reference/android/com/inavi/mapsdk/maps/InaviMap.html#setCustomMapStyle-com.inavi.mapsdk.maps.MapStyle-)를 설정하시면 지도의 스타일이 적용됩니다.

{% tabs %}
{% tab title="Kotlin" %}

```kotlin
// 저장된 커스텀 스타일 리스트의 첫번째 커스텀 스타일을 지도에 적용
inaviMap.customMapStyle = InaviMapSdk.getInstance(context).savedCustomMapStyles.firstOrNull()

```

{% endtab %}
{% endtabs %}

|                                                                                                        기본 지도 스타일 예시                                                                                                        |                                                                                                        커스텀 지도 스타일 예시                                                                                                       |
| :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |
| ![](https://2296596695-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LjEmbGuGnOchPVUb5Zs%2F-MYsidHrGAoXiPInBm24%2F-MYsjesUB8y5vWk5Y5jq%2Fimage.png?alt=media\&token=4e93651e-7d9d-4a2c-8412-76878b416ca6) | ![](https://2296596695-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LjEmbGuGnOchPVUb5Zs%2F-MYsidHrGAoXiPInBm24%2F-MYsjvRv-PJH0jcGWcMp%2Fimage.png?alt=media\&token=7331c94c-7205-433b-8e99-7593448cd919) |

{% hint style="info" %}
적용하려는 지도 스타일이 SDK에 저장된 스타일 리스트에 존재하지 않거나, 값을 `null`로 설정할 경우 기본 지도 스타일이 적용됩니다.
{% endhint %}

{% hint style="danger" %}
커스텀 스타일 적용 시 **건물 3D 효과, 셰이프 전역 Z 인덱스, 지도 심볼 Scale** 기능은 제한적으로 지원되거나 지원되지 않습니다. 추후 업데이트를 통해 지원될 예정입니다.
{% endhint %}
