동작 처리가 개선되어 더 나은 애니메이션을 제공할 수 있으며, 화면 이동과 확대/축소가 더욱 부드러워졌습니다.
전환이 더욱 매끄러워지고 지도 라벨의 배치가 명확해졌습니다.
사용자 환경이 전반적으로 개선되고 안정성이 높아졌습니다.
출시 일정
2021년 10월에 Google은 업데이트된 지도 렌더기를 출시하기 시작했습니다. 출시 당시에는 사용자가 앱에서 업그레이드된 지도 렌더기를 사용할지 선택할 수 있었습니다.
Android용 Maps SDK 버전 18.2.0이 출시됨에 따라 Google은 기본 렌더기를 기존 렌더기에서 업그레이드된 지도 렌더기로 전환했습니다. 버전 18.2.0 출시 이후로는 새 앱을 빌드하거나 기존 앱을 다시 빌드할 때 업그레이드된 지도 렌더기를 사용하게 됩니다.
기본 렌더기가 변경되면 어떻게 되나요?
Android용 Maps SDK 버전 18.2.0이 출시됨에 따라 업그레이드된 렌더기가 기본 렌더기가 됩니다. 업그레이드된 렌더기를 사용하려면 새 SDK 버전을 사용하여 새 앱을 빌드하거나 기존 앱을 다시 빌드해야 합니다.
새 렌더기의 사용을 거부할 수도 있습니다. 거부할 경우 앱에서 기존 렌더기를 계속 사용합니다.
새 렌더기의 사용을 거부하는 방법의 예시를 보려면 업그레이드된 렌더기의 사용 거부를 참고하세요.
지원되는 기기
업그레이드된 지도 렌더기를 사용하려면 기기에서 다음 기준을 충족해야 합니다.
Android 5.0(API 수준 21) 이상
데이터 저장용량 2GB 이상
Google Play 서비스 버전 21.39.14 이상 사용
기본 렌더기가 업그레이드된 지도 렌더기로 변경된 후에도 Android 4.4W(API 수준 20) 이전 버전을 사용하거나 데이터 저장용량이 2GB 미만이거나 Google Play 서비스 21.39.13 이전 버전을 사용하는 기기에서는 기존 렌더기가 계속 사용됩니다.
업그레이드된 렌더기의 사용 거부
기본적으로 Android용 Maps SDK 버전 18.2.0으로 빌드된 앱에서는 업그레이드된 렌더기를 사용합니다. 필요한 경우 앱에서 기존 렌더기를 사용하기 위해 업그레이드된 렌더기의 사용을 명시적으로 거부할 수 있습니다.
다음 예에서는 MapsInitializer.initialize()를 호출하여 기존 지도 렌더기를 사용하기 위해 새 렌더기의 사용을 거부하는 방법을 보여줍니다.
Kotlin
import com.google.android.gms.maps.MapsInitializer
import com.google.android.gms.maps.MapsInitializer.Renderer
import com.google.android.gms.maps.OnMapsSdkInitializedCallback
internal class MapRendererOptInApplication : Application(), OnMapsSdkInitializedCallback {
override fun onCreate() {
super.onCreate()
MapsInitializer.initialize(applicationContext, Renderer.LEGACY, this)
}
override fun onMapsSdkInitialized(renderer: MapsInitializer.Renderer) {
when (renderer) {
Renderer.LATEST -> Log.d("MapsDemo", "The latest version of the renderer is used.")
Renderer.LEGACY -> Log.d("MapsDemo", "The legacy version of the renderer is used.")
}
}
}
Java
import com.google.android.gms.maps.MapsInitializer;
import com.google.android.gms.maps.MapsInitializer.Renderer;
import com.google.android.gms.maps.OnMapsSdkInitializedCallback;
class MapRendererOptInApplication extends Application implements OnMapsSdkInitializedCallback {
@Override
public void onCreate() {
super.onCreate();
MapsInitializer.initialize(getApplicationContext(), Renderer.LEGACY, this);
}
@Override
public void onMapsSdkInitialized(MapsInitializer.Renderer renderer) {
switch (renderer) {
case LATEST:
Log.d("MapsDemo", "The latest version of the renderer is used.");
break;
case LEGACY:
Log.d("MapsDemo", "The legacy version of the renderer is used.");
break;
}
}
}
[null,null,["최종 업데이트: 2024-04-17(UTC)"],[[["\u003cp\u003eThe Maps SDK for Android now features an upgraded map renderer with cloud-based styling and improved performance.\u003c/p\u003e\n"],["\u003cp\u003eAutomatic updates to the new renderer are complete for eligible apps, enhancing user experience with smoother interactions and better visuals.\u003c/p\u003e\n"],["\u003cp\u003eDevices require Android 5.0 (API level 21) or later and Google Play services version 21.39.14 or later to use the upgraded renderer.\u003c/p\u003e\n"],["\u003cp\u003eDevelopers can opt out of the upgraded renderer and use the legacy renderer, although the legacy renderer is deprecated and will be decommissioned in March 2025.\u003c/p\u003e\n"],["\u003cp\u003eOpting out requires explicit initialization with \u003ccode\u003eMapsInitializer\u003c/code\u003e and specifying \u003ccode\u003eRenderer.LEGACY\u003c/code\u003e before creating any map views or fragments.\u003c/p\u003e\n"]]],["The Maps SDK for Android version 18.2.0 introduced an upgraded map renderer, which was automatically rolled out to all applicable apps by March 2024. This new renderer offers cloud-based styling, advanced polyline customization, reduced resource usage, and improved performance. Devices must use Android 5.0+ and Google Play services 21.39.14+. Apps can opt-out of the upgrade to the legacy renderer by upgrading the Maps SDK to v18.0 or greater, and calling `MapsInitializer.initialize()` with `Renderer.LEGACY`. The legacy renderer will be decommissioned in March 2025.\n"],null,["An upgraded map renderer is available as of version 18.2.0 of the\nMaps SDK for Android. This renderer brings many improvements, including support for\nCloud-based maps styling.\n\nThe new renderer provides the following benefits:\n\n- [Cloud-based maps styling](/maps/documentation/android-sdk/cloud-based-map-styling) features are available with the new renderer.\n- [Advanced Polyline Customizations](/maps/documentation/android-sdk/shapes#polyline-customization) are available with the new renderer.\n- Reduced network load, processing demand, and memory consumption.\n- Improved gesture handling for better animations, plus smoother panning and zooming.\n- More fluid transitions and clearly positioned map labels.\n- A more stable and improved user experience.\n\nAutomatic update status\n\nIn March of 2024, Google began automatically updating all deployed apps to use\nthe upgraded renderer. Automatic updates have been applied to all apps running\non devices that meet the [minimum device requirements](#supported-devices),\nregardless of the version of the Maps SDK for Android used by the app. This rollout\nis now complete.\n\nThe automatic updates did not apply to:\n\n- Apps that have already updated to use the upgraded renderer.\n\n- Apps that have explicitly [opted out](#opt-out) of the upgrade.\n\n- Apps running on devices that don't meet the [minimum device\n requirements](#supported-devices).\n\nSupported devices\n\nTo use the upgraded map renderer, devices must meet these criteria:\n\n- Android 5.0 (API level 21) or later\n- Using Google Play services version 21.39.14 or later\n\nDevices using Android 4.4W (API level 20) and earlier or using Google Play\nservices versions 21.39.13 or earlier continue to use the legacy renderer.\n\nOpt-out of using the upgraded renderer\n\nIf necessary, you can explicitly opt-out of using the upgraded renderer to use\nthe legacy renderer in your app.\n| **Important:** The legacy renderer is deprecated and is scheduled for decommissioning in April 2025. Follow the legacy renderer's decommissioning progress in public issue [404999856](https://issuetracker.google.com/issues/404999856). After the legacy renderer is decommissioned, you will no longer be able to opt-out of using the upgraded renderer. However, apps running on devices that don't meet the [minimum requirements](#supported-devices) for the new renderer will continue to function with the legacy renderer.\n\nTo opt-out:\n\n- [Upgrade](/maps/documentation/android-sdk/versions) Maps SDK for Android to\n v18.0 or greater.\n\n- Update your code to explicitly import [MapsInitializer](/android/reference/com/google/android/gms/maps/MapsInitializer)\n and\n [MapsInitializer.Renderer](/android/reference/com/google/android/gms/maps/MapsInitializer.Renderer).\n\n- Update your code to call\n [`MapsInitializer.initialize()`](/android/reference/com/google/android/gms/maps/MapsInitializer#initialize(android.content.Context,%20com.google.android.gms.maps.MapsInitializer.Renderer,%20com.google.android.gms.maps.OnMapsSdkInitializedCallback)),\n passing `Renderer.LEGACY` to opt-out and use the legacy renderer.\n\n- Use [OnMapsSdkInitializedCallback](/android/reference/com/google/android/gms/maps/OnMapsSdkInitializedCallback)\n to determine which version of the renderer was returned.\n\nYour code must call\n[`MapsInitializer.initialize()`](/android/reference/com/google/android/gms/maps/MapsInitializer)\nbefore any\n[MapView](/maps/documentation/android-sdk/reference/com/google/android/libraries/maps/MapView),\n[MapFragment](/maps/documentation/android-sdk/reference/com/google/android/libraries/maps/MapFragment),\nor\n[SupportMapFragment](/maps/documentation/android-sdk/reference/com/google/android/libraries/maps/SupportMapFragment)\nhas been created. We recommend calling this in `onCreate` for your app's\n[Application](https://developer.android.com/reference/android/app/Application#onCreate()),\nor\n[Activity](https://developer.android.com/reference/android/app/Activity#onCreate(android.os.Bundle,%20android.os.PersistableBundle)),\nbefore its content view is set.\n\nThe following example shows how to call `MapsInitializer.initialize()` to\nopt-out to use the legacy map renderer. \n\nKotlin \n\n```kotlin\nimport com.google.android.gms.maps.MapsInitializer\nimport com.google.android.gms.maps.MapsInitializer.Renderer\nimport com.google.android.gms.maps.OnMapsSdkInitializedCallback\n\ninternal class MapRendererOptInApplication : Application(), OnMapsSdkInitializedCallback {\n override fun onCreate() {\n super.onCreate()\n MapsInitializer.initialize(applicationContext, Renderer.LEGACY, this)\n }\n\n override fun onMapsSdkInitialized(renderer: MapsInitializer.Renderer) {\n when (renderer) {\n Renderer.LATEST -\u003e Log.d(\"MapsDemo\", \"The latest version of the renderer is used.\")\n Renderer.LEGACY -\u003e Log.d(\"MapsDemo\", \"The legacy version of the renderer is used.\")\n }\n }\n}\n```\n\nJava \n\n```java\nimport com.google.android.gms.maps.MapsInitializer;\nimport com.google.android.gms.maps.MapsInitializer.Renderer;\nimport com.google.android.gms.maps.OnMapsSdkInitializedCallback;\n\nclass MapRendererOptInApplication extends Application implements OnMapsSdkInitializedCallback {\n\n @Override\n public void onCreate() {\n super.onCreate();\n MapsInitializer.initialize(getApplicationContext(), Renderer.LEGACY, this);\n }\n\n @Override\n public void onMapsSdkInitialized(MapsInitializer.Renderer renderer) {\n switch (renderer) {\n case LATEST:\n Log.d(\"MapsDemo\", \"The latest version of the renderer is used.\");\n break;\n case LEGACY:\n Log.d(\"MapsDemo\", \"The legacy version of the renderer is used.\");\n break;\n }\n }\n}\n```"]]