Ios 平移时跟踪MKMapView中心坐标

Ios 平移时跟踪MKMapView中心坐标,ios,mkmapview,mapkit,mkannotation,Ios,Mkmapview,Mapkit,Mkannotation,我在我的应用程序中实现了一个地图功能,允许用户通过左右平移来设置当前位置 一直以来,我都希望在中心坐标中有一个MKAnnotation。因此,我要做的是跟踪地图的中心坐标何时更改,并正确更改注释的坐标。这种行为将类似于优步、海露和其他公司 我尝试了一个基于时间的实现,其中每个0.00001s都会检查中心坐标,并且注释也会被移动。但是,如果地图没有轻轻地翻转,注释就会从一个地方跳到另一个地方,这不利于良好的用户界面 我尝试的另一个实现是通过手势识别器和MKMapView(regionDidChan

我在我的应用程序中实现了一个地图功能,允许用户通过左右平移来设置当前位置

一直以来,我都希望在
中心坐标中有一个
MKAnnotation
。因此,我要做的是跟踪地图的中心坐标何时更改,并正确更改注释的坐标。这种行为将类似于优步、海露和其他公司

我尝试了一个基于时间的实现,其中每个0.00001s都会检查
中心坐标
,并且注释也会被移动。但是,如果地图没有轻轻地翻转,注释就会从一个地方跳到另一个地方,这不利于良好的用户界面

我尝试的另一个实现是通过手势识别器和
MKMapView
regionDidChange
/
regionWillChange
)的委托方法。这再次导致了一个非常突然的转变


有人能告诉我如何做得更好吗?

我建议根本不要使用实际的
id
(至少对于这种“当前位置设置”模式)

相反:

  • 在地图视图的前面添加一个视图(例如,
    UIImageView
    ),其中包含一个pin(或任何您喜欢的图标)的图像
  • 此pin视图不应是地图视图的子视图
  • pin视图应该是地图视图作为子视图的同一视图的子视图(例如,两者都应该是同一superview的子视图)
  • 引脚视图的大小和位置应使其显示在地图视图的中心上方(您可以使引脚视图与地图视图具有相同的框架和相同的自动布局/自动调整大小逻辑,以便它们在视觉上保持同步,而不管屏幕大小或方向如何)
  • 如果使用
    UIImageView
    ,请将其内容模式设置为“中心”,背景色设置为“清除”(默认值为清除)
  • pin视图上应禁用用户交互,以便用户仍然可以与其后面的地图视图交互。当用户平移或缩放地图视图时,前面的pin视图似乎会立即移动
  • 如有必要,应用程序可以从
    RegiondChangeAnimated:
    MKMapViewDelegate方法(或平移/捏手势识别器)中的
    mapView.centerCoordinate
    获取位置坐标,或者仅当用户说他们已完成定位时。我不建议使用计时器(尤其是每0.00001秒)来查询当前中心坐标
  • 当用户指示当前位置是他们希望最终放置注释的位置时,您可以在该坐标处创建并添加实际注释,并隐藏“位置设置模式”管脚视图

  • 哈哈,很公平。我也考虑过这一点,但我想我太固执了,想通过MKAnnotation操作让它工作起来。谢谢你给了我所需要的提示。节日快乐!