Pull to refresh
1
2
Subscribers
Send message

она написана на react-native, никакого webview там нет

ну V8 брать запарно, надо самому ивентлуп дописывать будет, а вот условный Bun тут зашёл бы хорошо кмк

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

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()
  }
}

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

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

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity

Specialization

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