flet-map 0.0.1__py3-none-any.whl → 0.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of flet-map might be problematic. Click here for more details.

Files changed (39) hide show
  1. flet_map/__init__.py +30 -1
  2. flet_map/circle_layer.py +156 -0
  3. flet_map/map.py +674 -0
  4. flet_map/map_layer.py +26 -0
  5. flet_map/marker_layer.py +183 -0
  6. flet_map/polygon_layer.py +262 -0
  7. flet_map/polyline_layer.py +292 -0
  8. flet_map/rich_attribution.py +141 -0
  9. flet_map/simple_attribution.py +86 -0
  10. flet_map/text_source_attribution.py +87 -0
  11. flet_map/tile_layer.py +278 -0
  12. flet_map-0.1.0.dist-info/METADATA +168 -0
  13. flet_map-0.1.0.dist-info/RECORD +34 -0
  14. {flet_map-0.0.1.dist-info → flet_map-0.1.0.dist-info}/WHEEL +2 -1
  15. flet_map-0.1.0.dist-info/top_level.txt +2 -0
  16. flutter/flet_map/CHANGELOG.md +3 -0
  17. flutter/flet_map/LICENSE +201 -0
  18. flutter/flet_map/README.md +3 -0
  19. flutter/flet_map/analysis_options.yaml +4 -0
  20. flutter/flet_map/lib/flet_map.dart +3 -0
  21. flutter/flet_map/lib/src/circle_layer.dart +43 -0
  22. flutter/flet_map/lib/src/create_control.dart +70 -0
  23. flutter/flet_map/lib/src/map.dart +140 -0
  24. flutter/flet_map/lib/src/marker_layer.dart +50 -0
  25. flutter/flet_map/lib/src/polygon_layer.dart +68 -0
  26. flutter/flet_map/lib/src/polyline_layer.dart +80 -0
  27. flutter/flet_map/lib/src/rich_attribution.dart +61 -0
  28. flutter/flet_map/lib/src/simple_attribution.dart +37 -0
  29. flutter/flet_map/lib/src/text_source_attribution.dart +29 -0
  30. flutter/flet_map/lib/src/tile_layer.dart +80 -0
  31. flutter/flet_map/lib/src/utils/attribution_alignment.dart +12 -0
  32. flutter/flet_map/lib/src/utils/map.dart +280 -0
  33. flutter/flet_map/pubspec.lock +831 -0
  34. flutter/flet_map/pubspec.yaml +21 -0
  35. .DS_Store +0 -0
  36. flet_map/.DS_Store +0 -0
  37. flet_map-0.0.1.dist-info/.DS_Store +0 -0
  38. flet_map-0.0.1.dist-info/METADATA +0 -14
  39. flet_map-0.0.1.dist-info/RECORD +0 -7
