forked from platypush/platypush
Added GMaps geocode plugin and geo update event
This commit is contained in:
parent
0878e5a3d1
commit
6c0dc9a4dc
2 changed files with 60 additions and 0 deletions
10
platypush/message/event/geo.py
Normal file
10
platypush/message/event/geo.py
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
from platypush.message.event import Event
|
||||||
|
|
||||||
|
|
||||||
|
class LatLongUpdateEvent(Event):
|
||||||
|
def __init__(self, latitude, longitude, *args, **kwargs):
|
||||||
|
super().__init__(latitude=latitude, longitude=longitude, *args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
# vim:sw=4:ts=4:et:
|
||||||
|
|
50
platypush/plugins/google/maps.py
Normal file
50
platypush/plugins/google/maps.py
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
import json
|
||||||
|
import requests
|
||||||
|
|
||||||
|
from platypush.message.response import Response
|
||||||
|
from platypush.plugins.google import GooglePlugin
|
||||||
|
|
||||||
|
|
||||||
|
class GoogleMapsPlugin(GooglePlugin):
|
||||||
|
scopes = []
|
||||||
|
|
||||||
|
def __init__(self, api_key, *args, **kwargs):
|
||||||
|
super().__init__(scopes=self.scopes, *args, **kwargs)
|
||||||
|
self.api_key = api_key
|
||||||
|
|
||||||
|
|
||||||
|
def get_address_from_latlng(self, latitude, longitude):
|
||||||
|
response = requests.get('https://maps.googleapis.com/maps/api/geocode/json',
|
||||||
|
params = {
|
||||||
|
'latlng': '{},{}'.format(latitude, longitude),
|
||||||
|
'key': self.api_key,
|
||||||
|
}).json()
|
||||||
|
|
||||||
|
address = dict(
|
||||||
|
(t, None) for t in ['street_number', 'street', 'locality', 'country', 'postal_code']
|
||||||
|
)
|
||||||
|
|
||||||
|
address['latitude'] = latitude
|
||||||
|
address['longitude'] = longitude
|
||||||
|
|
||||||
|
if 'results' in response and response['results']:
|
||||||
|
result = response['results'][0]
|
||||||
|
|
||||||
|
for addr_component in result['address_components']:
|
||||||
|
for component_type in addr_component['types']:
|
||||||
|
if component_type == 'street_number':
|
||||||
|
address['street_number'] = addr_component['long_name']
|
||||||
|
elif component_type == 'route':
|
||||||
|
address['street'] = addr_component['long_name']
|
||||||
|
elif component_type == 'locality':
|
||||||
|
address['locality'] = addr_component['long_name']
|
||||||
|
elif component_type == 'country':
|
||||||
|
address['country'] = addr_component['short_name']
|
||||||
|
elif component_type == 'postal_code':
|
||||||
|
address['postal_code'] = addr_component['long_name']
|
||||||
|
|
||||||
|
return Response(output=address)
|
||||||
|
|
||||||
|
|
||||||
|
# vim:sw=4:ts=4:et:
|
||||||
|
|
Loading…
Reference in a new issue