Skip to content

Commit ae2a758

Browse files
Hide map attribution (#73)
* Add isAttributionTextVisible to hide map attribution * Add isAttributionTextVisible for iOS * Add dependency_overrides * implement changing attribution text --------- Co-authored-by: Julian Bissekkou <julian.bissekkou@tapped.dev>
1 parent e77476f commit ae2a758

File tree

18 files changed

+137
-32
lines changed

18 files changed

+137
-32
lines changed

arcgis_map_sdk/lib/src/arcgis_location_display.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ class ArcgisLocationDisplay {
3232

3333
ArcgisLocationDisplay({int? mapId}) : _mapId = mapId;
3434

35+
// ignore: use_setters_to_change_properties
3536
void attachToMap(int mapId) => _mapId = mapId;
3637

3738
void deattachFromMap() => _mapId = null;

arcgis_map_sdk/lib/src/arcgis_map_controller.dart

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -320,4 +320,9 @@ class ArcgisMapController {
320320
},
321321
);
322322
}
323+
324+
Future<void> updateIsAttributionTextVisible(bool isAttributionTextVisible) {
325+
return ArcgisMapPlatform.instance
326+
.updateIsAttributionTextVisible(mapId, isAttributionTextVisible);
327+
}
323328
}

arcgis_map_sdk/lib/src/arcgis_map_sdk.dart

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ class ArcgisMap extends StatefulWidget {
4040
this.yMax = 66,
4141
this.onMapCreated,
4242
this.vectorTileLayerUrls,
43+
this.isAttributionTextVisible,
4344
super.key,
4445
}) : assert(
4546
basemap != null ||
@@ -70,6 +71,7 @@ class ArcgisMap extends StatefulWidget {
7071
final double xMax;
7172
final double yMin;
7273
final double yMax;
74+
final bool? isAttributionTextVisible;
7375

7476
/// Adds vector tile layers to the map. You can add more than one.
7577
/// When the [vectorTileLayerUrls] is not empty, the [basemap] field
@@ -110,6 +112,7 @@ class _ArcgisMapState extends State<ArcgisMap> {
110112
yMin: widget.yMin,
111113
yMax: widget.yMax,
112114
vectorTilesUrls: widget.vectorTileLayerUrls,
115+
isAttributionTextVisible: widget.isAttributionTextVisible,
113116
);
114117

115118
Future<void> onPlatformViewCreated(int id) async {
@@ -138,6 +141,12 @@ class _ArcgisMapState extends State<ArcgisMap> {
138141
if ((widget.basemap != null) && oldWidget.basemap != widget.basemap) {
139142
controller.toggleBaseMap(baseMap: widget.basemap!);
140143
}
144+
if (widget.isAttributionTextVisible != null &&
145+
widget.isAttributionTextVisible != oldWidget.isAttributionTextVisible) {
146+
controller.updateIsAttributionTextVisible(
147+
widget.isAttributionTextVisible!,
148+
);
149+
}
141150
_arcgisMapOptions = ArcgisMapOptions(
142151
apiKey: widget.apiKey,
143152
licenseKey: widget.licenseKey,
@@ -161,6 +170,7 @@ class _ArcgisMapState extends State<ArcgisMap> {
161170
yMax: widget.yMax,
162171
vectorTilesUrls: widget.vectorTileLayerUrls,
163172
defaultUiList: widget.defaultUiList,
173+
isAttributionTextVisible: widget.isAttributionTextVisible,
164174
);
165175
}
166176

arcgis_map_sdk_android/android/src/main/kotlin/dev/fluttercommunity/arcgis_map_sdk_android/ArcgisMapView.kt

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,9 @@ internal class ArcgisMapView(
7979

8080
mapView = view.findViewById(R.id.mapView)
8181

82-
map.apply {
82+
mapOptions.isAttributionTextVisible?.let { mapView.isAttributionTextVisible = it }
8383

84+
map.apply {
8485
basemap = if (mapOptions.basemap != null) {
8586
Basemap(mapOptions.basemap)
8687
} else {
@@ -182,11 +183,27 @@ internal class ArcgisMapView(
182183
result
183184
)
184185

186+
"update_is_attribution_text_visible" -> onUpdateIsAttributionTextVisible(
187+
call,
188+
result
189+
)
190+
185191
else -> result.notImplemented()
186192
}
187193
}
188194
}
189195

196+
private fun onUpdateIsAttributionTextVisible(call: MethodCall, result: MethodChannel.Result) {
197+
val isVisible = call.arguments as? Boolean
198+
if (isVisible == null) {
199+
result.error("invalid_argument", "isAttributionTextVisible must be a boolean", null)
200+
return
201+
}
202+
203+
mapView.isAttributionTextVisible = isVisible
204+
result.success(true)
205+
}
206+
190207
private fun onStartLocationDisplayDataSource(result: MethodChannel.Result) {
191208
result.finishWithFuture { mapView.locationDisplay.locationDataSource.startAsync() }
192209
}

arcgis_map_sdk_android/android/src/main/kotlin/dev/fluttercommunity/arcgis_map_sdk_android/model/ArcgisMapOptions.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,5 @@ data class ArcgisMapOptions(
2020
val xMax: Double,
2121
val yMin: Double,
2222
val yMax: Double,
23+
val isAttributionTextVisible: Boolean?,
2324
)

arcgis_map_sdk_ios/ios/Classes/ArcgisMapView.swift

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,10 @@ class ArcgisMapView: NSObject, FlutterPlatformView {
7575
mapView = AGSMapView.init(frame: frame)
7676

7777
super.init()
78+
79+
if let isAttributionTextVisible = mapOptions.isAttributionTextVisible {
80+
mapView.isAttributionTextVisible = isAttributionTextVisible
81+
}
7882

7983
if mapOptions.basemap != nil {
8084
map.basemap = AGSBasemap(style: parseBaseMapStyle(mapOptions.basemap!))
@@ -153,6 +157,7 @@ class ArcgisMapView: NSObject, FlutterPlatformView {
153157
case "location_display_set_use_course_symbol_on_move" : onSetLocationDisplayUseCourseSymbolOnMove(call, result)
154158
case "location_display_update_display_source_position_manually" : onUpdateLocationDisplaySourcePositionManually(call, result)
155159
case "location_display_set_data_source_type" : onSetLocationDisplayDataSourceType(call, result)
160+
case "update_is_attribution_text_visible": onUpdateIsAttributionTextVisible(call, result)
156161
default:
157162
result(FlutterError(code: "Unimplemented", message: "No method matching the name \(call.method)", details: nil))
158163
}
@@ -501,6 +506,16 @@ class ArcgisMapView: NSObject, FlutterPlatformView {
501506
result(FlutterError(code: "invalid_data", message: "Unknown data source type \(String(describing: type))", details: nil))
502507
}
503508
}
509+
510+
private func onUpdateIsAttributionTextVisible(_ call: FlutterMethodCall, _ result: @escaping FlutterResult) {
511+
guard let isVisible = call.arguments as? Bool else {
512+
result(FlutterError(code: "missing_data", message: "Invalid arguments", details: nil))
513+
return
514+
}
515+
516+
mapView.isAttributionTextVisible = isVisible
517+
result(true)
518+
}
504519

505520
private func operationWithSymbol(_ call: FlutterMethodCall, _ result: @escaping FlutterResult, handler: (AGSSymbol) -> Void) {
506521
do {

arcgis_map_sdk_ios/ios/Classes/Models/ArcgisMapOptions.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,5 @@ struct ArcgisMapOptions: Codable {
2323
let xMax: Int
2424
let yMin: Int
2525
let yMax: Int
26+
let isAttributionTextVisible: Bool?
2627
}

arcgis_map_sdk_method_channel/lib/src/method_channel_arcgis_map_plugin.dart

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -304,4 +304,15 @@ class MethodChannelArcgisMapPlugin extends ArcgisMapPlatform {
304304
type,
305305
);
306306
}
307+
308+
@override
309+
Future<void> updateIsAttributionTextVisible(
310+
int mapId,
311+
bool isAttributionTextVisible,
312+
) {
313+
return _methodChannelBuilder(mapId).invokeMethod(
314+
"update_is_attribution_text_visible",
315+
isAttributionTextVisible,
316+
);
317+
}
307318
}

arcgis_map_sdk_method_channel/lib/src/model_extension.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ extension ArcgisMapOptionsJsonExtension on ArcgisMapOptions {
4747
'xMax': xMax,
4848
'yMin': yMin,
4949
'yMax': yMax,
50+
'isAttributionTextVisible': isAttributionTextVisible,
5051
};
5152
}
5253
}

arcgis_map_sdk_platform_interface/lib/src/arcgis_map_sdk_platform_interface.dart

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,4 +277,13 @@ class ArcgisMapPlatform extends PlatformInterface {
277277
'setLocationDisplay() has not been implemented.',
278278
);
279279
}
280+
281+
Future<void> updateIsAttributionTextVisible(
282+
int mapId,
283+
bool isAttributionTextVisible,
284+
) {
285+
throw UnimplementedError(
286+
'updateIsAttributionTextVisible() has not been implemented.',
287+
);
288+
}
280289
}

0 commit comments

Comments
 (0)