Google Maps iOS Swift中的自定义标记InfoWindow?

Anu*_*han 6 storyboard infowindow google-maps-markers google-maps-sdk-ios swift

我在我的应用程序中使用google map iOS,我想显示自定义标记信息窗口。如何创建?我使用情节提要和敏捷作为语言。

在此处输入图片说明

小智 5

我的应用程序有一个这样的问题。

  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
                    }
                }
            }
    
    Run Code Online (Sandbox Code Playgroud)

2.然后创建一个UIView类:

import UIKit

class MarkerInfoView: UIView {

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

像这样

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

希望这对你有帮助。祝一切顺利!


Vla*_*lad 0

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

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

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

更新

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