---
# System prepended metadata

title: Untitled

---

## 네이버 맵
- 우리나라(0~17)
- Zoom(min: 0, max: 22, default: 20) [Reference](https://navermaps.github.io/ios-map-sdk/reference/Classes/NMFMapView.html#/c:objc(cs)NMFMapView(py)minZoomLevel)

## 쿼드트리를 사용하는 이유
- 개수가 많을 때 격자 모양 처럼 보이는 문제가 있다.
    - 대표값을 정하는 방법
- Marker기준은 first
- 앱이 켜지면 전체 QuadTree를 만들고 재사용한다.
- QuadTree를 CoreData에 저장할 지는 고민
- 저장하지 않고 켜질때마다 QuadTree가 만들어진다면 Marker위치가 달라질거라 예상
- Node에 자식들의 총 갯수를 저장해서 O(1)로 갯수 계산

## 축적
```
우리나라의 위경도 범위는 124 – 132, 위도범위는 33 – 43 라고 합니다.
북한 제외 위경도 범위는 125 - 132, 위도 범위는 33 - 39로 잡으면 될거 같아요

극동: 경상북도 울릉군의 독도(獨島)로 동경 131° 52′20“, → 131.87222222
극서: 전라남도 신안군의 소흑산도(小黑山島)로 동경 125° 04′, → 125.06666667
극북: 강원도 고성군 현내면 송현진으로 북위 38° 27′00, → 38.45000000
극남: 제주도 남제주군 마라도(馬羅島)로 북위 33° 06′00" → 33.10000000
```
[출처](https://statkclee.github.io/spatial/geo-info.html)

```swift
//위도 경도 객체
let coord = NMGLatLng(lat: 37.5670135, lng: 126.9783740)
```

0.002 100m쯤
10 / 2^12 = 0.0024    ~ 100m쯤 > 노드가 1600만개
10 / 2^15 = 0.0003    ~ 12m쯤
10 / 2^18 = 0.000038  ~ 1.5m쯤 > 노드 가 4^18 ... 7천만개

root Node(우리나라 바운드)만 잘 잡으면 그 하위는 알아서 1/4계산?
- 노드가 너무 많아지지 않을까?
```swift
let southWest = NMGLatLng(lat: 33, lng: 125)
let northEast = NMGLatLng(lat: 39, lng: 132)
let bounds = NMGLatLngBounds(southWest: southWest, northEast: northEast)
```

## 두 마커가 어느 정도 거리가 될 때, 또는 어느 정도 줌이 되었을 때 클러스터링 할것인가?
 - [mapView.coveringBounds(남서쪽, 북동쪽)](https://navermaps.github.io/ios-map-sdk/reference/Classes/NMFMapView.html#/c:objc(cs)NMFMapView(py)coveringBounds)


### 화면 좌표와 지도 좌표 간 변환
다음은 화면의 (100, 100) 지점을 지도 좌표로 변환하는 예제입니다.

```Swift
let projection = mapView.projection
let coord = projection.latlng(from: CGPoint(x: 100, y: 100))
```

다음은 지도의 (37.5666102, 126.9783881) 지점을 화면 좌표로 변환하는 예제입니다.

```Swift
let point = projection.point(from: NMGLatLng(lat: 37.5666102, lng: 126.9783881))
```

## K-means
- 계산을 할 때 마다 결과가 달라지는 문제가 있다.

## 지도에서 현재 표시되는 영역 반환
- zoomLevel 에 따라 clustering 기준이 되는 쿼드트리 Node의 Level을 달리한다?
- level의 Node를 다 보여준다?