Обновить
1
0

Пользователь

Отправить сообщение

Здравствуйте! Не знаю, актуально или нет, но всё это дело лежало + лежит на моём гитхабе

https://github.com/movpushmov/react-native-yandex-mapkit

так-с, я скоро немножко исправлю код в статье, но есть некоторые нюансы:

1, 2) действительно, работает и без этого

3) Поменял методы init у MapView:

override init(frame: CGRect) {
  ymkMapView = YMKMapView(frame: CGRect.zero, vulkanPreferred: isSimulator())
  super.init(frame: frame)
    
  clipsToBounds = true
  addSubview(ymkMapView)
}
   
required init?(coder aDecoder: NSCoder) {
  ymkMapView = YMKMapView(frame: CGRect.zero, vulkanPreferred: isSimulator())
  super.init(coder: aDecoder)
    
  clipsToBounds = true
  addSubview(ymkMapView)
}

4) Исправил на вот такую конструкцию:

if let json = try? JSONSerialization.data(withJSONObject: initialRegion, options: []) {
  if let region: InitialCoords = try? JSONDecoder().decode(InitialCoords.self, from: json) {
    let cameraPoint = YMKPoint(latitude: region.lat, longitude: region.lon)
    let cameraPosition = YMKCameraPosition(target: cameraPoint, zoom: region.zoom, azimuth: region.azimuth, tilt: region.tilt)
    
    ymkMapView.mapWindow.map.move(with: cameraPosition, animationType: YMKAnimation(type: YMKAnimationType.smooth, duration: 0), cameraCallback: nil)
  }
}

Если схема объекта неверная, то настройки просто не применятся.

5) Убрал переменную mapView из MapViewManager, но оставил создание MapView при каждом вызове view(), потому что иначе приложение будет крашится (в рн есть основной поток (UI) и побочный поток, в котором по дефолту делаются любые действия нативного модуля). Получилось как-то так:

@objc(MapViewManager)
class MapViewManager: RCTViewManager {
  override static func requiresMainQueueSetup() -> Bool {
    true
  }
  
  override func view() -> UIView! {
    return MapView()
  }
}

Примеры кода для модуля взял тут

Здравствуйте! Спасибо за замечания, учту! В свифте новичок)

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность

Специализация

Фронтенд разработчик, Разработчик мобильных приложений
Средний
JavaScript
TypeScript
React
React Native