본문 바로가기

개발84

[코틀린] 네이버 맵 API , TedNaverClustering 적용 구글맵에서는 클러스터링을 지원한다는데 모바일 네이버맵 api에서는 클러스터링을 지원하지 않는다... 있을법도 한데 없다는 게 놀라울 따름이다. 그래서 어떻게 클러스터를 하나 검색해보니 누군가 만들어놓은 라이브러리가 있어서 옳다구나! 하고 적용했다. 그런데 깃헙에 가서 해당 라이브러리를 봐도 설명이 너무나도 부족하다... 그래도 있는 게 어딘가? 사용해본 코드. 완전한 코드는 아니고 일부 발췌. private var tedNaverClustering: TedNaverClustering? = null private var naverMap: NaverMap? = null override fun onMapReady(p0: NaverMap) { tedNaverClustering = TedNaverClusterin.. 2024. 3. 18.
[코틀린] 뷰페이저2 안에 맵뷰에서 좌우 스와이프가 안먹힐 때 (커스텀 맵뷰) 내가 한 결과물은 아니고 다른 팀원과 네이버 맵 api를 쓰는 게 겹쳐서 해결법을 모색하다가 알아낸 방법이다. 뷰페이저는 좌우로 스크롤을 할 수 있는데 뷰페이저 안에 있는 페이지에 맵뷰를 쓸 경우 좌우로 스와이프를 하면 맵뷰가 움직이는 게 아니라 화면이 넘어가버리는 문제가 있었다. 혹여나 같은 문제를 겪는 분에게 참고가 될까해서 공유한다. 영상으로 보면 이해가 빠를 것이다. 커스텀 맵뷰를 사용하는 방법이다. class ScrollAwareMapView : MapView { constructor(context: Context) : super(context) constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) construc.. 2024. 3. 14.
[코틀린] 네이버 맵 api 마커 찍기 (보이는 곳만 나오게 ) 네이버맵을 사용하다보니 마커를 여러개 찍으면 렉이 걸린다. 보이는 곳만 나오게 하면 렉이 줄을 거 같은데.... 혹시나 나랑 같은 생각을 한 사람이 있을까 싶어서 검색해보니 있었다. override fun onMapReady(p0: NaverMap) { naverMap?.addOnCameraIdleListener { //카메라의 이동이 끝났을 때 updateMarkers(naverMap!!,markers) } } fun showMarker(marker: Marker, naverMap : NaverMap) { marker.map = naverMap } fun hideMarker(marker: Marker) { marker.map = null } fun updateMarkers(naverMap: NaverM.. 2024. 3. 14.
[코틀린] navermap 지도 영역 제한 ( 국내 영역으로 제한하기) 지도 영역을 제한하는 법은 api 가이드에 친절하게 나와있지만 막상 검색할라면 어디에 붙어있는지 일일히 찾아봐야 한다. naverMap?.minZoom = 6.0 naverMap?.maxZoom = 18.0 naverMap?.extent = LatLngBounds(LatLng(32.973077, 124.270981), LatLng(38.856197,130.051725 )) 캠핑앱을 하기 위해 네이버맵에 국내영역만 잡혀야 하는데 아무 설정도 안하니 전세계까지 맵을 축소할 수 있다.... 남한 영역만 잡히게 하려면 위에 처럼 설정하면 된다 . LatLngBounds에 들어가는 좌표는 우측 상단 꼭지점과 좌측 하단 꼭지점을 기준으로 한다. 2024. 3. 11.
[git] 특정 파일 잘못 올린 상태로 커밋했을 때, git에서 특정 파일 제거하는 방법 용량이 큰 exe 파일을 넣어둔 걸 깜빡하고 커밋해서 push할 때마다 용량제한에 걸렸다. 로컬에서 exe파일을 삭제했음에도 불구하고 깃 내부에서 기록이 남아있는지 exe파일을 계속 푸쉬하려고 하면서 용량 초과 메시지를 띄운다. 파일 제거 git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch 파일명' --prune-empty --tag-name-filter cat -- --all 경로 존재하면 경로+파일명 ex) root/src/components/PostsButtons.js git filter-branch --force --index-filter 'git rm -r --cached --ignore-unmatch /src/c.. 2024. 2. 29.
[안드로이드/코틀린] 파이어베이스 리얼타임 데이터베이스를 연결해보자(firebase realtime database) 파이어베이스를 앱과 연결시켜보자. 우선 프로젝트를 만든다. 이런 화면을 찾으면 된다. 이름을 써주고 계속 클릭 2단계 계속 클릭 3단계 Google 애널리틱스는 사용하지 않았다. 4단계 기다리면 끝난다. 이 화면에서 왼쪽 메뉴에 Realtime Database를 클릭한다. 데이터베이스 만들기 클릭 -> 미국 클릭 -> 테스트로 만드는거니 테스트 모드에서 시작 선택 테스트는 모두가 수정할 수 있기 때문에 서비스를 할거라면 반대쪽을 선택해주자. 데이터베이스를 만들었다. 이제 등록을 할 차례다. 프로젝트 개요 옆에 톱니바퀴 아이콘을 클릭-> 프로젝트 설정 클릭 -> 내 앱 -> 안드로이드 클릭 이런 화면이 나오면 된다. 패키지를 입력해주고 등록 google-services.json파일을 위에 이미지처럼 프로젝.. 2024. 2. 27.
피그마 프레젠테이션 기능 피그마에서 앱ui를 구성하고 나면 화면 전환을 어떻게 할지 간단하게 목업할 수 있는 기능이 있다. 오른쪽 속성에서 디자인을 프로토타입으로 바꾼 후 화면전환 이벤트를 가진 요소에다가 navigate to 로 화면전환할 프레임을 선택하면 된다. 그럼 화살표로 쭈욱 이어진 것을 볼 수 있다. 그럼 끝이다. 제작한 화면들에서 화면전환 이벤트를 모두 구현했다면 Ctrl + Alt + Enter 혹은 오른쪽 상단에 삼각형 아이콘에서 프레젠트를 클릭하면 새창이 뜨면서 화면 전환을 알아볼 수 있다. 2024. 2. 21.
draw.io ERD 테이블에 행 추가하기 Ctrl + Enter를 눌러주면 한 줄이 더 생긴다. 2024. 2. 21.
[안드로이드/코틀린] 테마 적용 오류 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.brandon.playvideo_app/cohttp://m.brandon.playvideo_app.ui.detail.ChannelDetailActivity}: android.view.InflateException: Binary XML file line #16 in com.brandon.playvideo_app:layout/channeldetail_activity: Binary XML file line #16 in com.brandon.playvideo_app:layout/channeldetail_activity: Error inflating class 이런 오류가 뜬다... 해당.. 2024. 2. 20.