globalforest/searchpopupmenu.py

49 lines
1.7 KiB
Python
Raw Permalink Normal View History

2020-10-14 16:38:48 -04:00
from kivymd.uix.dialog import MDInputDialog
from urllib import parse
from kivy.network.urlrequest import UrlRequest
from kivy.app import App
import certifi
from kivy.clock import Clock
class SearchPopupMenu(MDInputDialog):
title = 'Search by Address'
text_button_ok = 'Search'
2020-10-14 16:38:48 -04:00
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.size_hint = [.9, .3]
self.events_callback = self.callback
def open(self):
super().open()
Clock.schedule_once(self.set_field_focus, 0.5)
def callback(self, *args):
address = self.text_field.text
self.geocode_get_lat_lon(address)
def geocode_get_lat_lon(self, address):
with open('app_id.txt', 'r') as f:
app_id = f.read()
with open('app_code.txt', 'r') as f:
app_code = f.read()
address = parse.quote(address)
url = "https://geocoder.api.here.com/6.2/geocode.json?searchtext=%s&app_id=%s&app_code=%s"%(address, app_id, app_code)
UrlRequest(url, on_success=self.success, on_failure=self.failure, on_error=self.error, ca_file=certifi.where())
def success(self, urlrequest, result):
print("Success")
latitude = result['Response']['View'][0]['Result'][0]['Location']['NavigationPosition'][0]['Latitude']
longitude = result['Response']['View'][0]['Result'][0]['Location']['NavigationPosition'][0]['Longitude']
app = App.get_running_app()
mapview = app.root.ids.mapview
mapview.center_on(latitude, longitude)
def error(self, urlrequest, result):
print("error")
print(result)
def failure(self, urlrequest, result):
print("failure")
print(result)