11import 'dart:async' ;
22import 'dart:math' ;
33
4- import 'package:collection/collection.dart' show MapEquality, ListEquality ;
4+ import 'package:collection/collection.dart' ;
55import 'package:flutter/foundation.dart' ;
66import 'package:flutter/material.dart' ;
77import 'package:flutter_map/flutter_map.dart' ;
@@ -12,11 +12,9 @@ import 'package:flutter_map/src/layer/tile_layer/tile_image_manager.dart';
1212import 'package:flutter_map/src/layer/tile_layer/tile_range.dart' ;
1313import 'package:flutter_map/src/layer/tile_layer/tile_range_calculator.dart' ;
1414import 'package:flutter_map/src/layer/tile_layer/tile_scale_calculator.dart' ;
15- import 'package:flutter_map/src/layer/tile_layer/unblock_osm.dart' ;
1615import 'package:flutter_map/src/misc/extensions.dart' ;
1716import 'package:http/http.dart' ;
1817import 'package:http/retry.dart' ;
19- import 'package:logger/logger.dart' ;
2018
2119part 'retina_mode.dart' ;
2220part 'tile_error_evict_callback.dart' ;
@@ -322,48 +320,44 @@ class TileLayer extends StatefulWidget {
322320
323321class _TileLayerState extends State <TileLayer > with TickerProviderStateMixin {
324322 static const _openStreetMapUrls = {'tile.openstreetmap.org' , 'tile.osm.org' };
325- bool get _isOpenStreetMapUrl =>
326- widget.urlTemplate != null &&
327- _openStreetMapUrls.any (widget.urlTemplate! .contains);
328-
329- static const _unblockOSMEnvVar =
330- String .fromEnvironment ('flutter.flutter_map.unblockOSM' );
331- static bool get _shouldUnblockOSM => const ListEquality <int >()
332- .equals (_unblockOSMEnvVar.codeUnits, osmUnblockingString);
333-
334- late final hasSetGoodUserAgent =
335- widget.tileProvider.headers['User-Agent' ] != 'flutter_map (unknown)' ;
336- late final _blockOpenStreetMapUrl =
337- false /*&&
338- _isOpenStreetMapUrl &&
339- !hasSetGoodUserAgent &&
340- !kDebugMode &&
341- !_shouldUnblockOSM*/
342- ;
323+
343324 void _warnOpenStreetMapUrl () {
344- if (_isOpenStreetMapUrl && kDebugMode && ! _shouldUnblockOSM) {
345- final uaWarning = hasSetGoodUserAgent
346- ? ''
347- : '''
348-
349- When using the OSM tile servers, you must set an HTTP User-Agent which
350- adequately identifies your application to the servers.
351- Set `TileLayer.userAgentPackageName` appropriately, or set a UA header manually.
352- OSMF (the tile server operators), and/or flutter_map in future, may block usage
353- if inadequately identified.
354- ''' ;
355-
356- final warning = '''\x 1B[1m\x 1B[3mflutter_map\x 1B[0m$uaWarning
357- flutter_map wants to help keep map data available for everyone.
358- We use the OpenStreetMap public tile servers in our code examples & demo app,
359- but they are NOT free to use by everyone. Please review whether OSM's tile
360- servers are appropriate and the best choice for your app.
361- See:
362- * https://operations.osmfoundation.org/policies/tiles (OSM Tile Usage Policy)
363- * https://docs.fleaflet.dev/osm-warn for more information about this warning''' ;
364-
365- Logger (printer: PrettyPrinter (methodCount: 0 ))
366- .log (hasSetGoodUserAgent ? Level .info : Level .warning, warning);
325+ if (! kDebugMode) return ;
326+
327+ final isOSMUrl = widget.urlTemplate != null &&
328+ _openStreetMapUrls.any (widget.urlTemplate! .contains);
329+
330+ if (! isOSMUrl) return ;
331+
332+ final hasSetGoodUserAgent =
333+ widget.tileProvider.headers['User-Agent' ] != 'flutter_map (unknown)' ;
334+
335+ final hasSubdomainPart = widget.urlTemplate! .contains ('{s}' );
336+
337+ // ignore: avoid_print
338+ print (''' \x 1B[1m[flutter_map]\x 1B[0m
339+ We want to help keep OpenStreetMap available for everyone. Our examples
340+ and demo app use the public tile servers, but they are NOT free to use by
341+ everyone! Please review whether the OpenStreetMap tile servers are suitable
342+ for your project.
343+ See:
344+ * https://operations.osmfoundation.org/policies/tiles (OSM Tile Usage Policy)
345+ * https://docs.fleaflet.dev/osm-warn for more information about this warning''' );
346+
347+ if (! hasSetGoodUserAgent) {
348+ // ignore: avoid_print
349+ print ('''\x 1B[0;33m ---
350+ \x 1B[0;33mIt looks like you haven't set an adequate HTTP User-Agent, for example through
351+ \x 1B[0;33mthe `TileLayer.userAgentPackageName` argument. This may lead to your project
352+ \x 1B[0;33mbeing blocked.''' );
353+ }
354+
355+ if (hasSubdomainPart) {
356+ // ignore: avoid_print
357+ print ('''\x 1B[0;33m ---
358+ \x 1B[0;33mAvoid using subdomains with the OpenStreetMap public tile server. Support may
359+ \x 1B[0;33mbecome slow or be removed in future.
360+ \x 1B[0;33mSee https://github.com/openstreetmap/operations/issues/737 for more info.''' );
367361 }
368362 }
369363
@@ -396,19 +390,6 @@ See:
396390 _resetSub = widget.reset? .listen (_resetStreamHandler);
397391 _tileRangeCalculator = TileRangeCalculator (tileDimension: _tileDimension);
398392 _warnOpenStreetMapUrl ();
399-
400- // These log strong hints in debug mode, which is more visible to users than
401- // just documentation - they should only be used where there is a specific
402- // and large risk of the user doing something wrong.
403- if (kDebugMode &&
404- widget.urlTemplate != null &&
405- widget.urlTemplate! .contains ('{s}.tile.openstreetmap.org' )) {
406- Logger (printer: PrettyPrinter (methodCount: 0 )).w (
407- '\x 1B[1m\x 1B[3mflutter_map\x 1B[0m\n Avoid using subdomains with OSM\' s tile '
408- 'server. Support may be become slow or be removed in future.\n See '
409- 'https://github.com/openstreetmap/operations/issues/737 for more info.' ,
410- );
411- }
412393 }
413394
414395 // This is called on every map movement so we should avoid expensive logic
@@ -543,10 +524,6 @@ See:
543524
544525 if (_outsideZoomLimits (map.zoom.round ())) return const SizedBox .shrink ();
545526
546- if (_blockOpenStreetMapUrl) {
547- return const SizedBox .shrink ();
548- }
549-
550527 final tileZoom = _clampToNativeZoom (map.zoom);
551528 final tileBoundsAtZoom = _tileBounds.atZoom (tileZoom);
552529 final visibleTileRange = _tileRangeCalculator.calculate (
@@ -709,10 +686,6 @@ See:
709686 DiscreteTileRange tileLoadRange, {
710687 required bool pruneAfterLoad,
711688 }) {
712- if (_isOpenStreetMapUrl && _blockOpenStreetMapUrl) {
713- return ;
714- }
715-
716689 final tileZoom = tileLoadRange.zoom;
717690 final expandedTileLoadRange = tileLoadRange.expand (widget.panBuffer);
718691
0 commit comments