-
Notifications
You must be signed in to change notification settings - Fork 0
/
LeafletDemo.sb
94 lines (57 loc) · 2.21 KB
/
LeafletDemo.sb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
EnableExplicit
XIncludeFile "Leaflet.sbi"
Enumeration
#Window
#LeafletGadget
EndEnumeration
Procedure myMarkerEvent(o)
Protected myMarker
! v_mymarker = v_o.target;
Debug "myMarkerEvent"
Debug EventType()
Debug o
Debug "---"
EndProcedure
Procedure myMapEvent(o)
; Debug "myMapEvent"
; Debug EventType()
; Debug o
; Debug "---"
EndProcedure
Procedure JsonParse(String.s, ReplaceQuotes = #True)
If ReplaceQuotes
String = ReplaceString(String, "'", Chr(34))
EndIf
! return JSON.parse(v_string);
EndProcedure
Procedure Main()
OpenWindow(#Window, #PB_Ignore, #PB_Ignore, 500, 500, "LeafletGadgetDemo", #PB_Window_ScreenCentered | #PB_Window_SizeGadget)
ContainerGadget(#LeafletGadget, 0, 0, WindowWidth(#Window), WindowHeight(#Window)) : CloseGadgetList()
Leaflet::BindGadget(#LeafletGadget, JsonParse("{ 'zoom': 10 }"))
Protected myMap = Leaflet::GetMap(#LeafletGadget)
Leaflet::BindItemEvent(myMap, @myMapEvent())
; create a tilelayer
Protected TileLayer = Leaflet::NewTileLayer(Leaflet::#TileLayerType_OpenStreetMap)
; add the layer to the map
Leaflet::AddItem(myMap, TileLayer)
; center to a specific position
Leaflet::PanTo(myMap, Leaflet::LatLng( 51.505, -0.09 ) )
; ------------
Protected myLayerGroup = Leaflet::NewLayerGroup()
; add a layergroup to the map
Leaflet::AddItem(myMap, myLayerGroup)
; let's add a marker...
Protected myMarker
myMarker = Leaflet::NewMarker(Leaflet::LatLng( 51.50, -0.09 ), JsonParse(" { 'draggable': true } "))
Leaflet::SetStringAttribute(myMarker, Leaflet::#Tooltip, "Hello")
Leaflet::SetStringAttribute(myMarker, Leaflet::#Popup, "Marker1-Popup<br />also supports HTML: <i class='fa fa-smile-o fa-3x'></i>")
Leaflet::AddItem(myLayerGroup, myMarker)
Leaflet::BindItemEvent(myMarker, @myMarkerEvent())
; let's add another marker...
myMarker = Leaflet::NewMarker()
Leaflet::SetAttribute(myMarker, Leaflet::#LatLng, Leaflet::LatLng( 51.43, -0.09 ))
Leaflet::AddItem(myLayerGroup, myMarker)
Leaflet::SetStringAttribute(myMarker, Leaflet::#Tooltip, "World")
Leaflet::BindItemEvent(myMarker, @myMarkerEvent())
EndProcedure
Leaflet::Init(@Main())