SWIFT - проблема ротации MKMapRect

Я пытаюсь изменить положение моего MKMapView, чтобы отобразить текущую выбранную аннотацию внизу представления. Проблема, с которой я сталкиваюсь, заключается в том, что на карте есть поворот. Он будет только вращаться обратно в положение по умолчанию, затем останавливаться и не перемещать mapView в правильное новое положение. Если у mapView нет вращения, он работает нормально. Вроде сложно объяснить.

вот код, который используется для изменения положения mapView

            //pinCoord are the coordinates from the selected annotation
            let mapRect = myMap.visibleMapRect
            let point = MKMapPointForCoordinate(pinCoord)

            let nPx = point.x - mapRect.size.width*0.5
            let nPy = point.y - mapRect.size.height*0.95

            let newMapRect = MKMapRectMake(nPx, nPy, mapRect.size.width, mapRect.size.height)

            myMap.setVisibleMapRect(newMapRect, animated: true)

Вот предыдущий код, который я пробовал, который отлично работал при любом повороте. Но были проблемы, когда mapView имел какой-либо наклон к нему. Поэтому я решил использовать приведенный выше код (хотя это будет проще).

    let pinCGPoint = myMap.convertCoordinate(pinCoord, toPointToView: self.view)
    let currentCenterPoint = myMap.convertCoordinate(myMap.centerCoordinate, toPointToView: self.view)

    //create new y center point
    let point2y = view.frame.height - pinCGPoint.y
    let nYp = currentCenterPoint.y - point2y 

    //create new x center point
    let c2pX = currentCenterPoint.x - pinCGPoint.x
    let pointX = view.frame.width*0.5 - pinCGPoint.x

    let nXp = currentCenterPoint.x - pointX

    let newCenter = CGPointMake(nXp, nYp)
    let coord2 = myMap.convertPoint(newCenter, toCoordinateFromView: self.view)

    myMap.setCenterCoordinate(coord2, animated: true)

Любая помощь будет отличной, спасибо.

0 ответов

Другие вопросы по тегам