본문 바로가기
카테고리 없음

[Google MAP API] 기본 기능

by ballbig 2024. 9. 27.
728x90

 

 

 

 

 

 

 

Google MAP API 사용 가이드

https://developers.google.com/maps/documentation/places/web-service/cloud-setup?hl=ko&_gl=1*1gpzxty*_up*MQ..*_ga*MjAxNzc4Nzk0LjE3MjczOTcxNTE.*_ga_NRWSTWS78N*MTcyNzM5NzE1MS4xLjAuMTcyNzM5NzE1MS4wLjAuMA..#places-api

 

Google Cloud 프로젝트 설정  |  Places API  |  Google for Developers

이 페이지는 Cloud Translation API를 통해 번역되었습니다. 의견 보내기 Google Cloud 프로젝트 설정 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 플랫폼 선택: Andr

developers.google.com

 

 

 

Places API (신규)에서 제공하는 API

 

 

신규 버전에 추가된 새로운 필드, 속성, 접근성 옵션

 

필드
regularSecondaryOpeningHours 특정 작업의 특정 시간을 설명합니다. 2차 영업시간은 비즈니스의 기본 영업시간과 다릅니다. 대상 예를 들어 음식점은 드라이브스루 시간 또는 배달을 지정할 수 있습니다. 시간을 보조 시간으로 선택합니다.
paymentOptions 장소에서 사용할 수 있는 결제 옵션입니다. 허용되는 장소 수에는 결제 옵션 1개가 있어야 합니다. 결제 옵션 데이터를 사용할 수 없는 경우 결제 옵션 필드가 설정되지 않습니다. 옵션은 다음과 같습니다.
  • 신용카드
  • 체크카드
  • 현금으로만 결제 가능
  • NFC 결제
parkingOptions 장소에서 제공하는 주차 옵션입니다. 옵션은 다음과 같습니다.
  • 무료 주차장
  • 유료 주차장
  • 무료 노상 주차
  • 발레파킹
  • 무료 주차장
  • 유료 주차장
subDestinations 특정 장소와 관련된 고유한 장소 대상 예를 들어 공항 터미널은 공항에 있습니다.
fuelOptions 매장에서 구매할 수 있는 연료 옵션에 관한 최신 정보입니다. 주유소가 생겨났습니다. 이 정보는 정기적으로 업데이트됩니다. 옵션은 다음과 같습니다.
  • Diesel
  • 일반 무연
  • 중급
  • 프리미엄
  • SP91
  • SP91 E10
  • SP92
  • SP95 E10
  • SP98
  • SP99
  • SP100
  • LPG
  • E80
  • E85
  • 메탄
  • 바이오디젤
  • 트럭용 경유
evChargeOptions 이 역의 전기자동차 (EV) 충전기 수 동안 일부 전기자동차 충전기에는 커넥터가 여러 개 있으며 각 충전기는 한 번에 한 대의 차량만 충전하는 경우 이 필드에는 충전소의 수가 표시됩니다.
shortFormattedAddress 사람이 읽을 수 있는 짧은 장소의 주소입니다.
primaryType 지정한 결과의 기본 유형입니다. 예를 들어 장소는 cafe 또는 airport로 분류됩니다. 가 장소는 하나의 기본 유형만 가질 수 있습니다. 이 가능한 값은 지원 유형을 참고하세요.
primaryTypeDisplayName 요청에 현지화된 기본 유형의 표시 이름입니다. 사용할 수 있습니다. 가능한 값의 전체 목록은 지원 유형을 참고하세요.

 

 

속성
outdoorSeating 야외 좌석이 마련되어 있습니다.
liveMusic 라이브 음악을 제공하는 장소입니다.
menuForChildren 어린이 메뉴가 있는 장소입니다.
servesCocktails 칵테일을 판매하는 레스토랑입니다.
servesDessert 디저트를 판매하는 레스토랑입니다.
servesCoffee 커피가 제공됩니다.
goodForChildren 아이들에게 좋은 장소입니다.
allowsDogs 반려견 동반이 가능한 장소입니다.
restroom 화장실이 있는 장소입니다.
goodForGroups 장소에는 그룹을 수용할 수 있습니다.
goodForWatchingSports 스포츠 경기를 관람하기에 적합한 장소입니다.

 

 

 

접근성 옵션
wheelchairAccessibleParking 휠체어 이용 가능 주차장이 있습니다.
wheelchairAccessibleEntrance 장소에 휠체어로 진입할 수 있는 입구가 있습니다.
wheelchairAccessibleRestroom 휠체어 이용이 가능한 화장실이 있습니다.
wheelchairAccessibleSeating 휠체어 이용 가능 좌석이 마련되어 있습니다.

 

 

 

