2017-05-28 38 views
2

我翻遍了Google Maps docs,這個描述似乎沒有什麼幫助。iOS:Google Maps API - markerInfoWindow vs markerInfoContents

我正在關注使用markerInfoContents的舊tutorial,但是,當我使用委託時,它沒有返回我所期望的。

隨着markerInfoContents:我的自定義視圖似乎覆蓋默認視圖

enter image description here

當我用markerInfoWindow,結果是我所期待的:

enter image description here

我只是拉在一個自定義的UIView從一個像這樣的xib文件中:

func mapView(_ mapView: GMSMapView, markerInfoWindow marker: GMSMarker) -> UIView? { 
    let placeMarker = marker as! PlaceMarker 
    print(placeMarker.name) 

    if let infoView = UIView.viewFromNibName(name: "MarkerInfoView") as? MarkerInfoView { 
     infoView.nameLabel.text = placeMarker.name 

     return infoView 
    } else { 
     return nil 
    } 
} 

(與markerInfoContents第一圖像結果替換markerInfoWindow)同markerInfoContents它創建的錨定件和盒子的陰影效果。當使用markerInfoWindow時,它不會像本教程中那樣創建錨或陰影效果。

任何幫助將是偉大的!

+0

西蒙你好,請註明答案是否能解決你的問題,謝謝。 – Efren

回答

1

正如在發佈的文檔鏈接中提到的,當使用markerInfoContents時:「如果此方法返回一個視圖,它將被放置在默認信息窗口框架內。」,因此您的視圖被限制在默認窗口內(這就是爲什麼它顯示錨和陰影)。它看起來像默認的infowindow比你的xib的UIView小,所以它截斷它。

使用markerInfoWindow顯示您直接傳遞的視圖,所以如果它沒有錨或陰影,它將不會出現。

0

如果你想使用默認的陰影效果,並與markerInfoContents錨,那麼你必須做這樣的:

func mapView(_ mapView: GMSMapView, markerInfoContents marker: GMSMarker) -> UIView? 
{ 
    let placeMarker = marker as! PlaceMarker 
    let view = UIView(frame: CGRect.init(x: 0, y: 0, width: 150, height: 150)) 
    if let infoView = UIView.viewFromNibName(name: "MarkerInfoView") as? MarkerInfoView 
    { 
     infoView.nameLabel.text = placeMarker.name 
     view.addSubview(infoView!) 
     return view 
    } else { 
     return nil 
    } 
}