Пользовательское окно InfoWindow для карт Google - невозможно установить положение y - PullRequest
0 голосов
/ 13 июня 2019

enter image description here Я работаю в Google maps для своего проекта. Мне нужно показать изображение с заголовком в InfoWindow. Для этого у меня есть новый XIB. Теперь все работает нормально, за исключением положения окна InfoWindow. Я не могу правильно установить ось Y InfoWindow. Пожалуйста, помогите мне с этим.

    func mapView(_ mapView: GMSMapView, didTap marker: GMSMarker) -> Bool {
    var markerData : NSDictionary?

    if let data = marker.userData! as? NSDictionary {
        markerData = data
    }

    locationMarker = marker
    infoWindow.removeFromSuperview()
    infoWindow = loadNiB()

    guard let location = locationMarker?.position else {
        print("locationMarker is nil")
        return false
    }

    infoWindow.spotData = markerData
    infoWindow.alpha = 0.9
    infoWindow.layer.cornerRadius = 12

    let name = markerData!["name"]!
    let imageUrl = markerData!["img"]!

    infoWindow.name.text = "\(name)"

    let trimmedUrl = (imageUrl as AnyObject).trimmingCharacters(in: CharacterSet(charactersIn: "")).replacingOccurrences(of: " ", with: "%20")

    var activityLoader = UIActivityIndicatorView()
    activityLoader = UIActivityIndicatorView(style: .gray)
    activityLoader.center = infoWindow.imgMarker.center
    activityLoader.startAnimating()
    infoWindow.imgMarker.addSubview(activityLoader)

    infoWindow.imgMarker.sd_setImage(with: URL(string: trimmedUrl), completed: { (image, error, imageCacheType, imageUrl) in

        if image != nil
        {
            activityLoader.stopAnimating()
        }
        else
        {
            print("image not found")
            activityLoader.stopAnimating()
        }
    })

    // Offset the info window to be directly above the tapped marker
    infoWindow.center = mapView.projection.point(for: location)
    infoWindow.center.y = infoWindow.center.y - 82
    self.view.addSubview(infoWindow)
    return false
}

1 Ответ

0 голосов
/ 13 июня 2019

Когда вы добавляете пользовательский маркер, установите следующее свойство:

marker.infoWindowAnchor = CGPoint(x: 0.5, y: 0.8)

Измените значение y в соответствии с вашими требованиями.

На скриншоте кажется, что вам нужно увеличить значение y, как показано ниже:

infoWindow.center.y = infoWindow.center.y - 52

Перейдите по этой ссылке для справки:

https://developers.google.com/maps/documentation/ios-sdk/marker

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

...