swift - как подогнать GMSMapView (карту Google), чтобы показать все маркеры и предотвратить увеличение - PullRequest
0 голосов
/ 18 ноября 2018

Один из моих коллег работает с картой Google на ios-swift, и она хочет, чтобы в первый раз отображались некоторые маркеры для отображения на карте и подходило для увеличения карты, чтобы отображались только все маркеры. Основная проблема возникает, когда маркеры расположены так близко друг к другу и масштабируют карту до уровня 18 или 19, а это слишком много. Она хочет предотвратить эту ситуацию и в этом случае установить масштаб карты до уровня 15, но после показаПользователь может увеличить масштаб до маркеров, если пользователь хочет.Мы знаем, что можем подогнать карту к маркерам с фрагментом ниже

var bounds = GMSCoordinateBounds()
for location in locationArray
{
    let latitude = location.valueForKey("latitude")
    let longitude = location.valueForKey("longitude")

    let marker = GMSMarker()
    marker.position = CLLocationCoordinate2D(latitude:latitude, longitude:longitude)
    marker.map = self.mapView
    bounds = bounds.includingCoordinate(marker.position)
}
let update = GMSCameraUpdate.fit(bounds, withPadding: 50)
mapView.animate(update)

, но мы не нашли никакого элемента управления масштабированием на fitBounds или animateWithCameraUpdate

1 Ответ

0 голосов
/ 18 ноября 2018

Я нашел простой трюк для решения проблемы. Вы можете использовать setMinZoom перед fit и animate, чтобы предотвратить увеличение, а затем setMinZoom снова, чтобы разрешить увеличение пользователя.

var bounds = GMSCoordinateBounds()
for location in locationArray
{
    let latitude = location.valueForKey("latitude")
    let longitude = location.valueForKey("longitude")

    let marker = GMSMarker()
    marker.position = CLLocationCoordinate2D(latitude:latitude, longitude:longitude)
    marker.map = self.mapView
    bounds = bounds.includingCoordinate(marker.position)
}

mapView.setMinZoom(1, maxZoom: 15)//prevent to over zoom on fit and animate if bounds be too small

let update = GMSCameraUpdate.fit(bounds, withPadding: 50)
mapView.animate(update)

mapView.setMinZoom(1, maxZoom: 20) // allow the user zoom in more than level 15 again
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...