Skip to content
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

[Feature] 메인 지도에서 주소 검색하는 기능 추가 #34

Open
wants to merge 30 commits into
base: develop
Choose a base branch
from

Conversation

taek0622
Copy link
Collaborator

@taek0622 taek0622 commented Jun 2, 2023

Motivation 🥳 (코드를 추가/변경하게 된 이유)

  • 메인 지도에서 상단 검색창을 통해 주소를 검색하기 위함

Key Changes 🔥 (주요 구현/변경 사항)

  • 주소 검색을 담당하는 AddressSearcher 클래스 추가 => 클래스 이름 LocationManager로 변경 (2023.06.13 변경)
  • MapView의 검색창을 통해 검색을 시도했을 때, 검색창 하단에 리스트로 주소 목록 보여주는 기능 추가
  • MapView에서 검색한 주소를 클릭했을 때, 해당 주소의 좌표로 이동하는 기능 추가
  • 불필요한 레거시 코드 삭제
  • 검색한 주소의 좌표로 이동할 때, 더 자연스럽게 이동하도록 변경 (2023.06.13 추가)
  • 검색한 주소 클릭시 상단 검색창 비활성화 (2023.06.13 추가)
  • iOS 17 이후로 Deprecate될 NavigationViewNavigationStack으로 변경 및 이에 따른 코드, 동작 조정 (2023.06.14 추가)

ToDo 📆 (남은 작업)

  • 검색하여 표시된 주소의 버튼을 클릭했을 때, 버튼이 선택 중이라는 것을 조금 더 잘 보이게 변경 (2023.06.13 삭제)
  • 검색한 주소의 좌표로 이동하는 것을 조금 더 자연스럽게 이동하도록 변경 (2023.06.13)
  • 검색한 주소 클릭시 상단 검색창 비활성화 (2023.06.13)

ScreenShot 📷 (참고 사진)

To Reviewers 🙏 (리뷰어에게 전달하고 싶은 말)

  • SwiftUI에서 MapKit의 주소 검색을 사용하는 예시가 없기도 하고, 대부분의 글들이 UIKit에서 사용하거나, SwiftUI에 UIKit의 뷰를 가져다 쓰는 방식 밖에 없어서 SwiftUI에 맞게 변경하는데 시간이 조금 걸렸네요.
  • 현재 검색한 주소의 좌표로 이동할 때, 뷰를 새로 그리듯이 이동해서 부자연스러운 편인 것 같습니다. 자연스럽게 이동될 수 있도록 변경되어야 할 것 같아요. => 해당 문제는 2023년 6월 13일자 커밋으로 수정되었습니다.
  • 검색한 주소의 좌표로 이동할 때, 자연스럽게 이동될 수 있도록 변경되었습니다. 다만, 정확한 기준은 알 수 없으나 좌표만 이동하거나 확대/축소 동작 중 하나만 발생할 경우 일정 거리 이상이어도 자연스럽게 이동하지만, 거리가 일정 거리 이상이면서 좌표 이동과 확대/축소가 동시에 일어나는 경우 기존과 같이 뷰를 새로 그리듯이 이동하게 되네요. 이 문제는 MapKit 자체의 문제인 듯하여 수정이 불가할 것 같습니다.
  • 또, 버튼 클릭시 버튼이 클릭되고 있는지 제대로 보이지 않는 것 같아서 버튼 클릭시 버튼에 표시하는 부분이 추가되어야 할 것 같습니다. => 해당 태스크는 터치되면 어차피 볼 일이 없는 부분으로 판단되어 2023년 6월 13일자로 태스크 삭제하였습니다.
  • NavigationView가 iOS 17 이후로 Deprecate될 예정이어서 NavigationStack으로 변경했습니다. 또한, 이에 따라 달라지는 동작이 상당히 부자연스러워져서 관련 동작 코드를 약간 수정했습니다. (2023.06.14)
  • 중요한 코드이지만 생각보다 어렵지는 않은 코드이니 가볍게 훑어보시면서 이해하셔도 좋을 것 같아요.

Reference 🔗

검색 자동완성 기능

검색한 주소의 좌표 출력

MapKit 좌표 자연스럽게 애니메이팅하여 이동하기

EnvironmentObject, StateObject, ObservedObject

Apple 공식 문서

Close Issues 🔒 (닫을 Issue)

taek0622 added 19 commits June 2, 2023 16:53
- 검색할 때 아래에 리스트가 보여주도록 레이아웃 수정
- 검색 중에만 리스트를 보여주는 기능 추가
- List를 표시하기 위해 현재 검색어를 작성 중인지 판단하는 isEdit 변수의 이름을 isEditing으로 변경
- 주소 검색 기능을 담당하기 위한 AddressSearcher 클래스 추가
- 잘못된 괄호 삭제
- 검색용 변수를 searchQueryString에서 AddressSearcher의 queryString으로 변경
- 불필요한 레거시 코드 삭제
- 더 이상 사용되지 않는 변수 삭제
- 분기문 형태를 if문에서 삼항연산자로 수정
- 주소의 좌표 값을 반환하는 함수 추가
- 불필요한 공백 제거
- 주소의 좌표값을 출력하는 기능 추가
- 핀을 만들어 포커싱 하는 기능 추가 필요
- List를 표시하기 위해 현재 검색어를 작성 중인지 판단하는 isEdit 변수의 이름을 isEditing으로 변경
- 주소 검색 기능을 담당하기 위한 AddressSearcher 클래스 추가
- 검색용 변수를 searchQueryString에서 AddressSearcher의 queryString으로 변경
- 더 이상 사용되지 않는 변수 삭제
- 주소의 좌표 값을 반환하는 함수 추가
- 주소의 좌표값을 출력하는 기능 추가
- 핀을 만들어 포커싱 하는 기능 추가 필요
@taek0622 taek0622 added the feature 새로운 기능 추가 label Jun 2, 2023
@taek0622 taek0622 self-assigned this Jun 2, 2023
taek0622 added 6 commits June 2, 2023 17:20
- 검색한 주소의 좌표에 맵을 보여주는 기능 추가
- 사용되지 않는 주석 삭제
- isEditing이라는 별도의 변수 대신 searchQuery로 검색 중 여부 판단
- 지도 및 주소와 관련된 정보를 처리하는 addressSearcher 클래스의 이름을 클래스 기능 확장에 따라 LocationManager로 변경
- 검색한 주소의 좌표만 보내주던 loadAddressCoordinate 함수를 span까지 합쳐서 CoordinateRegion 객체로 반환하도록 변경
- 공백 추가
taek0622 added 5 commits June 13, 2023 21:45
- 검색한 좌표로 이동할 때, 순간이동하듯 넘어가지 않고 애니메이션으로 자연스럽게 이동하도록 변경
- MapView에서 검색한 결과만을 다루는 SearchedView 분리
- locationManager의 queryString의 유무가 아닌 isSearching 변수로 검색 중인지 여부 판단
- dismissSearch로 좌표 선택 완료시 자동으로 검색 종료 상태로 전환
- locationManager를 StateObject와 EnvrionmentObject를 사용하는 방식으로 변경
- iOS 17 이후로 Deprecate될 NavigationView에서 NavigationStack으로 변경
- NavigationStack으로 변경됨에 따라 부자연스러워진 동작 개선
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature 새로운 기능 추가
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Feature] 메인 지도에서 주소 검색하는 기능 추가
1 participant