New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: iOS 에서 getMeterPerDp 사용시 생기는 크래시 수정 #125
fix: iOS 에서 getMeterPerDp 사용시 생기는 크래시 수정 #125
Conversation
안녕하세요. 먼저, 기여에 진심으로 감사드립니다. 다만, 함수(메서드)의 이름과 관련해서 그리고 수정사항을 확인해 보았을 때는, Android Native 측 코드가 없는 것으로 확인되는데 이 부분은 제가 직접 구현을 하면 되는 부분일지 여쭙고 싶습니다. 다시 한번 진심으로 기여해주심에 감사 말씀 남깁니다. 좋은 주말되세요. |
아 안드로이드에도 추가하는 걸 잊었네요. 추가 커밋하겠습니다.
pixel -> dp 는 수정하도록 하겠습니다.
|
with 부분은 잠시 latitude, zoom을 모두 포함하려다가 (withLatitudeAndZoom) 네이버 맵 라이브러리를 따라가는 것이 맞을 것 같아, 지웠었는데 꼼꼼히 확인하지 못했었네요. 말씀주신대로 AtLatitude가 더 바람직해보입니다. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@Soogyo-In UIScreen.main.scale으로 나누지 않아도 mapView.projection.metersPerPixel
메서드에서 dp(Logical pixel) 단위로 반환되나요? 궁금합니다
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@note11g 추가적으로 기존의 로직이 |
이상한 현상이네요 ㅠㅠ.. |
넵, 이미 확인하셨을 것 같은데 일단 iOS 에서 반환하는 결과값은 Android 에서 반환하는 값과 같도록 변경했습니다. 양 플랫폼에서 같은 결과를 반환하는게 맞다고 생각해서요. |
fixes #85
원인
이슈 제보하신 분이 보내주신 로그를 보니 옵셔널 값을 언래핑하면서
nil
이 반환되어 생긴걸로 확인되었습니다.변경사항
_NaverMapControlSender.getMeterPerPixelAtLatitude
함수를 추가했습니다.아무래도 간접적인
getMetersPerDp
함수에 파라미터들을 nullable 로 두어 간접적으로 오버로딩의 형태를 의도하신 것 같은데 파라미터가 두 개라 하나만 값이 제공될 때 모두 제공될거라는 보장이 없습니다. 따라서 파라미터가 있는 함수, 없는 함수 각각을 명확하게하는게 좋겠다고 생각했습니다. 함수명은 네이버 지도 iOS SDK 의 API reference 의 metersPerPixelAtLatitude:zoom: 에서 따왔습니다.getMetersPerDp
의 함수 시그니처를 변경하지 않았습니다. PR 이 반영된다면 파라미터에Deprecated
어노테이션을 다는게 어떨까 싶습니다.getMeterPerPixelAtLatitude
를 추가했습니다.getMetersPerDp
의 옵셔널 언래핑을 제거했습니다.latitude
,zoom
파라미터가 모두 전달되었다면 오버로딩된NMFProjection.metersPerPixel(atLatitude latitude: Double, zoom: Double)
함수를 사용하도록했습니다.확인 방법
example/main.dart
의onMapReady
함수에 아래와 같이 코드를 첨부하고 실행하면 확인하실 수 있습니다.