TykanN / kpostal

Kpostal package can search for Korean postal addresses using Kakao postcode service.
MIT License
11 stars 15 forks source link

geocoding 플러그인 비정상 좌표(위도,경도) 반환 이슈 #3

Closed cheonbrave closed 3 years ago

cheonbrave commented 3 years ago

안녕하세요 주소는 카카오 우편번호서비스를 사용해서 검색기능을 웹뷰로 제공해주셨는데요 좌표는 geocoding 플러그인을 사용하셨더라구요 이때문인지, 국내 도로명주소가 제대로 인식되지 못해서, 엉뚱한 좌표를 반환하는 경우가 있었습니다

카카오 지도 api 에서도 주소를 입력하면 좌표를 반환해주는 기능이 있어서 제공해주신 kpostal 오픈소스를 아래 내용으로 수정해서 사용했습니다 카카오가 지오코딩이 더 정확한것 같아요

감사합니다

<수정 내용> 카카오 라이브러리 추가 및 주소검색 완료 후 콜백 직전에 지오코딩 수행 아래 내용 적용 후 kopostal.dart 에서는 카카오 위도경도 변수를 수신받아서 셋팅하는 내용을 첨부해서 사용했습니다

new daum.Postcode({ oncomplete: function (data) { // JS callback geocoder.addressSearch(data.address, function(results, status) { if (status === daum.maps.services.Status.OK) { var result = results[0]; data.kakaoLongitude = result.x; // 문자열 데이터 data.kakaoLatitude = result.y; // 문자열 데이터 callbackMessage(JSON.stringify(data)); } else { data.kakaoLongitude = 'none'; data.kakaoLatitude = 'none'; callbackMessage(JSON.stringify(data)); } }); }, width: "100%", height: "100%", }).embed(element_layer);

TykanN commented 3 years ago

안녕하세요. 역시 부정확한 좌표들이 있군요! 제보 감사합니다. 🙏

저도 초기에 카카오 api를 이용하려고 했으나, 기본적으로 일 횟수 제한이 있는 키를 사용한다는 점 때문에 패키지의 보편성, 범용성 등을 고려하여 별도 제약이 없는 플랫폼 지오코딩을 적용했습니다.

정확성 문제는 매우 크리티컬한 이슈라고 판단되어 카카오 api를 이용한 경위도 찾기 기능도 참고하여 패키지에서 개발자가 선택적으로 사용할 수 있는 방향으로 검토해보겠습니다.

혹시 비정상 좌표가 찍혔던 주소와 테스트하신 플랫폼이 뭔지 알 수 있을까요?

감사합니다.

cheonbrave commented 3 years ago

도로명 주소로 번지가 00-1 이런식이 아니고 00으로 끝나는 주소들에서 문제가 있는것 같아요

테스트 해봤던 주소로는 아래 두건인데 둘다 엉뚱한 좌표가 나옵니다 1) 경기도 남양주시 덕송1로 30 ( 아파트 주소) 2) 서울 중구 세종대로 110 (서울시청 주소)

제대로 건물번호까지 있는 주소들은 잘 찾습니다

플랫폼은 FLUTTER 개발이었고 아이폰12 실제폰으로 테스트 했습니다

TykanN commented 3 years ago

@cheonbrave 감사합니다. 알려주신 주소에서 동일하게 재현 가능했습니다.

우선 플랫폼 geocoding에서 해당 문제는 국문 주소를 입력했을 때만 나타나는 것으로 보여집니다. 그래서 다음 패키지 버전에서는 영문 주소를 통해 geocoding을 실행합니다. (알려주신 주소 2건 모두 정상 좌표 확인)

추가적으로, 카카오 API 키를 설정하면 추가적으로 카카오 경위도 값도 받아서 사용할 수 있게 다음 패키지 버전에 적용됩니다.

문제점을 알려주셔서 다시 한 번 감사드립니다. 우선 해당 이슈는 닫도록 하겠습니다. 비슷한 문제가 있을 시 언제든 다시 열여주셔도 됩니다.