Vue.js에서 Geocoder API를 사용해 보았습니다 (vue2-geocoder)
소개
Vue.js에서 Geocoder API를 호출 위도/경도를 얻어 보았습니다.
Geocoder API란?
주소를 지리 좌표(위도/경도)로 변환할 수 있는 API입니다.
참조 : htps : //에서 ゔぇぺぺrs. 오, ぇ. 코 m / 마 ps / 도쿠 멘들 온 / 게 오코 ぢ g / 오 ょ r ゔ ぃ w
사용 라이브러리 및 상세
사용 이유 : vue2의 geocoding용 플러그인에서 자주 사용되고 있다.
참조 : htps : // 기주 b. 이 m / P에서 S / ゔ 2-게 오고 r # Rea d
(address_line_1) : 주소에서 검색할 때 사용할 매개변수
(address_line_2) : 여기도 주소에서 검색할 때 사용하는 파라미터이지만 (address_line_1)만으로 검색할 수 있습니다.
(city) : 도시의 이름 등으로 검색하고 싶을 때의 파라미터
(상태) : 나라를 미국 등의 주를 가진 국가로 한 경우의 주 검색시에 사용하는 파라미터
(zip_code) : 우편 번호로 검색하고 싶을 때의 파라미터
(country) : 검색 대상이 되는 국가의 이름을 좁히기 위한 파라미터 [이번은 일본에 한정] 상기 파라미터를 이용하여 입력했을 때 위도/경도를 좁힙니다.
Geocoder API Request/Response
handleSetCity.ts
private async handleSetCity() {
let lat = 0
let lon = 0
const addressObj = {
address_line_1: '東京都庁',
address_line_2: '',
city: '',
state: '',
zip_code:'',
country: '日本'
}
(Vue as any).$geocoder.send(addressObj, (response: any) => {
if (response.results) {
lat = response.results[0].geometry.location.lat
lon = response.results[0].geometry.location.lng
}
})
}
[
{
"address_components": [
{
"long_name": "45階",
"short_name": "45階",
"types": [
"subpremise"
]
},
{
"long_name": "第一本庁舎",
"short_name": "第一本庁舎",
"types": [
"establishment",
"point_of_interest"
]
},
{
"long_name": "東京都庁",
"short_name": "東京都庁",
"types": [
"premise"
]
},
{
"long_name": "1",
"short_name": "1",
"types": [
"premise"
]
},
{
"long_name": "8",
"short_name": "8",
"types": [
"political",
"sublocality",
"sublocality_level_4"
]
},
{
"long_name": "2丁目",
"short_name": "2丁目",
"types": [
"political",
"sublocality",
"sublocality_level_3"
]
},
{
"long_name": "西新宿",
"short_name": "西新宿",
"types": [
"political",
"sublocality",
"sublocality_level_2"
]
},
{
"long_name": "新宿区",
"short_name": "新宿区",
"types": [
"locality",
"political"
]
},
{
"long_name": "東京都",
"short_name": "東京都",
"types": [
"administrative_area_level_1",
"political"
]
},
{
"long_name": "日本",
"short_name": "JP",
"types": [
"country",
"political"
]
},
{
"long_name": "163-8001",
"short_name": "163-8001",
"types": [
"postal_code"
]
}
],
"formatted_address": "日本、〒163-8001 東京都新宿区西新宿2丁目8−1 東京都庁 45階 第一本庁舎",
"geometry": {
"location": {
"lat": 35.6898531,
"lng": 139.6917321
},
"location_type": "ROOFTOP",
"viewport": {
"northeast": {
"lat": 35.6912020802915,
"lng": 139.6930810802915
},
"southwest": {
"lat": 35.6885041197085,
"lng": 139.6903831197085
}
}
},
"place_id": "ChIJnctryNSMGGARLv4MknPFseU",
"plus_code": {
"compound_code": "MMQR+WM 日本、東京都新宿区",
"global_code": "8Q7XMMQR+WM"
},
"types": [
"establishment",
"point_of_interest",
"tourist_attraction"
]
}
]
다만, 실제로 위도/경도를 취득하는 경우에 사용하는 것은, Response의 geometry.location의 내용이 됩니다.
"geometry": {
"location": {
"lat": 35.6898531,
"lng": 139.6917321
},
・
・
・
Geocoder API 오류 처리
Geocoder API를 사용했을 때의 에러 핸들링에는, Geocoder API에 표준으로 돌아오는 [에러 메세지]를 사용하면 좋습니다.
이 필드에는 특정 상태 코드 뒤에 있는 이유에 대한 자세한 정보가 들어 있습니다.
참조 : htps : //에서 ゔぇぺぺrs. 오, ぇ. 코 m / 마 ps / 도쿠 멘 타치 온 / 게 오코 ぢ g / 오 r ゔ ぃ w # S 타츠 s 코로 s
vue2-geocoder를 사용할 때의 오류 검증 결과
response : {"results":[],"status":"ZERO_RESULTS"}
response : {"error_message":"This API project is not authorized to use this API.","results":[],"status":"REQUEST_DENIED"}
Geocoder API 횟수 제한
GCP에서 API별로 (Geocoding 전용) 횟수 제한을 설정할 수 있습니다.
Reference
이 문제에 관하여(Vue.js에서 Geocoder API를 사용해 보았습니다 (vue2-geocoder)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yoshii0110/items/c49e0abf0396f6157a6b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)