Google Street View Macro
Examples: NodeAmnesia
Howto: NodeMap
Download: GoogleStreetView.py
1 # -*- coding: iso-8859-1 -*-
2 """
3 MoinMoin - StreetView Macro
4 """
5 from MoinMoin import wikiutil
6 import re, time
7 _arg_lat = r'(,\s*lat=(?P<lat>\d+))?'
8 _arg_lng = r'(,\s*lng=(?P<lng>\d+))?'
9 _arg_yaw = r'(,\s*yaw=(?P<yaw>\d+))?'
10 _arg_pitch = r'(,\s*pitch=(?P<pitch>\d+))?'
11 _arg_zoom = r'(,\s*zoom=(?P<zoom>\d+))?'
12 _args_re_pattern = r'^(%s)?(%s)?(%s)?(%s)?(%s)?$' % (_arg_lat, _arg_lng, _arg_yaw, _arg_pitch, _arg_zoom)
13
14 def execute(macro, text):
15 request = macro.request
16 formatter = macro.formatter
17 _ = request.getText
18 args_re = re.compile(_args_re_pattern)
19 gkey = 'ABQIAAAA7rwZfsyEYZknlS0QWmZI4RQUexDMtc4eREioiWSpX_Y7fpoKghQhUCefr4eJwudYofs3YH9eyyZ3_g'
20 gkey2 = 'ABQIAAAA7rwZfsyEYZknlS0QWmZI4RRyEbBFkcIcf1l0xXknIhElMWaAuBQ_2YFGNyOJB1ziI9lSzlpCIilgNw'
21 #gkey = 'ABQIAAAA7rwZfsyEYZknlS0QWmZI4RQb5vo-4Bph0C_4e_e9IEgkaF03hxSX2F6kxStG0StGHPlKCc7vTMZJQQ'
22 #gkey2 = 'ABQIAAAA7rwZfsyEYZknlS0QWmZI4RQb5vo-4Bph0C_4e_e9IEgkaF03hxSX2F6kxStG0StGHPlKCc7vTMZJQQ'
23
24 if text is None:
25 lat, lng, yaw, pitch, zoom =\
45.5495012187901, -122.675131559372, 270, -10, 1
26 else:
27 #args = args_re.match(text)
28 if not text:
29 return ('<p><strong class="error">%s</strong></p>' % _('Invalid StreetView arguments "%s"!')) % (text,)
30 else:
31 macro_args = text.split(",")
32 try:
33 if macro_args[0].strip() != "":
34 lat = macro_args[0]
35 else:
36 lat = '45.5495012187901'
37 except:
38 lat = '45.5495012187901'
39 try:
40 if macro_args[1].strip() != "":
41 lng = macro_args[1]
42 else:
43 lng = '-122.675131559372'
44 except:
45 lng = '-122.675131559372'
46 try:
47 if macro_args[2].strip() != "":
48 yaw = macro_args[2]
49 else:
50 yaw = '0'
51 except:
52 yaw = '0'
53 try:
54 if macro_args[3]:
55 pitch = macro_args[3]
56 else:
57 pitch = '0'
58 except:
59 pitch = '0'
60 try:
61 if macro_args[4].strip() != "":
62 zoom = macro_args[4]
63 else:
64 zoom = '0'
65 except:
66 zoom = '0'
67 html = '''
68 <script type="text/javascript">
69 if( (window.location.href).indexOf("www.") == -1 ) {
70 writeScript("%s");
71 } else {
72 writeScript("%s");}
73 function writeScript(key) {var ret='<'+'script src="http://maps.google.com/maps?file=api&v=2&key='+key+'"'+'type="text/javascript"><'+'/script>';document.write(ret);}
74 </script>
75
76 <script type="text/javascript">
77 function addLoadEvent(func) {
78 var oldonload = window.onload;
79 if (typeof window.onload != 'function') {
80 window.onload = func;
81 }
82 else {
83 window.onload = function() {
84 if (oldonload) {
85 oldonload();
86 }
87 func();
88 }
89 }
90 }
91 addLoadEvent(function() {
92 var rand = Math.floor(Math.random()*101)
93 document.getElementById("pano").id="pano" + rand;
94 var myPano = new GStreetviewPanorama(document.getElementById("pano" + rand));
95 coords = new GLatLng(%s,%s);
96 myPOV = {yaw:%s,pitch:%s,zoom:%s};
97 myPano.setLocationAndPOV(coords, myPOV);
98 })
99 </script>
100 <div name="pano" id="pano" style="width: 500px; height: 400px;">
101 </div>
102 ''' % (gkey, gkey2, lat, lng, yaw, pitch, zoom)
103 return html
