У меня есть этот маленький вопрос о маркерах. Что я должен сделать, чтобы позволить пользователю разместить свой собственный маркер в моем приложении на основе Google Maps?Как разрешить пользователю размещать маркеры на карте?
ответ
Существует несколько способов сделать это. Один из них - добавить маркер, когда пользователь долго нажимает на карту. Для обнаружения длинных нажатий, реализовать этот метод делегата:
func mapView(_ mapView: GMSMapView, didLongPressAt coordinate: CLLocationCoordinate2D) {
let marker = GMSMarker(position: coordinate)
// marker.isDraggable = true
// marker.appearAnimation = kGMSMarkerAnimationPop
marker.map = mapView
// marker.icon = GMSMarker.markerImage(with: UIColor.blue)
}
В закомментированных линиях не являются обязательными, поскольку они только настройками пользовательских атрибутов маркеров. Есть еще много возможностей, которые вы можете настроить.
Кроме того, если вы еще не сделали этого, добавьте GMSMapViewDelegate
к представлению класса контроллера Декларация:
class YourViewController: UIViewController, GMSMapViewDelegate {
и назначить self
к delegate
собственности:
let camera = GMSCameraPosition.camera(withLatitude: 0, longitude: 0, zoom: 3)
let mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera)
mapView.isMyLocationEnabled = true
view = mapView
mapView.delegate = self // add this line!
Кроме того, вы могут добавлять маркеры, когда происходят другие события. Например, вы можете добавить маркер, когда пользователь нажимает на UIBarBUttonItem
или UIButton
. Все зависит от тебя! Но процесс добавления кнопки в основном эти две линии:
let marker = GMSMarker(position: coordinate)
marker.map = mapView
// mapView is the map that you want to add the marker to. If you are doing this outside a delegate method, use self.view
Вы можете также рассмотреть вопрос о добавлении маркеров в коллекцию, так что вы можете изменить их позже.
Если вы считаете, что мой ответ отвечает на ваш вопрос, пожалуйста, подумайте о том, чтобы принять его, нажав на эту галочку! @lust – Sweeper