globalforest/src/searchpopupmenu.py

49 lines
1.7 KiB
Python
Raw Normal View History

from kivymd.uix.dialog2 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'
def __init__(self):
super().__init__()
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)