Skip to content
This repository was archived by the owner on Dec 24, 2025. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions src/flet_map/tile_layer.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ def __init__(
max_zoom: OptionalNumber = None,
min_zoom: OptionalNumber = None,
error_image_src: Optional[str] = None,
headers: Optional[Dict[str, str]] = None,
evict_error_tile_strategy: Optional[MapTileLayerEvictErrorTileStrategy] = None,
on_image_error: OptionalControlEventCallable = None,
#
Expand Down Expand Up @@ -77,6 +78,7 @@ def __init__(
self.error_image_src = error_image_src
self.enable_retina_mode = enable_retina_mode
self.on_image_error = on_image_error
self.headers = headers
self.tile_bounds = tile_bounds
self.evict_error_tile_strategy = evict_error_tile_strategy
self.subdomains = subdomains
Expand All @@ -94,6 +96,8 @@ def before_update(self):
self._set_attr_json("subdomains", self.__subdomains)
if isinstance(self.__additional_options, dict):
self._set_attr_json("additionalOptions", self.__additional_options)
if isinstance(self.__headers, dict):
self._set_attr_json("headers", self.__headers)

# url_template
@property
Expand Down Expand Up @@ -131,6 +135,14 @@ def additional_options(self) -> Optional[Dict[str, str]]:
def additional_options(self, value: Optional[Dict[str, str]]):
self.__additional_options = value

@property
def headers(self) -> Optional[Dict[str, str]]:
return self.__headers

@headers.setter
def headers(self, value: Optional[Dict[str, str]]):
self.__headers = value

# tile_bounds
@property
def tile_bounds(self) -> Optional[MapLatitudeLongitudeBounds]:
Expand Down
3 changes: 3 additions & 0 deletions src/flutter/flet_map/lib/src/map.dart
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ class _MapControlState extends State<MapControl>
curve: parseCurve(args["curve"], defaultAnimationCurve),
duration: durationFromString(
args["duration"], defaultAnimationDuration));

case "zoom_to":
var zoom = parseDouble(args["zoom"]);
if (zoom != null) {
Expand All @@ -102,6 +103,7 @@ class _MapControlState extends State<MapControl>
duration: durationFromString(
args["duration"], defaultAnimationDuration));
}

case "move_to":
var zoom = parseDouble(args["zoom"]);
var lat = parseDouble(args["lat"]);
Expand All @@ -117,6 +119,7 @@ class _MapControlState extends State<MapControl>
dest: (lat != null && long != null) ? LatLng(lat, long) : null,
offset: (ox != null && oy != null) ? Offset(ox, oy) : Offset.zero,
);

case "center_on":
var zoom = parseDouble(args["zoom"]);
var lat = parseDouble(args["lat"]);
Expand Down
19 changes: 18 additions & 1 deletion src/flutter/flet_map/lib/src/tile_layer.dart
Original file line number Diff line number Diff line change
Expand Up @@ -40,15 +40,32 @@ class TileLayerControl extends StatelessWidget with FletStoreMixin {
errorImage = NetworkImage(assetSrc.path);
}
}

var subdomains = control.attrString("subdomains");
var additionalOptions = control.attrString("additionalOptions");
var headersStr = control.attrString("headers");

Map<String, String> headers = {};
if (headersStr != null) {
try {
final decodedHeaders = jsonDecode(headersStr) as Map;
headers = decodedHeaders.map((k, v) => MapEntry(k.toString(), v.toString()));
debugPrint("TileLayerControl headers: $headers");
} catch (e) {
debugPrint("Error parsing headers: $e");
}
}


Widget tile = TileLayer(
urlTemplate: control.attrString("urlTemplate", "")!,
fallbackUrl: control.attrString("fallbackUrl", "")!,
subdomains: subdomains != null
? jsonDecode(subdomains).cast<String>()
: ['a', 'b', 'c'],
tileProvider: CancellableNetworkTileProvider(),
tileProvider: CancellableNetworkTileProvider(
headers: headers,
),
tileDisplay: const TileDisplay.fadeIn(),
tileSize: control.attrDouble("tileSize", 256)!,
minNativeZoom: control.attrInt("minNativeZoom", 0)!,
Expand Down