kivy-garden.mapview で地理院タイル、兼 kivy-garden.mapview は使ってみると結構いいがもっとバグっている

地理院タイルを使いたいのである。

外歩きのお供には、余計な情報が少なくて標高と地形が読みやすい地理院地図の方がふさわしいのである。

なんだ簡単だ、と:

main.py
 1 # -*- coding: utf-8 -*-
 2 import sys
 3 # please edit next line for your environment.
 4 sys.path.append("/sdcard/kivy-my-site-packages")
 5 
 6 from kivy.lang import Builder
 7 from kivy.app import App
 8 from kivy.properties import StringProperty
 9 from kivy.uix.boxlayout import BoxLayout
10 from kivy.garden.mapview import MapView, MapMarker, MapSource
11 
12 Builder.load_string('''
13 <GardenMapviewDemo>:
14     orientation: 'vertical'
15 
16     detail: detail
17     map: map
18 
19     RstDocument:
20         id: detail
21         text: root.detail_text
22         size_hint: (1, None)
23         height: 300
24 
25     MapView:
26         id: map
27         zoom: 17
28 
29     Button:
30         id: draw_btn
31         text: 'draw'
32         on_press: root.draw()
33         size_hint: (1, None)
34         height: self.texture_size[1] * 2
35 ''')
36 
37 class GardenMapviewDemo(BoxLayout):
38     detail_text = StringProperty()
39 
40     def __init__(self):
41         super(GardenMapviewDemo, self).__init__()
42         self.map.map_source = MapSource(
43             url='http://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png',
44             attribution='http://maps.gsi.go.jp/development/ichiran.html')
45 
46     def draw(self, *args):
47         lat, lon = 35.624720, 139.775467
48         self.map.center_on(lat, lon)
49         self.map.add_marker(
50             MapMarker(lon=lon, lat=lat))
51         self.detail_text = """
52 Mapview Demo
53 ============
54 center_on({}, {})
55 """.format(lat, lon)
56 
57 class GardenMapviewDemoApp(App):
58     def build(self):
59         return GardenMapviewDemo()
60 
61 
62 if __name__ == '__main__':
63     GardenMapviewDemoApp().run()

(地理院タイルの一覧については地理院タイル一覧参照。)

やったー:

と思うだろう? #17 参照。garden/mapview/mapview/downloader.py に一部手を入れれば問題なく使えます、てこと。