【问题标题】:Custom marker InfoWindow in google maps iOS swift?谷歌地图iOS swift中的自定义标记信息窗口?
【发布时间】:2017-07-13 19:45:19
【问题描述】:

我在我的应用程序中使用谷歌地图 iOS,我想显示自定义标记信息窗口。如何创建它? 我使用故事板和 swift 作为语言。

【问题讨论】:

标签: swift storyboard google-maps-markers google-maps-sdk-ios infowindow


【解决方案1】:

我的应用遇到了这样一个问题。

  1. 在您的 ViewController.swift 中:

     class ViewController: GMSMapViewDelegate {
            func mapView(_ mapView: GMSMapView, markerInfoContents marker: GMSMarker) -> UIView? {
    
                    let placeMarker = marker as! PlaceMarker
    
                    if let infoView = UIView.viewFromNibName("MarkerInfoView") as? MarkerInfoView {
                        infoView.nameLabel.text = placeMarker.place.name
    
                        if let photo = placeMarker.place.photo {
                            infoView.placePhoto.image = photo
                        } else {
                            infoView.placePhoto.image = UIImage(named: "generic")
                        }
    
                        return infoView
                    } else {
                        return nil
                    }
                }
            }
    

2.然后创建一个UIView类:

import UIKit

class MarkerInfoView: UIView {

    @IBOutlet weak var placePhoto: UIImageView!
    @IBOutlet weak var nameLabel: UILabel!
}
  1. 然后创建一个与UIView类同名的xib文件:

注意类名与 UIView 类相同。您可以根据需要添加标签和图像。如图所示,将这些 IBOutlets 连接到 UIView 类。

希望这对您有所帮助。万事如意!

【讨论】:

  • 如何在这个 XIB 文件视图中添加手势?
【解决方案2】:

为您的GMSMapView 定义一个委托并在您的委托中实现此功能:

func mapView(_ mapView: GMSMapView, markerInfoWindow marker: GMSMarker) -> UIView? { }

您可以在此函数内以编程方式或通过 nib 文件创建视图。

更新

不要忘记更改标记的 infoWindowAnchor: https://developers.google.com/maps/documentation/ios-sdk/reference/interface_g_m_s_marker.html#a6668957ca7b6857355ee6cd9ab944a92

【讨论】:

  • 但是我怎样才能让它像图片中显示的那样自定义。
  • 您可以像创建任何普通 UIView 一样创建它,无论是在 Nib 文件中,还是在函数内部以编程方式。这里没有魔法。
  • 我正在尝试像这样使用 WKWebView 以编程方式创建,但它不起作用,它只加载一个空白视图。如果我启用tracksInfoWindowChanges,它将开始显示 webview 的 html,但随后 cpu 会卡在完全使用状态。还能缺少什么?
猜你喜欢
  • 2019-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-05
  • 1970-01-01
  • 2018-01-19
  • 2015-09-07
相关资源
最近更新 更多