From 0890ea8f64f934a8f403a5b5b5d89b39e4717688 Mon Sep 17 00:00:00 2001 From: Alexander Levin Date: Thu, 16 Jan 2025 13:22:39 +0300 Subject: [PATCH 1/3] Implement YandexMap.logoPadding --- .../lite/YandexMapController.java | 13 ++++++++ ios/Classes/lite/YandexMapController.swift | 12 +++++++ lib/src/types/map_padding.dart | 31 +++++++++++++++++++ lib/src/yandex_map.dart | 8 +++++ lib/yandex_mapkit.dart | 1 + 5 files changed, 65 insertions(+) create mode 100644 lib/src/types/map_padding.dart 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 e2a465f8..0093ac30 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 235cde09..41ef0e0f 100755 --- a/ios/Classes/lite/YandexMapController.swift +++ b/ios/Classes/lite/YandexMapController.swift @@ -478,6 +478,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]) } @@ -511,6 +515,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..ce54c430 --- /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, + }); + + /// Defines horizontal padding. + final int horizontal; + + /// Defines 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..8e91d1a4 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; + /// Set 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 813e4ab8..7743bbeb 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'; From 123f8eb814eabaaa5d3457e2c7f19736cc039647 Mon Sep 17 00:00:00 2001 From: khus <107538974+khusvr@users.noreply.github.com> Date: Tue, 1 Apr 2025 12:33:40 +0500 Subject: [PATCH 2/3] Update YandexMapController.swift isM1Simulator --- ios/Classes/lite/YandexMapController.swift | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ios/Classes/lite/YandexMapController.swift b/ios/Classes/lite/YandexMapController.swift index 235cde09..2d08e476 100755 --- a/ios/Classes/lite/YandexMapController.swift +++ b/ios/Classes/lite/YandexMapController.swift @@ -233,7 +233,11 @@ public class YandexMapController: } private static func isM1Simulator() -> Bool { - return (TARGET_IPHONE_SIMULATOR & TARGET_CPU_ARM64) != 0 + #if arch(arm64) && os(iOS) && targetEnvironment(simulator) + return true + #else + return false + #endif } private func hasLocationPermission() -> Bool { From e9bda185420fc886cea03f6f0718aad31d1c2983 Mon Sep 17 00:00:00 2001 From: Alexander Levin Date: Tue, 14 Oct 2025 11:44:49 +0300 Subject: [PATCH 3/3] Update docs --- lib/src/types/map_padding.dart | 4 ++-- lib/src/yandex_map.dart | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/src/types/map_padding.dart b/lib/src/types/map_padding.dart index ce54c430..9ca7dd60 100644 --- a/lib/src/types/map_padding.dart +++ b/lib/src/types/map_padding.dart @@ -7,10 +7,10 @@ class MapPadding extends Equatable { required this.vertical, }); - /// Defines horizontal padding. + /// The horizontal padding. final int horizontal; - /// Defines vertical padding. + /// The vertical padding. final int vertical; @override diff --git a/lib/src/yandex_map.dart b/lib/src/yandex_map.dart index 8e91d1a4..6045311a 100644 --- a/lib/src/yandex_map.dart +++ b/lib/src/yandex_map.dart @@ -80,7 +80,7 @@ class YandexMap extends StatefulWidget { /// Set logo alignment on the map final MapAlignment logoAlignment; - /// Set logo padding on the map + /// The logo padding on the map. final MapPadding? logoPadding; /// Allows to set map focus to a certain rectangle instead of the whole map