[TIL]Android LBS

mandoofu·2024년 10월 14일

안드로이드

목록 보기
16/20
post-thumbnail

LBS(Location Based Service)

  • 위치 정보의 접속, 제공 또는 위치 정보에 의해 작용하는 모든 응용 소프트웨
    어 서비스

  • 모바일 네트워크를 통해 휴대 단말기에서 접근 할 수 있는 위치 정보 시스템
    활용

  • 위성과 GPS 수신기 및 위도/경도(ACCESS_FINE_LOCATION)

  • Cell(wifi) Tower Triangulation(ACCESS_COARSE_LOCATION)

    • 기지국과의 상대적인 거리를 이용하는 방법
    • 휴대폰과 기지국 간의 거리는 지연시간(late time)으로 계산
  • Location Provider

    • FusedLocationProvider(Google Location API)
      • 융합(통합)된 위치 제공자
      • GPS , NETWORK Provider 의 위치 오차 간극을 해소
  • LBS & Map 설정 Permission

    • AndroidManifest.xml(Runtime Permission)
<uses-permission android:name=“android.permission.INTERNET />
//LocationManager.GPS_PROVIDER
<uses-permission android:name=“android.permission.ACCESS_FINE_LOCATION”/>
//LocationManager.NETWORK_PROVIDER(Cell Tower & Wi-Fi)
<uses-permission android:name=“ android.permission.ACCESS_COARSE_LOCATION”/>
// Service 등의 백그라운드를 이용하여 위치정보를 얻고자 할 때(Android 10 == API LEVEL 29 higher)
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
  • LocationRequest

    • 위치정보를 획득하기 위해 요청 정보를 담고 있는 Class
    • 업데이트 시간 간격, 거리 간격, 만료 시간, 업데이트 횟수, Battery 소모정도를 설정
  • Marker

    • 지도에서 POI(Point Of Interest, 지도 위에 표시된 건물과 상점 등을 말한다)를 나타
      내기 위한 객체(해당 객체는 REST로 얻어옴)
    • Marker를 생성하는데 필요한 값을 MarkerOptions에 설정한 다음 GoogleMap의addMarker()로 추가하면 Marker가 생성된다.
    • Marker를 제거하려면 Marker객체의 remove()를 호출
    • Marker와 POI의 Mapping은 별도의 자료구조로 만들어야 함
	//마커를 이용해 포이정보를 찾는다
	var poiResolver: MutableMap<Marker, POIItem> = HashMap()
	//마커 추가
	private fun addMapPoiMarker(position: LatLng, data: POIItem) {
		val options = MarkerOptions()
		with(options){
			position(position)
			icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_CYAN))
			title(data.title)
			snippet(data.subtitle)
			draggable(true)
		}
		val marker = map.addMarker(options)
		markerResolver[data] = marker
		poiResolver[marker] = data
		poiList.add(data)
	}
}

0개의 댓글