주변 검색
https://places.googleapis.com/v1/places:searchNearby

 

[Header]

headers = {
    "Content-Type": "application/json",
    "X-Goog-Api-Key": api_key,
    "X-Goog-FieldMask": "places.displayName"
}
  • Content-Type: 요청 본문의 데이터 형식을 서버에 알리는 역할
  • X-Goog-Api-Key : Google API 인증을 위한 필수 헤더 (Google Cloud 콘솔에서 발급받은 API 키)
  • X-Goog-FieldMask : API 응답에서 어떤 필드를 반환할지를 지정하는 필드 마스크 (API 응답이 너무 많은 데이터를 반환하는 것을 방지하기 위해, 필요한 필드만 반환하도록 요청)

 

- Field option

더보기
더보기
더보기

[Basic] : 일반적인 장소 검색 요청에 사용되며, 주로 장소의 기본 정보와 위치 관련 데이터를 반환

  • places.accessibilityOptions: 장소의 접근성 옵션을 반환합니다 (예: 휠체어 접근 가능 여부).
  • places.addressComponents: 장소의 주소를 구성하는 다양한 요소 (예: 거리, 도시, 우편번호 등)를 반환합니다.
  • places.adrFormatAddress: ADR 형식으로 작성된 주소를 반환합니다.
  • places.attributions: API 데이터 제공자의 출처(Attribution)를 반환합니다.
  • places.businessStatus: 해당 장소의 영업 상태를 나타냅니다 (예: 영업 중, 일시적 휴업, 영구 폐업 등).
  • places.displayName: 장소의 사람이 읽을 수 있는 이름을 반환합니다.
  • places.formattedAddress: 사람이 읽을 수 있는 형식의 주소를 반환합니다.
  • places.googleMapsUri: 장소의 Google Maps URL을 반환합니다.
  • places.iconBackgroundColor: 지도에서 장소 마커의 배경색을 반환합니다.
  • places.iconMaskBaseUri: 장소 아이콘의 기본 URI를 반환합니다.
  • places.id: 장소의 고유 식별자(Place ID)를 반환합니다.
  • places.location: 장소의 위치(위도와 경도)를 반환합니다.
  • places.name*: 장소의 리소스 이름을 반환하며, 형식은 places/PLACE_ID입니다.
  • places.photos: 장소의 사진을 반환합니다.
  • places.plusCode: 장소의 Plus Code를 반환합니다 (Google의 글로벌 위치 코드).
  • places.primaryType: 장소의 주요 유형을 반환합니다 (예: 레스토랑, 카페 등).
  • places.primaryTypeDisplayName: 주요 유형의 사람이 읽을 수 있는 이름을 반환합니다.
  • places.shortFormattedAddress: 짧은 형식의 사람이 읽을 수 있는 주소를 반환합니다.
  • places.subDestinations: 해당 장소 내에 있는 하위 목적지를 반환합니다.
  • places.types: 장소의 유형 리스트를 반환합니다 (예: 박물관, 공원 등).
  • places.utcOffsetMinutes: 장소의 UTC 시간대 오프셋을 분 단위로 반환합니다.
  • places.viewport: 장소를 포함하는 뷰포트(지도의 경계)를 반환합니다.
  • Nearby Search (Advanced) SKU를 트리거하는 필드
  • places.currentOpeningHours: 장소의 현재 영업 시간을 반환합니다.
  • places.currentSecondaryOpeningHours: 장소의 부차적인 영업 시간을 반환합니다.
  • places.internationalPhoneNumber: 국제 형식의 전화번호를 반환합니다.
  • places.nationalPhoneNumber: 국가 내 전화번호 형식을 반환합니다.
  • places.priceLevel: 장소의 가격대를 반환합니다 (예: 1~4 범위로, 값이 높을수록 가격이 비쌉니다).
  • places.rating: 장소의 평균 평점을 반환합니다.
  • places.regularOpeningHours: 장소의 일반적인 영업 시간을 반환합니다.
  • places.regularSecondaryOpeningHours: 장소의 부차적인 일반 영업 시간을 반환합니다.
  • places.userRatingCount: 장소의 사용자 평가 수를 반환합니다.
  • places.websiteUri: 장소의 웹사이트 URL을 반환합니다.

 

