setVisibleCoordinateBounds обрезает многоугольник при уменьшении - PullRequest
1 голос
/ 21 января 2020

Я разрабатываю приложение iOS, в котором пользователь может нажать на границу свойства, а mapView должен установить видимые границы в представлении для отображения всего свойства, а затем выделить границы свойства. Я использую setVisibleCoordinateBounds с обработчиком завершения, который выделяет границы свойств после завершения анимации.

func updateFieldBoundariesHighlightSourceShape(featureArray : [MGLMultiPolygonFeature]?) {
    if let fieldBoundariesSource = self.mapView.style?.source(withIdentifier: Coordinator.MapBoxIdentifier.fieldBoundaryHighlightSourceLayer.rawValue) as? MGLShapeSource {
        let features = featureArray ?? generateFieldBoundaryFeatureArray(fields: self.fields.map({$0}))
        let newShapeCollectionFeature = MGLShapeCollectionFeature(shapes: features)
        fieldBoundariesSource.shape = newShapeCollectionFeature
    }
}
func setHighlightedField(field: Field)
(...)
    self.mapView.setVisibleCoordinateBounds(fieldFeature.overlayBounds, edgePadding: UIEdgeInsets(top: 65, left: 65, bottom: 65, right: 65), animated: true, completionHandler: {
        // After zooming and positioning field on the screen, add layers to the map's style.
        self.sceneStates.activeField = selectedField
        self.updateFieldBoundariesHighlightSourceShape(featureArray: [fieldFeature])
    })
(...)
}

Это фрагмент того, что у меня есть. Когда масштаб находится на уровне, который показывает все свойство, он увеличивает масштаб и все в порядке. Проблема заключается в том, что при увеличении небольшого свойства и последующем выборе более крупного анимация масштабирования останавливается в какой-то момент (не полностью), а слой подсветки показывает обрезанный многоугольник по сравнению с реальными границами наложения свойства.

У меня есть посмотрел на этот вопрос, но ни один из ответов не устранил проблему. Похоже, MapBox получает только многоугольник / границы из видимой / соседней плитки и обрезает то, что находится за пределами этой плитки.

Я пробовал использовать следующие подходы с одинаковыми результатами: mapView.fly (to: ), cameraThatFitsCoordinateBounds и setVisibleCoordinates (используя координаты точки многоугольника в качестве массива небезопасных указателей)

Вот GIF-файл того, что происходит

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...