Хорошо, после поиска немного больше о проблеме, я могу твердо сказать, что это происходит, когда вращение применено, и тогда infoWindowAnchor
не является правильным.
Итак, что вам нужно сделать, это вычислить infoWindowAnchor
на основе угла следующим образом
let marker = GMSMarker()
marker.title = "D M Th 13-6573"
marker.icon = UIImage(named: "item_car_slow")
marker.rotation = CLLocationDegrees(heading)
marker.map = self.googleMap
marker.infoWindowAnchor = getInfoWindowAnchorFor(heading)
self.googleMap.selectedMarker = marker
Следующая функция вычислит правильную опорную точку.
func getInfoWindowAnchorFor(_ angle: Double) -> CGPoint {
let x = sin(-angle * Double.pi / 180) * 0.5 + 0.5
let y = -(cos(-angle * Double.pi / 180) * 0.5 - 0.5)
return CGPoint(x: x, y: y)
}
Обратите внимание, что приведенный выше лог c взят из этого ответа этот ответ на старый вопрос для android SDK. Для получения подробной информации о логи c и расчете, пожалуйста, посетите оригинальный ответ.
Это должно решить вашу проблему.
Счастливое кодирование?