2017-06-06 84 views
0

我已按照指南here创建自定义标注视图。我添加了两行到自定义类:Mapbox标注正在平移/缩放。

var dismissesAutomatically: Bool = false 
var isAnchoredToAnnotation: Bool = true 

这些似乎做的工作,当谈到保持标注查看平移和缩放时,保持它固定在注释中显示。但是,当用户平移或缩放时,标注似乎会降低大约20个像素。

初始视图时,注释被窃听,但平移/缩放前:

Before Pan/Zoom

查看淘洗后立即/缩放:

View immediately after panning/zooming

回答

1

从isAnchoredToAnnotation的Mapbox API文档:

指示标注视图是否应锚定到相应注释的布尔值。您可以通过覆盖 - [UIView setCenter:]来调整标注视图的精确位置。如果此可选属性未实现,则标注视图将不会锚定到注释。

在斯威夫特,这将是:myView.center =
希望这有助于。

编辑: - 请在Mapbox网站上查看this example,其中介绍了如何实现可拖动注释。有趣的部分是在测试拖动状态(MGLAnnotationViewDragState)的setDragState方法中。我建议在.dragging的情况下以类似的方式实施标注中心坐标更新,其方式与他们实施startDragging()endDragging()功能的方式类似。

+0

我试着在我的MGLMapViewDelegate,'calloutViewFor annotation'方法中设置CustomCalloutView的中心,但它似乎没有什么区别。 – keverly

+0

我已经添加了一些更多的信息给我的答案。标注的位置需要在拖动过程中不断更新,因此我引用了一个可能的解决方案。可能值得问一下为什么需要实现用户在普通地图使用期间不会看到的注释行为?用户习惯于标注拖动时消失,并且当标注再次被删除时,您可以始终使标注重新出现。 – Magnas