Добавление заголовка в круг карты Google в Swift - PullRequest
0 голосов
/ 02 марта 2020

Я новичок в iOS разработке. Я рисую круг на месте пользователя, и я хочу добавить заголовок к кругу. Я использую следующий код

var cirlce: GMSCircle!

let myPlacelatitude = (locationManager.location?.coordinate.latitude)! let myPlacelongitude = (locationManager.location?.coordinate.longitude)!

let userLocation = GMSCameraPosition.camera(withLatitude:  myPlacelatitude,
                                        longitude: myPlacelongitude,
                                        zoom: 7.5)
mapView.camera = userLocation

let marker = GMSMarker()
marker.position = CLLocationCoordinate2DMake(myPlacelatitude, myPlacelongitude)
marker.title = ""
marker.snippet = ""
marker.map = mapView

let camera = GMSCameraPosition.camera(withLatitude: myPlacelatitude,
                                  longitude: myPlacelongitude, zoom: 6)

cirlce = GMSCircle(position: camera.target, radius: 50000)
cirlce.fillColor = UIColor.green.withAlphaComponent(0.5)
cirlce1.isTappable = true
// the title is not setting to the circle in google map  
cirlce.title = "40 KM"
cirlce.map = mapView

1 Ответ

0 голосов
/ 05 марта 2020

Документация относительно GMSCircle гласит, что некоторые наложения, такие как маркеры, будут отображать заголовок на карте. Я не уверен, верно ли это при использовании GMSCircle.

Однако в качестве обходного пути для вашей проблемы вы можете поместить метку в GMSCircle при использовании GMSMarker с UIlabel из ответа SO в комментарий Mamaessen выше. Вот фрагмент кода, включенный в GMSCircle:

class ViewController: UIViewController {

    override func loadView() {
    var circle: GMSCircle!

        let camera = GMSCameraPosition.camera(withLatitude: -33.86, longitude: 151.20, zoom: 9.0)
        let mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera)
        view = mapView
        circle = GMSCircle(position:camera.target , radius: 50000)
        circle.fillColor = UIColor.green.withAlphaComponent(0.5)
        circle.strokeColor = .blue
        circle.strokeWidth = 2
        circle.title = "THIS IS CIRCLE"
        circle.map = mapView

        let labelMarker = GMSMarker(position: camera.target)
        let label = UILabel()
        label.text = circle.title
        label.textColor = UIColor.red
        label.sizeToFit()
        labelMarker.iconView = label
        labelMarker.map = mapView
      }

    }

Если вы хотите, чтобы он отображался после нажатия на круг, как всплывающее окно при нажатии на круг, вы можете использовать изображение в виде круга и использовать это как значок вашего маркера, а текстовая метка должна быть в заголовке маркера. Вот как я реализую это в коде. Просто обратите внимание, что вы можете заметить строку marker.icon = UIImage(named: "circle"), здесь вы можете указать название изображения, которое вы хотите в качестве маркера. В моем случае я сделал Новый набор изображений в моих Активах и поместил изображение, которое я хочу использовать в качестве своего пользовательского маркера.

lass ViewController: UIViewController {

    override func loadView() {
        let camera = GMSCameraPosition.camera(withLatitude: -33.86, longitude: 151.20, zoom: 9.0)
        let mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera)
        view = mapView

        // Creates a marker in the center of the map.
        let marker = GMSMarker()
        marker.position = CLLocationCoordinate2D(latitude: -33.86, longitude: 151.20)
        marker.title = "Sydney"
        marker.icon = UIImage(named: "circle")
        marker.map = mapView
      }
    }

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

...