1
+ import json
2
+
3
+ from htmltools import h1
4
+ from shinywidgets import reactive_read , render_widget
5
+
1
6
import openlayers as ol
2
- from shiny .express import render , ui , input
3
7
from shiny import reactive
4
-
5
- from shinywidgets import render_widget , reactive_read
8
+ from shiny .express import input , render , ui
6
9
7
10
city_centers = {
8
11
"London" : (51.5074 , 0.1278 ),
9
12
"Paris" : (48.8566 , 2.3522 ),
10
- "New York" : (40.7128 , - 74.0060 )
13
+ "New York" : (40.7128 , - 74.0060 ),
11
14
}
12
15
16
+ h1 ("python-openlayers" )
17
+
13
18
ui .input_select ("center" , "Center" , choices = list (city_centers .keys ()))
14
19
20
+
15
21
@render_widget
16
22
def ol_map ():
17
23
lat , lon = city_centers ["London" ]
18
- m = ol .MapWidget ()
19
- m .set_center (lon , lat )
20
- m .set_zoom (8 )
24
+ m = ol .MapWidget (
25
+ ol .View (center = (lon , lat ), zoom = 8 ),
26
+ controls = [ol .OverviewMapControl (collapsed = False )],
27
+ )
21
28
return m
22
29
23
30
24
31
@render .code
25
32
def info ():
26
33
view_state = reactive_read (ol_map .widget , "view_state" )
27
- return str (view_state )
34
+ return json .dumps (view_state , indent = 2 )
35
+
28
36
29
37
@reactive .effect
30
38
def _ ():
31
39
lat , lon = city_centers [input .center ()]
32
- ol_map .widget .set_center (lon , lat )
40
+ ol_map .widget .set_center (lon , lat )
0 commit comments