이번 포스팅에서는 네이버 맵 API 중에서도 search Place를 이용하는 법에 대해 알아보겠습니다. 현재 운영하고 있는 앱에서 사용하고 있는 네이버 api 중 지도검색과 블로그 검색이 있는데요.
지도 검색과 블로그 검색은 이용하는 방법이 유사합니다. 예전에 안드로이드에서 이용하는 방법에 대해서도 올렸는데, 이번에 스위프트를 이용하여 iOS에도 적용하게 되었습니다.
먼저 API참고사이트는 아래와 같습니다.https://apidocs.ncloud.com/ko/ai-naver/maps\_search\_places/
네이버 지도를 사용하기 위해 엔클라우드에 접속하여 키값을 할당받은 후 아래 메소드를 실행하시면 됩니다.
코드는 보시다시피, alamofire와 swiftyJson을 이용하여 JSON형태로 데이터를 받아 처리했습니다.
최대 지도 검색은 5개까지 가능합니다.
참고로 한글로 검색할 경우, 단순 string으로 URL을 찍게 되면 검색이 되지 않기 때문에 URL Encoding이 필수인점 참고하시면 됩니다.
func naverSearchPlace(searchName: String) {
let header: HTTPHeaders = [
"X-NCP-APIGW-API-KEY-ID": "네이도 지도 api 키아이디",
"X-NCP-APIGW-API-KEY": "네이버 지도 api 키",
]
let coordinate: String = String(longitude) + "," + String(latitude)
// 현재 지도 중심의 좌표
// 한글도 검색될 수 있도록 URL Encoding
let encodedSearchName = searchName.addingPercentEncoding( withAllowedCharacters: NSCharacterSet.urlQueryAllowed)
Alamofire.request("https://naveropenapi.apigw.ntruss.com/map-place/v1/search?query=" + encodedSearchName! + "&coordinate=" + coordinate, method: .get, encoding: URLEncoding.default, headers: header) .validate(statusCode: 200..<300) .responseJSON { (response) -> Void in
if response.result.isSuccess {
var swiftyJsonVar = JSON(response.result.value!)
print(swiftyJsonVar)
let searchResultCount = swiftyJsonVar["meta"]["count"].int! // 최대 5개까지 검색함.
let searchResult = swiftyJsonVar["places"]
for i in 0 ... searchResultCount-1 {
self.searchedPlaces.append(searchResult[i]["name"].string!)
self.searchedLatitude.append(Double(searchResult[i]["y"].string!)!)
self.searchedLongitude.append(Double(searchResult[i]["x"].string!)!)
}
print(self.searchedPlaces)
} else {
}
}
}
'Developer > iOS, Swift' 카테고리의 다른 글
[Swift] Tab Bar Controller 슬라이드 애니메이션 효과 적용하기 (0) | 2019.12.07 |
---|---|
[Swift] 일반 View, ImageView, Label 액션 이벤트 생성하기 (2) | 2019.11.20 |
[Swift] Protocol과 delegate를 이용하여 뷰 간 데이터 전달하기 (271) | 2019.11.10 |
[Swift] ViewController 간 화면 전환 및 데이터 주고받기 (Programmatically) (291) | 2019.11.10 |
[iOS] 탭바 컨트롤러의 이미지 사이즈/색상은? (253) | 2019.08.25 |
댓글