[Android] 기기별 지도 및 라벨 크기 문제

안녕하세요. 안드로이드 앱에 카카오 지도v2로 지도와 라벨을 추가하는 작업을 하고 있습니다.
그런데 기기마다 사이즈가 너무 다르게 나옵니다. 혹시 해결 방안이 있을까요?


카카오에서 제공하는 데모를 실행해보니 똑같이 크기가 다르게 나오네요. 정상인것 같습니다.


지도에 넣는 이미지 관련 문서 를 참고하면서 좋을 것 같습니다.

해당 문서를 읽어봤으나, 화면 크기마다 전체적인 지도 스케일 차이가 너무 큽니다.
제 생각에는 내부적으로 처리하는 dp sclae이 잘못 연산되고 있는것 같습니다.

@given_iron dpScale 문제인지 확인해보기 위해 스크린샷으로 올려주신 두가지 에뮬레이터 정보를 알 수 있을까요? 첫번째 것은 4.65 720p (Galaxy Nexus), Density xhdpi 인것 같습니다. 두번째 에뮬레이터 이름과, Size, Resolution, Density 정보를 알려주시면 좋을 것 같습니다.

확인이 늦었네요.

에뮬레이터 이름: Pixel 3a API 33
Size: 5.6인치
Resolution: 1080 x 2220
Density: 440

동일한 이슈 발생 중입니다. 에뮬레이터 정보 첨부 드립니다.

Medium Phone API 34 - arm64

Size: 6.4인치
Resolution(px): 1080 x 2400
Density: 420 dpi

추가로 map.mapDpScale 값을 확인해봤을 때 0.5875였습니다.
사용한 Map SDK 버전은 2.12.7입니다.

2.11.9는 map.mapDpScale 값이 0.225였던 것에 비해 커졌으나, 아직 조금 작아보입니다.

위의 두가지(Pixel 3a, Medium Phone) 에뮬레이터에서 확인했을 때 현재 SDK 는 지도가 정상적으로 나오고 있습니다.
아무래도 해당 에뮬레이터에서 제공하는 dpi 가 정보가 문제가 있지 않을까 싶은데요. 정확한 원인 분석을 위해 아래 2가지 확인을 부탁 드립니다.

1. 에뮬레이터가 일반 모바일 기기들에서 실행했을 때도 지도의 라벨 및 POI 크기 등이 작게 나오나요?

2. 문제가 되는 에뮬레이터에서 아래와 같이 코드로 DisplayMetrics 정보값을 출력해서 알려주시기 바랍니다.

DisplayMetrics displayMetrics = new DisplayMetrics();
Display display = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
display.getMetrics(displayMetrics);
Log.i("displayMetrics", displayMetrics.toString()); // 여기서 출력한 DisplayMetrics 값 필요
1개의 좋아요

안녕하세요, 우선 빠른 응답에 감사드립니다.

1. 에뮬레이터가 일반 모바일 기기들에서 실행했을 때도 지도의 라벨 및 POI 크기 등이 작게 나오나요?

"에뮬레이터가 일반 모바일 기기들에서 실행했을 때"가 어떤 의미인지 잘 파악이 되지 않는데요, 에뮬레이터가 아닌 일반 모바일 기기에서 실행한 것으로 이해하겠습니다.
실물 기기인 갤럭시S20 API 33에서 확인했을 때는 이상 없이 정상적인 크기로 라벨 및 POI가 노출되었습니다!

2. 문제가 되는 에뮬레이터에서 아래와 같이 코드로 DisplayMetrics 정보값을 출력해서 알려주시기 바랍니다.

Medium Phone의 DisplayMetrics 출력 값입니다.

DisplayMetrics{density=2.625, width=1080, height=2337, scaledDensity=2.625, xdpi=72.0, ydpi=72.0}

추가적으로 도움이 될까 싶어 기기의 다른 정보도 첨부드립니다.

Properties
avd.ini.displayname              Medium Phone API 34
avd.ini.encoding                 UTF-8
AvdId                            Medium_Phone_API_34
disk.dataPartition.size          6442450944
fastboot.chosenSnapshotFile      
fastboot.forceChosenSnapshotBoot no
fastboot.forceColdBoot           no
fastboot.forceFastBoot           yes
hw.accelerometer                 yes
hw.arc                           false
hw.audioInput                    yes
hw.battery                       yes
hw.camera.back                   virtualscene
hw.camera.front                  emulated
hw.cpu.ncore                     4
hw.device.hash2                  MD5:3db3250dab5d0d93b29353040181c7e9
hw.device.manufacturer           Generic
hw.device.name                   medium_phone
hw.dPad                          no
hw.gps                           yes
hw.gpu.enabled                   yes
hw.gpu.mode                      auto
hw.initialOrientation            Portrait
hw.keyboard                      yes
hw.lcd.density                   420
hw.lcd.height                    2400
hw.lcd.width                     1080
hw.mainKeys                      no
hw.ramSize                       2048
hw.sdCard                        yes
hw.sensors.orientation           yes
hw.sensors.proximity             yes
hw.trackBall                     no
image.androidVersion.api         34
image.sysdir.1                   system-images/android-34/google_apis_playstore/arm64-v8a/
PlayStore.enabled                true
runtime.network.latency          none
runtime.network.speed            full
showDeviceFrame                  no
skin.dynamic                     yes
skin.path.backup                 _no_skin
tag.display                      Google Play
tag.id                           google_apis_playstore
vm.heapSize                      228

보내주신 DisplayMetrics 값의 xdpi, ydpi 값을 보니 에뮬레이터 자체의 문제가 맞는 것 같습니다. 일반적으로 Density 420 값의 기기에서 xdpi, ydpi 값이 72 같이 굉장히 작은 값이 나오지 않습니다.

관련하여 인터넷에 찾아보니 비슷한 에뮬레이터 문제가 있어보입니다.

다른 모바일 기기에서는 정상적으로 나오고 있고 현재, 카카오맵과 같이 대규모 서비스에서 문제없이 서비스 되고 있으니, 해당 에뮬레이터 이슈는 그냥 알고 넘어가시면 될 듯 싶습니다.

1개의 좋아요

답변 및 정보 감사합니다! (_ _)