안녕하세요. 안드로이드 앱에 카카오 지도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. 에뮬레이터가 일반 모바일 기기들에서 실행했을 때도 지도의 라벨 및 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 같이 굉장히 작은 값이 나오지 않습니다.
관련하여 인터넷에 찾아보니 비슷한 에뮬레이터 문제가 있어보입니다.
다른 모바일 기기에서는 정상적으로 나오고 있고 현재, 카카오맵과 같이 대규모 서비스에서 문제없이 서비스 되고 있으니, 해당 에뮬레이터 이슈는 그냥 알고 넘어가시면 될 듯 싶습니다.
답변 및 정보 감사합니다! (_ _)