[Advanced] : 더 상세한 정보(예: 전화번호, 영업 시간, 평점 등)를 포함

  • places.currentOpeningHours: 장소의 현재 영업 시간을 반환합니다.
  • places.currentSecondaryOpeningHours: 장소의 부차적인 영업 시간을 반환합니다.
  • places.internationalPhoneNumber: 국제 형식의 전화번호를 반환합니다.
  • places.nationalPhoneNumber: 국가 내 전화번호 형식을 반환합니다.
  • places.priceLevel: 장소의 가격대를 반환합니다 (예: 1~4 범위로, 값이 높을수록 가격이 비쌉니다).
  • places.rating: 장소의 평균 평점을 반환합니다.
  • places.regularOpeningHours: 장소의 일반적인 영업 시간을 반환합니다.
  • places.regularSecondaryOpeningHours: 장소의 부차적인 일반 영업 시간을 반환합니다.
  • places.userRatingCount: 장소의 사용자 평가 수를 반환합니다.
  • places.websiteUri: 장소의 웹사이트 URL을 반환합니다.

 

[Preferred] : 장소의 특화된 서비스 정보(예: 배달, 반려동물 허용 여부, 주차 옵션 등)를 요청할 때 사용

  • places.allowsDogs: 해당 장소가 반려견을 허용하는지 여부를 반환합니다.
  • places.curbsidePickup: 장소에서 커브사이드 픽업 서비스를 제공하는지 여부를 반환합니다.
  • places.delivery: 배달 서비스 제공 여부를 반환합니다.
  • places.dineIn: 식사 가능 여부를 반환합니다.
  • places.editorialSummary: 장소에 대한 편집 요약을 반환합니다.
  • places.evChargeOptions: 전기차 충전 옵션을 반환합니다.
  • places.fuelOptions: 연료 옵션을 반환합니다.
  • places.goodForChildren: 해당 장소가 아이에게 적합한지 여부를 반환합니다.
  • places.goodForGroups: 그룹에 적합한 장소인지 여부를 반환합니다.
  • places.goodForWatchingSports: 스포츠 관람에 적합한 장소인지 여부를 반환합니다.
  • places.liveMusic: 장소에서 라이브 음악을 제공하는지 여부를 반환합니다.
  • places.menuForChildren: 어린이 메뉴 제공 여부를 반환합니다.
  • places.parkingOptions: 주차 옵션을 반환합니다.
  • places.paymentOptions: 결제 옵션을 반환합니다 (예: 현금, 카드 등).
  • places.outdoorSeating: 야외 좌석 제공 여부를 반환합니다.
  • places.reservable: 예약 가능 여부를 반환합니다.
  • places.restroom: 화장실 시설 제공 여부를 반환합니다.
  • places.reviews: 장소에 대한 사용자 리뷰를 반환합니다.
  • places.servesBeer: 맥주 제공 여부를 반환합니다.
  • places.servesBreakfast: 아침 식사 제공 여부를 반환합니다.
  • places.servesBrunch: 브런치 제공 여부를 반환합니다.
  • places.servesCocktails: 칵테일 제공 여부를 반환합니다.
  • places.servesCoffee: 커피 제공 여부를 반환합니다.
  • places.servesDessert: 디저트 제공 여부를 반환합니다.
  • places.servesDinner: 저녁 식사 제공 여부를 반환합니다.
  • places.servesLunch: 점심 식사 제공 여부를 반환합니다.
  • places.servesVegetarianFood: 채식 음식 제공 여부를 반환합니다.
  • places.servesWine: 와인 제공 여부를 반환합니다.
  • places.takeout: 테이크아웃 제공 여부를 반환합니다.

 

[body]

{
  "includedTypes": ["restaurant"],
  "languageCode" : "ko",
  "maxResultCount": 10,
  "locationRestriction": {
    "circle": {
      "center": {
        "latitude": 37.50140609595665,
        "longitude": 127.04173085185646},
      "radius": 500.0
    }
  }
}

 

 

- include Types 예시

더보기
더보기
더보기
장소 유형 키워드설명
restaurant 일반 레스토랑
cafe 카페
bar 바, 주점
night_club 나이트 클럽
bakery 제과점
park 공원
movie_theater 영화관
museum 박물관
library 도서관
gym 체육관, 헬스장
shopping_mall 쇼핑몰
school 학교
university 대학교
hospital 병원
pharmacy 약국
gas_station 주유소
lodging 숙박시설 (호텔, 모텔 등)
supermarket 슈퍼마켓
convenience_store 편의점
book_store 서점
florist 꽃집
art_gallery 미술관
zoo 동물원
amusement_park 놀이공원
aquarium 수족관
tourist_attraction 관광명소
church 교회
mosque 모스크
hindu_temple 힌두 사원
synagogue 유대교 회당
place_of_worship 종교 장소
campground 캠프장
car_rental 렌터카 서비스
car_wash 세차장
pet_store 애완동물 가게
veterinary_care 동물 병원
beauty_salon 미용실
hair_care 헤어샵
spa 스파
bank 은행
atm ATM
post_office 우체국
bus_station 버스 정류장
subway_station 지하철역
train_station 기차역
airport 공항
taxi_stand 택시 승강장
parking 주차장

 

