iOS:Google Maps API - markerInfoWindow vs markerInfoContents
问题描述:
我翻遍了Google Maps docs,这个描述似乎没有什么帮助。iOS:Google Maps API - markerInfoWindow vs markerInfoContents
我正在关注使用markerInfoContents
的旧tutorial,但是,当我使用委托时,它没有返回我所期望的。
随着markerInfoContents
:我的自定义视图似乎覆盖默认视图
当我用markerInfoWindow
,结果是我所期待的:
我只是拉在一个自定义的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
时,它不会像本教程中那样创建锚或阴影效果。
任何帮助将是伟大的!
答
正如在发布的文档链接中提到的,当使用markerInfoContents
时:“如果此方法返回一个视图,它将被放置在默认信息窗口框架内。”,因此您的视图被限制在默认窗口内(这就是为什么它显示锚和阴影)。它看起来像默认的infowindow比你的xib的UIView小,所以它截断它。
使用markerInfoWindow
显示您直接传递的视图,所以如果它没有锚或阴影,它将不会出现。
答
如果你想使用默认的阴影效果,并与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
}
}
西蒙你好,请注明答案是否能解决你的问题,谢谢。 – Efren