平移时如何覆盖 Mapbox 中标注视图的重新定位?
How to override repositioning of callout view in Mapbox when panning?
(回复:Swift 的 Mapbox)我使用 Mapbox 网站 (https://www.mapbox.com/ios-sdk/examples/custom-callout/) 上的示例实现了自定义标注视图。当注释靠近屏幕边缘时,default 标注视图将相应地调整其 x 值位置,以便标注完全适合视图。可以在 custom 标注视图中复制此功能的一种方法是在设置 self
的框架(标注视图本身)时应用调整(如果需要):
self.frame = CGRect(x: frameOriginX + adjustmentX, y: frameOriginY, width: frameWidth, height: frameHeight)
在当前标注委托方法中:
func presentCallout(from rect: CGRect, in view: UIView, constrainedTo constrainedView: UIView, animated: Bool)
但是,custom 标注在执行此操作时,会在用户开始平移(或什至触摸地图或另一个注释)。但是,在 默认 标注视图中,当用户平移地图时,应用到标注视图的调整将保留。
因此,如何正确调整自定义标注视图的 x 值位置并在用户平移地图时保留它?
当用户平移地图时重绘标注视图。您必须覆盖自定义标注的 draw
函数,以便在每次重绘时调整 x 位置。
(回复:Swift 的 Mapbox)我使用 Mapbox 网站 (https://www.mapbox.com/ios-sdk/examples/custom-callout/) 上的示例实现了自定义标注视图。当注释靠近屏幕边缘时,default 标注视图将相应地调整其 x 值位置,以便标注完全适合视图。可以在 custom 标注视图中复制此功能的一种方法是在设置 self
的框架(标注视图本身)时应用调整(如果需要):
self.frame = CGRect(x: frameOriginX + adjustmentX, y: frameOriginY, width: frameWidth, height: frameHeight)
在当前标注委托方法中:
func presentCallout(from rect: CGRect, in view: UIView, constrainedTo constrainedView: UIView, animated: Bool)
但是,custom 标注在执行此操作时,会在用户开始平移(或什至触摸地图或另一个注释)。但是,在 默认 标注视图中,当用户平移地图时,应用到标注视图的调整将保留。
因此,如何正确调整自定义标注视图的 x 值位置并在用户平移地图时保留它?
当用户平移地图时重绘标注视图。您必须覆盖自定义标注的 draw
函数,以便在每次重绘时调整 x 位置。