등등..

 

 

텍스트 검색(신규)

 

[URL] POST

https://places.googleapis.com/v1/places:searchText

 

 

[Header]

headers = {
    "Content-Type": "application/json",
    "X-Goog-Api-Key": api_key,
    "X-Goog-FieldMask": "places.displayName"
}
  • Content-Type: 요청 본문의 데이터 형식을 서버에 알리는 역할
  • X-Goog-Api-Key : Google API 인증을 위한 필수 헤더 (Google Cloud 콘솔에서 발급받은 API 키)
  • X-Goog-FieldMask : API 응답에서 어떤 필드를 반환할지를 지정하는 필드 마스크 (API 응답이 너무 많은 데이터를 반환하는 것을 방지하기 위해, 필요한 필드만 반환하도록 요청)

 

[Body]

{
  "textQuery" : "대한민국 서울특별시 강남구 테헤란로34길 14",
  "languageCode" : "ko",
  "maxResultCount": 10,
  "locationBias": {
    "circle": {
      "center": {
        "latitude": 37.50140609595665,
        "longitude": 127.04173085185646},
      "radius": 500.0
    }
  }
}
  • 필수
    • textQuery : 검색할 텍스트 문자열(예: '음식점')
      ex)  '중앙로 123' 또는 '샌프란시스코에서 방문하기 가장 좋은 장소'와 같은 텍스트를 입렿가면, 인식된 관련성을 기준으로 결과의 순서를 지정하여 반환한다.

 


 

장소 사진 (신규)

 

[URL] GET

https://places.googleapis.com/v1/{NAME}/media?key={API_KEY}&maxHeightPx={width}&maxWidthPx={height}
  • 필수 
    • NAME : 상세검색 시 나온  photos.name 전체를 넣어준다.
    • key : GOOGLE MAP API KEY
    • width : 최대 너비 (px)
    • height : 최대 높이 (px)

 

 

ex)

https://places.googleapis.com/v1/places/ChIJm3V0fu2ifDURRJ8IMUijVtY/photos/AdCG2DM2sHdWu9T7KFWUG6PPSnny63njU40epml1uUHiUmHAzw46-aKC7ohk7TqAR3tc5f4m8pMDtCb2yLtY93MUJCWx7-UiOfksjPdXLo1W5xyAOnRcVG5TrEx9DVWxQzTYMdI5UI3u7Fq7WPhT3SBp6G3vqa8pprLH7lY-/media?key=AIzaSyDTyW2rE2HZ-kLEWk22mUtKQOfVYPd5BjQ&maxHeightPx=400&maxWidthPx=400

 

 


 

장소 세부 정보(신규)

 

[URL] GET

https://places.googleapis.com/v1/places/{places.id}?fields={field}&key={API_KEY}
  • 필수 매개 변수
    • places.id : goole 맵 검색을 통해 얻는 places.id 값
    • field : 검색시 반환 받을 값

 

ex) URL

https://places.googleapis.com/v1/places/ChIJj61dQgK6j4AR4GeTYWZsKWw?fields=*&key=AIzaSyDTyW2rE2HZ-kLEWk22mUtKQOfVYPd5BjQ&languageCode=ko

 

 

자동완성 요청

 

[URL] POST

https://places.googleapis.com/v1/places:autocomplete

 

 

[Header] 

headers = {
    "Content-Type": "application/json",
    "X-Goog-Api-Key": api_key,
    "X-Goog-FieldMask": "*"
}
  • Content-Type: 요청 본문의 데이터 형식을 서버에 알리는 역할
  • X-Goog-Api-Key : Google API 인증을 위한 필수 헤더 (Google Cloud 콘솔에서 발급받은 API 키)
  • X-Goog-FieldMask : API 응답에서 어떤 필드를 반환할지를 지정하는 필드 마스크 (API 응답이 너무 많은 데이터를 반환하는 것을 방지하기 위해, 필요한 필드만 반환하도록 요청)

 

 

[Body]

{
  "input": "pizza",
  "languageCode" : "ko",
  "locationBias": {
    "circle": {
      "center": {
        "latitude": 37.50140609595665,
        "longitude": 127.04173085185646},
      "radius": 500.0
    }
  }
}
  • 필수
    • input : 검색할 텍스트 문자열
      전체 단어 및 하위 문자열 지정 장소 이름, 주소 및 플러스 코드를 고려하여 자동완성 한 값을 반환한다.

 

