diff --git a/android/src/main/java/com/unact/yandexmapkit/lite/YandexMapController.java b/android/src/main/java/com/unact/yandexmapkit/lite/YandexMapController.java index 37b4b70d..d843421c 100755 --- a/android/src/main/java/com/unact/yandexmapkit/lite/YandexMapController.java +++ b/android/src/main/java/com/unact/yandexmapkit/lite/YandexMapController.java @@ -25,6 +25,7 @@ import com.yandex.mapkit.layers.GeoObjectTapListener; import com.yandex.mapkit.layers.ObjectEvent; import com.yandex.mapkit.logo.Alignment; +import com.yandex.mapkit.logo.Padding; import com.yandex.mapkit.logo.HorizontalAlignment; import com.yandex.mapkit.logo.VerticalAlignment; import com.yandex.mapkit.map.CameraPosition; @@ -593,6 +594,10 @@ private void applyMapOptions(Map params) { applyAlignLogo((Map) params.get("logoAlignment")); } + if (params.get("logoPadding") != null) { + applyLogoPadding((Map) params.get("logoPadding")); + } + if (params.containsKey("focusRect")) { applyFocusRect((Map) params.get("focusRect")); } @@ -630,6 +635,14 @@ private void applyAlignLogo(Map params) { mapView.getMapWindow().getMap().getLogo().setAlignment(logoPosition); } + private void applyLogoPadding(Map params) { + Padding logoPadding = new Padding( + (Integer) params.get("horizontal"), + (Integer) params.get("vertical") + ); + mapView.getMapWindow().getMap().getLogo().setPadding(logoPadding); + } + private void applyFocusRect(Map params) { if (params == null) { mapView.getMapWindow().setFocusRect(null); diff --git a/ios/Classes/lite/YandexMapController.swift b/ios/Classes/lite/YandexMapController.swift index 0cdedf41..bea2f1b6 100755 --- a/ios/Classes/lite/YandexMapController.swift +++ b/ios/Classes/lite/YandexMapController.swift @@ -482,6 +482,10 @@ public class YandexMapController: applyAlignLogo(logoAlignment) } + if let logoPadding = params["logoPadding"] as? [String: Any] { + applyLogoPadding(logoPadding) + } + if params.keys.contains("focusRect") { applyFocusRect(params["focusRect"] as? [String: Any]) } @@ -515,6 +519,14 @@ public class YandexMapController: mapView.mapWindow.map.logo.setAlignmentWith(logoPosition) } + private func applyLogoPadding(_ params: [String: Any]) { + let logoPadding = YMKLogoPadding( + horizontalPadding: (params["horizontal"] as! NSNumber).uintValue, + verticalPadding: (params["vertical"] as! NSNumber).uintValue + ) + mapView.mapWindow.map.logo.setPaddingWith(logoPadding) + } + private func applyFocusRect(_ params: [String: Any]?) { if (params == nil) { mapView.mapWindow.focusRect = nil diff --git a/lib/src/types/map_padding.dart b/lib/src/types/map_padding.dart new file mode 100644 index 00000000..9ca7dd60 --- /dev/null +++ b/lib/src/types/map_padding.dart @@ -0,0 +1,31 @@ +part of '../../yandex_mapkit.dart'; + +/// Map logo padding. +class MapPadding extends Equatable { + const MapPadding({ + required this.horizontal, + required this.vertical, + }); + + /// The horizontal padding. + final int horizontal; + + /// The vertical padding. + final int vertical; + + @override + List get props => [ + horizontal, + vertical, + ]; + + @override + bool get stringify => true; + + Map toJson() { + return { + 'horizontal': horizontal, + 'vertical': vertical, + }; + } +} diff --git a/lib/src/yandex_map.dart b/lib/src/yandex_map.dart index e068d8e9..6045311a 100644 --- a/lib/src/yandex_map.dart +++ b/lib/src/yandex_map.dart @@ -27,6 +27,7 @@ class YandexMap extends StatefulWidget { this.fastTapEnabled = false, this.mode2DEnabled = false, this.logoAlignment = const MapAlignment(horizontal: HorizontalAlignment.right, vertical: VerticalAlignment.bottom), + this.logoPadding, this.focusRect, this.onMapCreated, this.onMapTap, @@ -79,6 +80,9 @@ class YandexMap extends StatefulWidget { /// Set logo alignment on the map final MapAlignment logoAlignment; + /// The logo padding on the map. + final MapPadding? logoPadding; + /// Allows to set map focus to a certain rectangle instead of the whole map /// For more info refer to https://yandex.com/dev/maps/mapkit/doc/ios-ref/full/Classes/YMKMapWindow.html#focusRect final ScreenRect? focusRect; @@ -279,6 +283,7 @@ class _YandexMapOptions { fastTapEnabled = map.fastTapEnabled, mode2DEnabled = map.mode2DEnabled, logoAlignment = map.logoAlignment, + logoPadding = map.logoPadding, focusRect = map.focusRect, mapType = map.mapType, poiLimit = map.poiLimit, @@ -300,6 +305,8 @@ class _YandexMapOptions { final MapAlignment logoAlignment; + final MapPadding? logoPadding; + final ScreenRect? focusRect; final MapType mapType; @@ -318,6 +325,7 @@ class _YandexMapOptions { 'fastTapEnabled': fastTapEnabled, 'mode2DEnabled': mode2DEnabled, 'logoAlignment': logoAlignment.toJson(), + 'logoPadding': logoPadding?.toJson(), 'focusRect': focusRect?.toJson(), 'mapType': mapType.index, 'poiLimit': poiLimit, diff --git a/lib/yandex_mapkit.dart b/lib/yandex_mapkit.dart index 7cef57f6..ad907e31 100644 --- a/lib/yandex_mapkit.dart +++ b/lib/yandex_mapkit.dart @@ -37,6 +37,7 @@ part 'src/types/driving/driving_section_metadata.dart'; part 'src/types/driving/driving_session.dart'; part 'src/types/localized_value.dart'; part 'src/types/map_alignment.dart'; +part 'src/types/map_padding.dart'; part 'src/types/map_animation.dart'; part 'src/types/map_objects/circle_map_object.dart'; part 'src/types/map_objects/clusterized_placemark_collection.dart';