Я использую mapbox-iOS-SDK 3.2.3
и не может найти никаких свойств или smth, подобных этому, для управления границами карты. Мне нужно ограничить видимую область для пользователя. Возможно ли это в текущей версии SDK?Как ограничить границы карты в картотеке MGLMapView?
ответ
В текущей версии Mapbox нет ничего, что бы выглядело так, как будто оно будет делать то, что вы хотите. Вы могли быть в состоянии получить что-то вроде него
- Реализации
mapViewRegionIsChanging:
илиmapView:regionDidChangeAnimated:
в картографическом делегате - В этих методах, проверьте текущий регион. Если он находится за пределами желаемой области, сбросьте вид карты на что-то внутри желаемого региона. То есть, как только представление карты начнет перемещаться за пределы региона, верните его обратно.
Это, вероятно, будет работать, но это может сделать представление «заикание», если пользователь пытается прокрутить за пределы целевой области. Я не знаю, что делает ваше приложение, но может быть целесообразно рассмотреть (а), действительно ли это необходимо, и (б) может ли быть лучший способ избежать любой проблемы, которую вы ожидаете, чем ограничивать прокрутку карты.
Хорошо, как я вижу, проблема шире и точно такая же, как в MapKit , Хорошо, я попытаюсь использовать методы делегата для решения этой проблемы. К сожалению, это одно из основных требований к каркасной структуре наших клиентов. Спасибо за вашу помощь! – ShurupuS
Это ракурс с открытым исходным кодом, поэтому вы всегда можете посмотреть на добавление собственных методов делегата (возможно, добавить метод 'toMapViewRegionChange') или другие средства для получения того, что вы хотите. –
Я принял идею от @Tom Harrington и внедрил делегата с целью увидеть, сколько заикания или оживления анимации произошло при сохранении пользователя в пределах известной привязки Mapbox. Я поддержал его ответ, но также хотел поделиться этим примером.
Вот Swift делегат, который заполняет делегат для mapViewRegionIsChanging
- основной целью является, чтобы проверить, если опыт до сих пор радуют клиента (да)
- Может ли делегат правильно держать пользователя в пределах границ, не вызывая делегата слишком часто? (По-прежнему должно быть проверено)
- Использует Balboa Park, как квадратный MapBox
MGLCoordinateBounds
- только проверяет, является ли свитки клиент слишком далеко север
- Концепция слишком далеко проверяется определенным допуском,
epsilon
Проверка вне границ с четырех сторон должны быть простыми
func mapViewRegionIsChanging (mapView: MGLMapView) { let viewBounds = mapView.visibleCoordinateBounds // Set the map's bounds to Balboa Park, San Diego let boundsBalboaPark = MGLCoordinateBounds( sw: CLLocationCoordinate2D(latitude: 32.71942, longitude: -117.15914), ne: CLLocationCoordinate2D(latitude: 32.74093, longitude: -117.13374)) let deltaNorth = viewBounds.ne.latitude - boundsBalboaPark.ne.latitude let epsilon = 0.025 // Magic number for tolerance of how far 'north' we allow (in degrees); Q.E.D meters if(deltaNorth > epsilon) { mapView.setVisibleCoordinateBounds(boundsBalboaPark, animated: true) } }
Эта анимация показывает перемещение mapView слишком далеко к северу от парка Бальбоа. Заикание, которое вы видите, реально, но приемлемо.
Я бы предположил, что вместо того, чтобы прыгать обратно в исходное местоположение центра, вы могли бы вернуться обратно достаточно, чтобы оставаться в пределах желаемых границ. Это значительно снизит скачок. –
Согласен. И еще одна хорошая идея - оживить минимальный масштаб просмотра, поэтому клиент может получить опыт переориентации себя. – RobLabs
- 1. Как ограничить границы карты в RMMapView и уровне масштабирования
- 2. RMMapView или MGLMapView
- 3. как получить границы карты?
- 4. Как ограничить границы ParamArray в VB.NET?
- 5. Как получить границы Карты Google?
- 6. Попадая собственные границы карты
- 7. Как ограничить видимую область карты?
- 8. Google Maps API V3: ограничить границы карт
- 9. Как сделать границы карты отзывчивыми в листовке?
- 10. Как заблокировать границы карты в определенном месте?
- 11. Масштаб карты, чтобы содержать данные границы карты
- 12. Как ограничить размер границы на графике matplotlib?
- 13. Жест жест не будет касаться Mapbox MGLMapView
- 14. Как нарисовать круг на MapBox MGLMapView?
- 15. Как ограничить границы при построении шейп-файла в R
- 16. Нанесение повернутого полюсного проектора в картотеке
- 17. Пользовательская аннотация на MGLMapView (MapBox) в ios
- 18. Mapbox белые границы вокруг карты
- 19. Алгоритм помощи: Проходя границы карты
- 20. Как нарисовать границы района карты Google?
- 21. Как получить границы статической карты google?
- 22. Невозможно получить границы карты Google
- 23. Как получить границы текущего вида карты?
- 24. Как рассчитать границы карты без javascript
- 25. Изменить цвет границы карты в Cartopy
- 26. Как ограничить рассеянность в пределах границы разброса? - Surface SDK
- 27. Ограничить границы ввода текста на iOS
- 28. Проблема с отображением файла Shapefile в картотеке
- 29. Как преобразовать радиус в метрах в пиксели в картотеке?
- 30. Как добавить цвет толстый границы верхней части карты в Android
Я не уверен, я понимаю, что вы пытаетесь сделать. –
Я хочу установить границы для карты, например, для отображения только одного города. Таким образом, пользователь может масштабировать, панорамировать и делать обычные вещи с помощью этой карты, но только в ограниченной области. – ShurupuS
Теперь у Mapbox есть встроенное решение: https://www.mapbox.com/ios-sdk/examples/constraining-gestures/ – Stonetip