[response]

더보기
더보기
더보기
{
    "suggestions": [
        {
            "placePrediction": {
                "place": "places/ChIJn-zr9lOhfDURya273bgBAVY",
                "placeId": "ChIJn-zr9lOhfDURya273bgBAVY",
                "text": {
                    "text": "Pizza Alvolo Yeoksam Branch, 역삼동 강남구 서울특별시 대한민국",
                    "matches": [
                        {
                            "endOffset": 5
                        }
                    ]
                },
                "structuredFormat": {
                    "mainText": {
                        "text": "Pizza Alvolo Yeoksam Branch",
                        "matches": [
                            {
                                "endOffset": 5
                            }
                        ]
                    },
                    "secondaryText": {
                        "text": "역삼동 강남구 서울특별시 대한민국"
                    }
                },
                "types": [
                    "establishment",
                    "restaurant",
                    "food",
                    "point_of_interest"
                ]
            }
        },
        {
            "placePrediction": {
                "place": "places/ChIJY3bSIuujfDUR3g-lmLPUvzA",
                "placeId": "ChIJY3bSIuujfDUR3g-lmLPUvzA",
                "text": {
                    "text": "Pizza Express, 신사동 강남구 서울특별시 대한민국",
                    "matches": [
                        {
                            "endOffset": 5
                        }
                    ]
                },
                "structuredFormat": {
                    "mainText": {
                        "text": "Pizza Express",
                        "matches": [
                            {
                                "endOffset": 5
                            }
                        ]
                    },
                    "secondaryText": {
                        "text": "신사동 강남구 서울특별시 대한민국"
                    }
                },
                "types": [
                    "point_of_interest",
                    "establishment",
                    "food",
                    "restaurant",
                    "pizza_restaurant"
                ]
            }
        },
        {
            "placePrediction": {
                "place": "places/ChIJx1IT9RulfDURFhYY_lHC1f8",
                "placeId": "ChIJx1IT9RulfDURFhYY_lHC1f8",
                "text": {
                    "text": "Pizza Alvolo Daechi Branch, 삼성로 강남구 서울 대한민국",
                    "matches": [
                        {
                            "endOffset": 5
                        }
                    ]
                },
                "structuredFormat": {
                    "mainText": {
                        "text": "Pizza Alvolo Daechi Branch",
                        "matches": [
                            {
                                "endOffset": 5
                            }
                        ]
                    },
                    "secondaryText": {
                        "text": "삼성로 강남구 서울 대한민국"
                    }
                },
                "types": [
                    "point_of_interest",
                    "establishment",
                    "food",
                    "restaurant",
                    "pizza_restaurant"
                ]
            }
        },
        {
            "placePrediction": {
                "place": "places/ChIJndv_YhqkfDURuOcoadr3B_4",
                "placeId": "ChIJndv_YhqkfDURuOcoadr3B_4",
                "text": {
                    "text": "Pizza Alvolo Daechi Branch, 역삼로 강남구 서울특별시 대한민국",
                    "matches": [
                        {
                            "endOffset": 5
                        }
                    ]
                },
                "structuredFormat": {
                    "mainText": {
                        "text": "Pizza Alvolo Daechi Branch",
                        "matches": [
                            {
                                "endOffset": 5
                            }
                        ]
                    },
                    "secondaryText": {
                        "text": "역삼로 강남구 서울특별시 대한민국"
                    }
                },
                "types": [
                    "point_of_interest",
                    "establishment",
                    "food",
                    "restaurant",
                    "pizza_restaurant"
                ]
            }
        },
        {
            "placePrediction": {
                "place": "places/ChIJ65c5JRmjfDUREqqkQub7SBA",
                "placeId": "ChIJ65c5JRmjfDUREqqkQub7SBA",
                "text": {
                    "text": "대한민국 서울특별시 강남구 봉은사로34길 PIZZA PIZZA by StarvingBae",
                    "matches": [
                        {
                            "startOffset": 23,
                            "endOffset": 28
                        }
                    ]
                },
                "structuredFormat": {
                    "mainText": {
                        "text": "PIZZA PIZZA by StarvingBae",
                        "matches": [
                            {
                                "endOffset": 5
                            }
                        ]
                    },
                    "secondaryText": {
                        "text": "대한민국 서울특별시 강남구 봉은사로34길"
                    }
                },
                "types": [
                    "establishment",
                    "restaurant",
                    "food",
                    "point_of_interest"
                ]
            }
        }
    ]
}