From c49719817b59f3328f7c789cbc28a4812de7bbbb Mon Sep 17 00:00:00 2001 From: Yaroslav Barkovskiy Date: Fri, 30 Jun 2023 12:14:25 +0300 Subject: [PATCH] Fix crash on YandexMapController.moveCamera --- .../yandexmapkit/YandexMapController.java | 6 ------ ios/Classes/YandexMapController.swift | 20 +++++++++++++------ 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/android/src/main/java/com/unact/yandexmapkit/YandexMapController.java b/android/src/main/java/com/unact/yandexmapkit/YandexMapController.java index 0ad3343d..d05a8015 100755 --- a/android/src/main/java/com/unact/yandexmapkit/YandexMapController.java +++ b/android/src/main/java/com/unact/yandexmapkit/YandexMapController.java @@ -304,12 +304,6 @@ public Map getPoint(MethodCall call) { public void moveCamera(MethodCall call, MethodChannel.Result result) { Map params = ((Map) call.arguments); - if (mapView.getWidth() == 0 || mapView.getHeight() == 0) { - result.success(false); - - return; - } - move( cameraUpdateToPosition((Map) params.get("cameraUpdate")), ((Map) params.get("animation")), diff --git a/ios/Classes/YandexMapController.swift b/ios/Classes/YandexMapController.swift index 9a12e163..0fdb6a52 100755 --- a/ios/Classes/YandexMapController.swift +++ b/ios/Classes/YandexMapController.swift @@ -197,12 +197,6 @@ public class YandexMapController: public func moveCamera(_ call: FlutterMethodCall, _ result: @escaping FlutterResult) { let params = call.arguments as! [String: Any] - if (mapView.frame.isEmpty) { - result(false) - - return - } - move( cameraPosition: cameraUpdateToPosition(params["cameraUpdate"] as! [String: Any]), animationParams: params["animation"] as? [String: Any], @@ -384,11 +378,25 @@ public class YandexMapController: ) } + private func validCameraPosition(_ cameraPosition: YMKCameraPosition) -> Bool { + return !cameraPosition.zoom.isNaN && + !cameraPosition.tilt.isNaN && + !cameraPosition.azimuth.isNaN && + !cameraPosition.target.latitude.isNaN && + !cameraPosition.target.longitude.isNaN + } + private func move( cameraPosition: YMKCameraPosition, animationParams: [String: Any]?, result: @escaping FlutterResult ) { + if !validCameraPosition(cameraPosition) { + result(false) + + return + } + if animationParams == nil { mapView.mapWindow.map.move(with: cameraPosition) result(true)