我正在我的应用中实现一个地图功能,我允许用户通过平移来设置他们当前的位置。
此时,我希望MKAnnotation
中有centerCoordinate
。所以我想要做的是跟踪地图的centerCoordinate何时更改并正确更改注释的坐标。行为类似于 Uber , Hailo 等行为。
我尝试了基于时间的实现,其中每个 0.00001s centerCoordinate
都会被检查,并且注释也会被移动。但是,如果地图没有轻轻地轻弹,那么注释会从一个地方跳到另一个地方,这不会形成良好的用户界面。
我尝试的另一个实现是通过手势识别器和MKMapView
(regionDidChange
/ regionWillChange
)的委托方法。这再次导致了一次非常突然的转变。
任何人都可以告诉我如何做得更好吗?
答案 0 :(得分:27)
我建议不要使用实际的id<MKAnnotation>
(至少在“当前位置设置”模式下)。
相反:
UIImageView
)。 UIImageView
,请将其内容模式设置为“中心”,将背景颜色设置为“清除”。mapView.centerCoordinate
委托方法(或平移/捏动手势识别器)中获取regionDidChangeAnimated:
的位置坐标,或仅在用户说他们已完成定位时获取位置坐标。我不建议使用计时器(尤其是每0.00001秒)来查询当前的中心坐标。