Google Maps для iOS, swift - Как показать всю полилинию между маркерами?

Я пытаюсь разместить ломаную линию в виде карты Google. Полилиния была приобретена с помощью Overview_polyline в API направлений Google Maps.

Хотите знать, как я смогу преобразовать закодированную полилинию во что-то, с чем можно работать. Мне нужно подогнать ломаную линию в виде карты. Все, что я обнаружил, это установил границы, чтобы показать все маркеры, но не продемонстрировал всю полилинию.

func fitAllMarkers()
{

    var bounds = GMSCoordinateBounds()

    for marker in markers
    {
        bounds = bounds.includingCoordinate(marker.position)
    }

    googleMapView.animateWithCameraUpdate(GMSCameraUpdate.fitBounds(bounds))

}

3 ответа

Решение

В Swift 2.0 Google Maps, чтобы ваш вид карты соответствовал полилинии маршрута, который вы рисуете:

let path: GMSPath = GMSPath(fromEncodedPath: route)!
    routePolyline = GMSPolyline(path: path)
    routePolyline.map = mapView


    var bounds = GMSCoordinateBounds()

    for index in 1...path.count() {
        bounds = bounds.includingCoordinate(path.coordinateAtIndex(index))
    }

    mapView.animateWithCameraUpdate(GMSCameraUpdate.fitBounds(bounds))

Хотя на вопрос есть принятый ответ,

Еще один момент, который не обсуждался.

GMSPolyLine имеет свойство ".path", которое можно использовать для привязки карты к полной полилинии.

mapView.animate(with: GMSCameraUpdate.fit(GMSCoordinateBounds(path: self.polyLineObject.path!), withPadding: 10))
  • mapView является экземпляром GMSMapView ()
  • polyLineObject является экземпляром GMSPolyLine()

При таком подходе он точно сделает свою работу.

Потому что это сделано для меня..

Надеюсь, поможет..

**For Swift 3.0 Google Maps, to make your map view fit the polyline of the route you are drawing:** 


func fitAllMarkers(_path: GMSPath) {
        var bounds = GMSCoordinateBounds()
        for index in 1..._path.count() {
            bounds = bounds.includingCoordinate(_path.coordinate(at: index))
        }
        mapView.animate(with: GMSCameraUpdate.fit(bounds))
    }

Вы можете увеличить карту в соответствии с маршрутом или линией, отображаемой в виде карты. Так что ваш маршрут отображается в границах mapView.

let bounds = GMSCoordinateBounds(path:path! )
self.mapView!.animate(with: GMSCameraUpdate.fit(bounds, withPadding: 50.0))

Здесь путь - это GMSPath маршрута, а mapView - это GmsMapView.

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