챗봇 만들기 - 주변영화관 검색하기

이동근·2021년 4월 12일
0

Project

목록 보기
17/20

이제 현재 위치에 따른 주변을 검색해 가장 가까운영화관이 어디인지 사용자에게 전달을 해주고 었다.
(영화관은 CGV로 한정했다.)

현재 나의 위치 검색

내 주변의 영화관을 검색하기 위해서는 우선 내가 현재 지금 어디인지를 알아야 했다. googling을 통해 찾아보니, geolocation 이라는 api가 있었다.

전체 코드

Geolocation_API

사용자의 현재 위치를 가져오는 api로서, 지도에 사용자의 위치를 표시하는 등 다양한 용도로 사용할 수 있습니다.

geolocation_api사용을 위해 url을 가져왔고 마지막에 google map flatform에서 받은 api키를 받아서 url을 완성시켜 주었다.

data = {'considerIP' : true} 이 부분은 goelocation development docunment 를 보면 나와 있다.

현재사용자의 위치를 찾는 여러개의 방법이 있었는데 그 중에 'considerIP'를 선택했다.
WIFI 및 기지국 신호를 사용할 수 없는 경우 IP위치 정보로 대체할지 여부를 지정 합니다.

현재 사용하는 WIFI를 및 기지국의 신호에 대한 위치를 잡고, 아니면 내가 사용하는 IP의 위치를 선택한다는 내용이다.

단점이라고 한다면, 이게 기지국을 통해서 나의 위치를 반환을 해주게 되기때문에 나의 정확한 위치를 구현하지 못했고, 내가 있는 근처에 대략적으로 좌표가 찍힌 다는 점이다.

IP, WIFI의 위치를 통해 받겠다고 선언을 한 후에는 API를 사용하기 위해 나의 위치를 API에 전송을 해야하기 때문에 get이 아닌 POST이다.

requestpost=requests.POST(geolocationurl, data=json)
request_data = request.json()

이렇게 location 해서 경도와 위도를 얻을 수 있다.

추출한 내가 있는 장소에 대해서 얻은 경도와 위도를 가지고 나의 주변에 있는 cgv를 검색 할 수가 있는 api가 있는데 PLACE_API를 사용해서 얻을 수 있었다.

PLACE_API

따로 PlaceAPI와 Geolocation_api를 사용하는데 있어서 두 개의 함수로 나누지 않았다.
추출해낸 정보를 가지고 PLACE_API 사용을 위한 변수로 바로 사용했다.

place_url
Place_url ="https://maps.googleapis.com/maps/api/place/nearbysearch/json?location={},{}&radius=20000&type=movie_theater&keyword=CGV&key={}".format(lat,lng,config.GOOGLE_API_KEY)

다른것 필요없이 json 뒤에 있는 parameter를 보게 되면

location

  • 위치에는 경도와 위도가

radius

  • 미터단위의 반경을 통해 검색 범위를 만들어 줍니다.

type

  • 어떤 종류를 검색을 할것인가

keyword

  • 이름, 유형, 주소, 고객 리뷰 및 기타 제 3 자 콘텐츠를 포함하되 이에 국한되지 않고 Google이이 장소에 대해 색인을 생성 한 모든 콘텐츠와 비교할 용어입니다.

이 외에도 검색을 위한 다양한 파라미터가 있다.

https://developers.google.com/maps/documentation/places/web-service/search?hl=en

데이터를 받아보게 되면

이런식으로 주변의 데이터가 들어오게 된다.

여기서 내가 가져오길 원하는 데이터를 정제를 하면 된다.

profile
하루하루 1cm 자라는 개발자

0개의 댓글