2010-04-10 87 views
0

如何将UIView添加到MKMap,以便当我们移动地图时,UIView也随着地图移动,我的意思是说,通常当我们添加UIView(或任何UI组件)到MKMap,然后如果我们要么缩放/移动地图,UIView保持固定在其初始位置,我需要地图移动UIView也随之移动。如何将UIView添加到MKMap?

回答

1

假设我正确地理解了这一点,你希望能够在MKMapView的特定坐标上添加自定义视图。

如果是这样,MKMapView将它们称为Annotations,而MKMapView类公开了addAnnotation:和addAnnotations:方法。这些方法需要传递一个遵循MKAnnotation协议的对象,这意味着你的对象必须提供标题,副标题和坐标(这是一个CLLocationCoordinate2D)。

重要提示;这个对象不是你的UIView,它只是一个为你的视图提供数据的对象。

为了实际添加新的需要一个实现MKMapViewDelegate协议的对象,我建议你使用一个UIViewController子类(包括你的mapview等)。

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation { 

    // Instiate your UIView. The annotation passed into this method is the annotation your passed to the mapview's addAnnotation method, so you can cast this and access any application specific data. 
} 

这就是它。为你的mapview添加一个注解,并且mapview会要求它的委托为这个注解提供一个视图。

+0

但实际上我想显示我的自定义视图时,用户选项卡上Pin而不是显示苹果的默认标注泡泡。 – Matrix 2010-04-10 22:44:15

+0

所以我想要做的是 1)禁用标注泡泡 2)显示自定义视图,而不是标注泡泡 – Matrix 2010-04-10 22:45:27

+0

我应该怎么做在这种情况下? – Matrix 2010-04-10 22:45:45

1

您可能想看看MKAnnotationView类参考,特别是关于管理标注视图的部分。

如果控制水平不够,请看一下here