如何在平移时覆盖Mapbox中调用视图的重新定位?

时间:2017-09-18 15:38:44

标签: ios mapbox

(Re:Mapbox for Swift)我使用Mapbox网站(https://www.mapbox.com/ios-sdk/examples/custom-callout/)上的示例实现了一个自定义的标注视图。当注释靠近屏幕边缘时,默认标注视图将相应地调整其x值位置,以使标注完全适合视图。可以在自定义标注视图中复制此功能的一种方法是在设置self(标注视图本身)的框架时应用调整(如果需要):

self.frame = CGRect(x: frameOriginX + adjustmentX, y: frameOriginY, width: frameWidth, height: frameHeight)


在当前的callout委托方法中:

func presentCallout(from rect: CGRect, in view: UIView, constrainedTo constrainedView: UIView, animated: Bool)


但是,自定义标注在执行此操作时,会在用户开始平移(或甚至触摸地图或其他注释)时将其位置恢复到rect(注释视图)上方的中心位置。但是,在默认标注视图中,当用户平移地图时,应用于标注视图的调整仍然存在。

因此,如何正确调整自定义标注视图的x值位置,并在用户平移地图时将其保留?

1 个答案:

答案 0 :(得分:0)

当用户平移地图时,会重新绘制标注视图。您必须覆盖自定义标注的draw功能,才能在每次重绘时调整x位置。