以编程方式显示GMSMarker的信息窗口

时间:2017-07-30 23:04:22

标签: swift google-maps

我知道在SO(Displaying info window when tapped marker in google maps iOS sdk while implementing mapView:didTapMarker: delegate method implemented)上已经存在类似的问题,但答案不适用于我的情况。

在我的mapView(didTap:)委托方法中,必须 return true因为我在点击标记时以编程方式确定相机位置。如果我return true喜欢上述问题中的答案,那么地图会自动居中在所选标记上,这是我不想要的。由于我return true,点按标记不会显示标记的信息窗口,我仍然想要这样做,所以我有办法以编程方式执行此操作吗?

我不认为我的mapView(didTap:)委托方法中的代码对于回答这个问题是必要的,但如果有人需要,请告诉我。 (请记住,我的问题问题是指点击标记时的委托方法,而不是点击信息窗口时的委托方法,mapView(didTapInfoWindowOf:)

提前致谢。

修改

浏览Google地图文档,我发现有一种方法可用于我在JavaScript中寻找的名为showInfoWindow()的方法,您可以在标记中调用您要显示的信息窗口{{3} })。那么有人知道Swift 3替代这种方法吗?

修改

如果我在委托方法中return false,相机会立即移动到标记的位置一瞬间,然后平移到我编程告诉它移动到的位置。这在技术上有效,但它很丑陋且不流畅,所以我仍然需要一种方法以编程方式显示标记的信息窗口,而委托方法返回true

1 个答案:

答案 0 :(得分:0)

在使用Google问题跟踪器和submitting a post之后,我发现mapView.selectedMarker() = marker实际上与mapView(didTap:)委托方法没有任何关联,因此返回{{1委托方法中的 true 方法的功能没有影响。

因此,我可以在自定义我希望为mapView设置动画的位置之后,在返回selectedMarker()之前,在委托方法中添加mapView.selectedMarker() = marker,这会导致标记的信息窗口变为弹出而不会弄乱相机位置。