flet_map/tile_layer.py ADDED
@@ -0,0 +1,278 @@
1
+ from enum import Enum
2
+ from typing import Any, Dict, List, Optional
3
+
4
+ from flet.core.control import OptionalNumber
5
+ from flet_map.map import MapLatitudeLongitudeBounds
6
+ from flet_map.map_layer import MapLayer
7
+ from flet.core.ref import Ref
8
+ from flet.core.types import OptionalControlEventCallable
9
+
10
+
11
+ class MapTileLayerEvictErrorTileStrategy(Enum):
12
+ DISPOSE = "dispose"
13
+ NOT_VISIBLE = "notVisible"
14
+ NOT_VISIBLE_RESPECT_MARGIN = "notVisibleRespectMargin"
15
+
16
+
17
+ class TileLayer(MapLayer):
18
+ """
19
+ The Map's main layer.
20
+ Displays square raster images in a continuous grid, sourced from the provided utl_template.
21
+
22
+ -----
23
+
24
+ Online docs: https://flet.dev/docs/controls/maptilelayer
25
+ """
26
+
27
+ def __init__(
28
+ self,
29
+ url_template: str,
30
+ fallback_url: Optional[str] = None,
31
+ subdomains: Optional[List[str]] = None,
32
+ tile_bounds: Optional[MapLatitudeLongitudeBounds] = None,
33
+ tile_size: OptionalNumber = None,
34
+ min_native_zoom: Optional[int] = None,
35
+ max_native_zoom: Optional[int] = None,
36
+ zoom_reverse: Optional[bool] = None,
37
+ zoom_offset: OptionalNumber = None,
38
+ keep_buffer: Optional[int] = None,
39
+ pan_buffer: Optional[int] = None,
40
+ enable_tms: Optional[bool] = None,
41
+ keep_alive: Optional[bool] = None,
42
+ enable_retina_mode: Optional[bool] = None,
43
+ additional_options: Optional[Dict[str, str]] = None,
44
+ max_zoom: OptionalNumber = None,
45
+ min_zoom: OptionalNumber = None,
46
+ error_image_src: Optional[str] = None,
47
+ evict_error_tile_strategy: Optional[MapTileLayerEvictErrorTileStrategy] = None,
48
+ on_image_error: OptionalControlEventCallable = None,
49
+ #
50
+ # MapLayer
51
+ #
52
+ ref: Optional[Ref] = None,
53
+ visible: Optional[bool] = None,
54
+ data: Any = None,
55
+ ):
56
+
57
+ MapLayer.__init__(
58
+ self,
59
+ ref=ref,
60
+ visible=visible,
61
+ data=data,
62
+ )
63
+
64
+ self.url_template = url_template
65
+ self.fallback_url = fallback_url
66
+ self.tile_size = tile_size
67
+ self.min_native_zoom = min_native_zoom
68
+ self.max_native_zoom = max_native_zoom
69
+ self.zoom_reverse = zoom_reverse
70
+ self.zoom_offset = zoom_offset
71
+ self.keep_buffer = keep_buffer
72
+ self.pan_buffer = pan_buffer
73
+ self.enable_tms = enable_tms
74
+ self.keep_alive = keep_alive
75
+ self.max_zoom = max_zoom
76
+ self.min_zoom = min_zoom
77
+ self.error_image_src = error_image_src
78
+ self.enable_retina_mode = enable_retina_mode
79
+ self.on_image_error = on_image_error
80
+ self.tile_bounds = tile_bounds
81
+ self.evict_error_tile_strategy = evict_error_tile_strategy
82
+ self.subdomains = subdomains
83
+ self.additional_options = additional_options
84
+
85
+ def _get_control_name(self):
86
+ return "map_tile_layer"
87
+
88
+ def before_update(self):
89
+ super().before_update()
90
+ assert self.url_template, "url_template is required"
91
+ if isinstance(self.__tile_bounds, MapLatitudeLongitudeBounds):
92
+ self._set_attr_json("tileBounds", self.__tile_bounds)
93
+ if isinstance(self.__subdomains, list):
94
+ self._set_attr_json("subdomains", self.__subdomains)
95
+ if isinstance(self.__additional_options, dict):
96
+ self._set_attr_json("additionalOptions", self.__additional_options)
97
+
98
+ # url_template
99
+ @property
100
+ def url_template(self) -> str:
101
+ return self._get_attr("urlTemplate")
102
+
103
+ @url_template.setter
104
+ def url_template(self, value: str):
105
+ self._set_attr("urlTemplate", value)
106
+
107
+ # fallback_url
108
+ @property
109
+ def fallback_url(self) -> Optional[str]:
110
+ return self._get_attr("fallbackUrl")
111
+
112
+ @fallback_url.setter
113
+ def fallback_url(self, value: Optional[str]):
114
+ self._set_attr("fallbackUrl", value)
115
+
116
+ # subdomains
117
+ @property
118
+ def subdomains(self) -> Optional[List[str]]:
119
+ return self.__subdomains
120
+
121
+ @subdomains.setter
122
+ def subdomains(self, value: Optional[List[str]]):
123
+ self.__subdomains = value
124
+
125
+ # additional_options
126
+ @property
127
+ def additional_options(self) -> Optional[Dict[str, str]]:
128
+ return self.__additional_options
129
+
130
+ @additional_options.setter
131
+ def additional_options(self, value: Optional[Dict[str, str]]):
132
+ self.__additional_options = value
133
+
134
+ # tile_bounds
135
+ @property
136
+ def tile_bounds(self) -> Optional[MapLatitudeLongitudeBounds]:
137
+ return self.__tile_bounds
138
+
139
+ @tile_bounds.setter
140
+ def tile_bounds(self, value: Optional[MapLatitudeLongitudeBounds]):
141
+ self.__tile_bounds = value
142
+
143
+ # tile_size
144
+ @property
145
+ def tile_size(self) -> float:
146
+ return self._get_attr("tileSize", data_type="float", def_value=256.0)
147
+
148
+ @tile_size.setter
149
+ def tile_size(self, value: OptionalNumber):
150
+ assert value is None or value >= 0, "tile_size cannot be negative"
151
+ self._set_attr("tileSize", value)
152
+
153
+ # min_native_zoom
154
+ @property
155
+ def min_native_zoom(self) -> int:
156
+ return self._get_attr("minNativeZoom", data_type="int", def_value=0.0)
157
+
158
+ @min_native_zoom.setter
159
+ def min_native_zoom(self, value: Optional[int]):
160
+ assert value is None or value >= 0, "min_native_zoom cannot be negative"
161
+ self._set_attr("minNativeZoom", value)
162
+
163
+ # max_native_zoom
164
+ @property
165
+ def max_native_zoom(self) -> int:
166
+ return self._get_attr("maxNativeZoom", data_type="int", def_value=19)
167
+
168
+ @max_native_zoom.setter
169
+ def max_native_zoom(self, value: Optional[int]):
170
+ assert value is None or value >= 0, "max_native_zoom cannot be negative"
171
+ self._set_attr("maxNativeZoom", value)
172
+
173
+ # zoom_reverse
174
+ @property
175
+ def zoom_reverse(self) -> bool:
176
+ return self._get_attr("zoomReverse", data_type="bool", def_value=False)
177
+
178
+ @zoom_reverse.setter
179
+ def zoom_reverse(self, value: Optional[bool]):
180
+ self._set_attr("zoomReverse", value)
181
+
182
+ # zoom_offset
183
+ @property
184
+ def zoom_offset(self) -> float:
185
+ return self._get_attr("zoomOffset", data_type="float", def_value=0.0)
186
+
187
+ @zoom_offset.setter
188
+ def zoom_offset(self, value: OptionalNumber):
189
+ assert value is None or value >= 0, "zoom_offset cannot be negative"
190
+ self._set_attr("zoomOffset", value)
191
+
192
+ # keep_buffer
193
+ @property
194
+ def keep_buffer(self) -> int:
195
+ return self._get_attr("keepBuffer", data_type="int", def_value=2)
196
+
197
+ @keep_buffer.setter
198
+ def keep_buffer(self, value: Optional[int]):
199
+ self._set_attr("keepBuffer", value)
200
+
201
+ # pan_buffer
202
+ @property
203
+ def pan_buffer(self) -> int:
204
+ return self._get_attr("panBuffer", data_type="int", def_value=2)
205
+
206
+ @pan_buffer.setter
207
+ def pan_buffer(self, value: Optional[int]):
208
+ self._set_attr("panBuffer", value)
209
+
210
+ # enable_tms
211
+ @property
212
+ def enable_tms(self) -> bool:
213
+ return self._get_attr("enableTms", data_type="bool", def_value=False)
214
+
215
+ @enable_tms.setter
216
+ def enable_tms(self, value: Optional[bool]):
217
+ self._set_attr("enableTms", value)
218
+
219
+ # enable_retina_mode
220
+ @property
221
+ def enable_retina_mode(self) -> bool:
222
+ return self._get_attr("enableRetinaMode", data_type="bool", def_value=False)
223
+
224
+ @enable_retina_mode.setter
225
+ def enable_retina_mode(self, value: Optional[bool]):
226
+ self._set_attr("enableRetinaMode", value)
227
+
228
+ # max_zoom
229
+ @property
230
+ def max_zoom(self) -> float:
231
+ return self._get_attr("maxZoom", data_type="float", def_value=float("inf"))
232
+
233
+ @max_zoom.setter
234
+ def max_zoom(self, value: OptionalNumber):
235
+ assert value is None or value >= 0, "max_zoom cannot be negative"
236
+ self._set_attr("maxZoom", value)
237
+
238
+ # min_zoom
239
+ @property
240
+ def min_zoom(self) -> float:
241
+ return self._get_attr("minZoom", data_type="float", def_value=0.0)
242
+
243
+ @min_zoom.setter
244
+ def min_zoom(self, value: OptionalNumber):
245
+ assert value is None or value >= 0, "min_zoom cannot be negative"
246
+ self._set_attr("minZoom", value)
247
+
248
+ # error_image_src
249
+ @property
250
+ def error_image_src(self) -> Optional[str]:
251
+ return self._get_attr("errorImageSrc")
252
+
253
+ @error_image_src.setter
254
+ def error_image_src(self, value: Optional[str]):
255
+ self._set_attr("errorImageSrc", value)
256
+
257
+ # evict_error_tile_strategy
258
+ @property
259
+ def evict_error_tile_strategy(self) -> Optional[MapTileLayerEvictErrorTileStrategy]:
260
+ return self.__evict_error_tile_strategy
261
+
262
+ @evict_error_tile_strategy.setter
263
+ def evict_error_tile_strategy(
264
+ self, value: Optional[MapTileLayerEvictErrorTileStrategy]
265
+ ):
266
+ self.__evict_error_tile_strategy = value
267
+ self._set_enum_attr(
268
+ "evictErrorTileStrategy", value, MapTileLayerEvictErrorTileStrategy
269
+ )
270
+
271
+ # on_image_error
272
+ @property
273
+ def on_image_error(self) -> OptionalControlEventCallable:
274
+ return self._get_event_handler("imageError")
275
+
276
+ @on_image_error.setter
277
+ def on_image_error(self, handler: OptionalControlEventCallable):
278
+ self._add_event_handler("imageError", handler)
@@ -0,0 +1,168 @@
1
+ Metadata-Version: 2.2
2
+ Name: flet-map
3
+ Version: 0.1.0
4
+ Summary: Map control for Flet
5
+ Author-email: Flet contributors <hello@flet.dev>
6
+ Project-URL: Homepage, https://flet.dev
7
+ Project-URL: Documentation, https://flet.dev/docs/controls/map
8
+ Project-URL: Repository, https://github.com/flet-dev/flet-map
9
+ Project-URL: Issues, https://github.com/flet-dev/flet-map/issues
10
+ Classifier: License :: OSI Approved :: Apache Software License
11
+ Requires-Python: >=3.8
12
+ Description-Content-Type: text/markdown
13
+ Requires-Dist: flet>=0.25.2
14
+
15
+ # Map control for Flet
16
+
17
+ `Map` control for Flet.
18
+
19
+ ## Usage
20
+
21
+ Add `flet-map` as dependency (`pyproject.toml` or `requirements.txt`) to your Flet project.
22
+
23
+ ## Example
24
+
25
+ ```py
26
+
27
+ import random
28
+ import flet as ft
29
+ import flet_map as map
30
+
31
+
32
+ def main(page: ft.Page):
33
+ marker_layer_ref = ft.Ref[map.MarkerLayer]()
34
+ circle_layer_ref = ft.Ref[map.CircleLayer]()
35
+
36
+ def handle_tap(e: map.MapTapEvent):
37
+ print(e)
38
+ if e.name == "tap":
39
+ marker_layer_ref.current.markers.append(
40
+ map.Marker(
41
+ content=ft.Icon(
42
+ ft.Icons.LOCATION_ON, color=ft.cupertino_colors.DESTRUCTIVE_RED
43
+ ),
44
+ coordinates=e.coordinates,
45
+ )
46
+ )
47
+ elif e.name == "secondary_tap":
48
+ circle_layer_ref.current.circles.append(
49
+ map.CircleMarker(
50
+ radius=random.randint(5, 10),
51
+ coordinates=e.coordinates,
52
+ color=ft.Colors.random_color(),
53
+ border_color=ft.Colors.random_color(),
54
+ border_stroke_width=4,
55
+ )
56
+ )
57
+ page.update()
58
+
59
+ def handle_event(e: map.MapEvent):
60
+ print(e)
61
+
62
+ page.add(
63
+ ft.Text("Click anywhere to add a Marker, right-click to add a CircleMarker."),
64
+ map.Map(
65
+ expand=True,
66
+ initial_center=map.MapLatitudeLongitude(15, 10),
67
+ initial_zoom=4.2,
68
+ interaction_configuration=map.MapInteractionConfiguration(
69
+ flags=map.MapInteractiveFlag.ALL
70
+ ),
71
+ on_init=lambda e: print(f"Initialized Map"),
72
+ on_tap=handle_tap,
73
+ on_secondary_tap=handle_tap,
74
+ on_long_press=handle_tap,
75
+ on_event=lambda e: print(e),
76
+ layers=[
77
+ map.TileLayer(
78
+ url_template="https://tile.openstreetmap.org/{z}/{x}/{y}.png",
79
+ on_image_error=lambda e: print("TileLayer Error"),
80
+ ),
81
+ map.RichAttribution(
82
+ attributions=[
83
+ map.TextSourceAttribution(
84
+ text="OpenStreetMap Contributors",
85
+ on_click=lambda e: e.page.launch_url(
86
+ "https://openstreetmap.org/copyright"
87
+ ),
88
+ ),
89
+ map.TextSourceAttribution(
90
+ text="Flet",
91
+ on_click=lambda e: e.page.launch_url("https://flet.dev"),
92
+ ),
93
+ ]
94
+ ),
95
+ map.SimpleAttribution(
96
+ text="Flet",
97
+ alignment=ft.alignment.top_right,
98
+ on_click=lambda e: print("Clicked SimpleAttribution"),
99
+ ),
100
+ map.MarkerLayer(
101
+ ref=marker_layer_ref,
102
+ markers=[
103
+ map.Marker(
104
+ content=ft.Icon(ft.Icons.LOCATION_ON),
105
+ coordinates=map.MapLatitudeLongitude(30, 15),
106
+ ),
107
+ map.Marker(
108
+ content=ft.Icon(ft.Icons.LOCATION_ON),
109
+ coordinates=map.MapLatitudeLongitude(10, 10),
110
+ ),
111
+ map.Marker(
112
+ content=ft.Icon(ft.Icons.LOCATION_ON),
113
+ coordinates=map.MapLatitudeLongitude(25, 45),
114
+ ),
115
+ ],
116
+ ),
117
+ map.CircleLayer(
118
+ ref=circle_layer_ref,
119
+ circles=[
120
+ map.CircleMarker(
121
+ radius=10,
122
+ coordinates=map.MapLatitudeLongitude(16, 24),
123
+ color=ft.Colors.RED,
124
+ border_color=ft.Colors.BLUE,
125
+ border_stroke_width=4,
126
+ ),
127
+ ],
128
+ ),
129
+ map.PolygonLayer(
130
+ polygons=[
131
+ map.PolygonMarker(
132
+ label="Popular Touristic Area",
133
+ label_text_style=ft.TextStyle(
134
+ color=ft.Colors.BLACK,
135
+ size=15,
136
+ weight=ft.FontWeight.BOLD,
137
+ ),
138
+ color=ft.Colors.with_opacity(0.3, ft.Colors.BLUE),
139
+ coordinates=[
140
+ map.MapLatitudeLongitude(10, 10),
141
+ map.MapLatitudeLongitude(30, 15),
142
+ map.MapLatitudeLongitude(25, 45),
143
+ ],
144
+ ),
145
+ ],
146
+ ),
147
+ map.PolylineLayer(
148
+ polylines=[
149
+ map.PolylineMarker(
150
+ border_stroke_width=3,
151
+ border_color=ft.Colors.RED,
152
+ gradient_colors=[ft.Colors.BLACK, ft.Colors.BLACK],
153
+ color=ft.Colors.with_opacity(0.6, ft.Colors.GREEN),
154
+ coordinates=[
155
+ map.MapLatitudeLongitude(10, 10),
156
+ map.MapLatitudeLongitude(30, 15),
157
+ map.MapLatitudeLongitude(25, 45),
158
+ ],
159
+ ),
160
+ ],
161
+ ),
162
+ ],
163
+ ),
164
+ )
165
+
166
+
167
+ ft.app(main)
168
+ ```
@@ -0,0 +1,34 @@
1
+ flet_map/__init__.py,sha256=xmGk-KtjPbkpMoj3kR40zmzTQF4mGwtq_lyC0M8groQ,927
2
+ flet_map/circle_layer.py,sha256=TBydZRXPvRvdkIutUMux8hQQwVzeb-yYjVjkByb68os,4111
3
+ flet_map/map.py,sha256=MkRKtESgSgo2DWjCQAiwOWt7ywR6L_NF3CNwEeidEfw,23150
4
+ flet_map/map_layer.py,sha256=9Uwn3vzuDevpBjH9gH8YIA0xnqog7u1rLiZEpVPI_wM,490
5
+ flet_map/marker_layer.py,sha256=PXNPTxmpzFVu3-ltPjsaPBbTLX8EwVOXX9slv_S9Dpc,4576
6
+ flet_map/polygon_layer.py,sha256=ovxQX_qzg6CJ2hfZy2VWmz68Z1eoiohduPs63ZxjIUo,7877
7
+ flet_map/polyline_layer.py,sha256=eCTxA64Of-Q8V69XetHdHlIQl9aDQz-QiYYurTUQxp0,8560
8
+ flet_map/rich_attribution.py,sha256=1-GqK75MiDN0EU4YUCqFLvcXFNmpoulHwVF4ai-0hv8,4575
9
+ flet_map/simple_attribution.py,sha256=31b6WEwSOZWDO5WtEpYcV8mI-vaXR5DPqbOc_tDCNLA,2149
10
+ flet_map/text_source_attribution.py,sha256=BPqT2Ph8kISnBnfzs5v_i-uKEP5JZfxwe-wZ7qEdBRE,2340
11
+ flet_map/tile_layer.py,sha256=7pNIvrKbzggry7oUXWYNt5xySybEJNe3e2FUAS2Q42s,9113
12
+ flutter/flet_map/CHANGELOG.md,sha256=66sWepPaeTc9_lzcYIGU55AlxSU5Z1XVtknXpzd_-p8,40
13
+ flutter/flet_map/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
14
+ flutter/flet_map/README.md,sha256=ABBaDRlbz2HalnmHeD_Y8KyT1JCh4Axkl1cqv4vFZqI,56
15
+ flutter/flet_map/analysis_options.yaml,sha256=32kjGAc-zF87inWaH5M46yGZWQDTwrwfvNLHeAocfG4,154
16
+ flutter/flet_map/pubspec.lock,sha256=U5N7CBWNVdN5z-4SMc1YjF6LJKSj77OK87SQ_Jj1CyA,24554
17
+ flutter/flet_map/pubspec.yaml,sha256=8YTcl_p4ZoQmKhpY4fiFOPKsnag9LnPhl3k_eOKARtU,493
18
+ flutter/flet_map/lib/flet_map.dart,sha256=PdaEb2aoyBwp978wal3-9I0docgp0eUzcAub3kw7MUs,91
19
+ flutter/flet_map/lib/src/circle_layer.dart,sha256=HYfop2lkeZnxb4tXtUWps1FMrQWiuHkQRP8QEinh3pI,1482
20
+ flutter/flet_map/lib/src/create_control.dart,sha256=JjtTXKyYAxbrA3Ys0P6OmC9wtplFr-iezzr3N3gTtaQ,1814
21
+ flutter/flet_map/lib/src/map.dart,sha256=EUOWt0LDRXodGl0B-fjTUbKt48JCAp2ruWuFSkHjw8o,5152
22
+ flutter/flet_map/lib/src/marker_layer.dart,sha256=KYk9Sdo8cV8objkIjmwnurx0ByKlCrAoHy09h_i_k2k,1731
23
+ flutter/flet_map/lib/src/polygon_layer.dart,sha256=iuYUwu2qNKT-duzdxbYtffAal9PS6wDOfYALLuknAOE,2667
24
+ flutter/flet_map/lib/src/polyline_layer.dart,sha256=pDBoScHBhOpRjSOddW09OYLDP09V211T4UEQS17hTgM,3122
25
+ flutter/flet_map/lib/src/rich_attribution.dart,sha256=jFmjrvSZjem5aXFP22SXmtwckQYkYoDc-b2M441W54U,2226
26
+ flutter/flet_map/lib/src/simple_attribution.dart,sha256=9Ac2pL7MaIDlZ-e5SrHHRDwxgx9D3YZwRh-5buLMXew,1141
27
+ flutter/flet_map/lib/src/text_source_attribution.dart,sha256=fwqZ_T9dvRZdBgaMGSNJkjtdLAodKR3VNSgw9guL06g,865
28
+ flutter/flet_map/lib/src/tile_layer.dart,sha256=UqvnaCr4QquUs5KnuBB7la085cCfGWvjaqjX6E2qIO0,3092
29
+ flutter/flet_map/lib/src/utils/attribution_alignment.dart,sha256=xuj188pAUG2mfcBVNbyUSZGVz-dlJua-bnu5fdojMQQ,382
30
+ flutter/flet_map/lib/src/utils/map.dart,sha256=c8ynRMHtl6GGEgXJYL0Vwk8LYdKW-3MsW0ybz6LMnCw,9205
31
+ flet_map-0.1.0.dist-info/METADATA,sha256=AtoHA3SzxxSj_vEzn1KZp6EOxuUS8o5gXObJTNqsGGQ,6245
32
+ flet_map-0.1.0.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
33
+ flet_map-0.1.0.dist-info/top_level.txt,sha256=HjaN5dGb0-hj6ciqBzy1aqisp22P0mbT98qC8rvoEjg,17
34
+ flet_map-0.1.0.dist-info/RECORD,,
@@ -1,4 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 1.9.0
2
+ Generator: setuptools (75.8.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ flet_map
2
+ flutter
@@ -0,0 +1,3 @@
1
+ # 0.1.0
2
+
3
+ Initial release of the package.