iPhone - MKOverlay和MKOverlayView逻辑

时间:2011-08-28 22:14:41

标签: iphone mapkit mkmapview overlay mkoverlay

有一点我想知道,也许有人可以用比文档做得更好的简单词语来解释我......

如果要在MKMapView上添加叠加层,首先要添加符合MKOverlay协议的内容。

然后,调用(MKOverlayView*)mapView:(MKMapView*)mapView viewForOverlay:(id)overlay并且您必须返回MKOverlayView或继承它的东西。

addOverlay中添加的叠加层的作用是什么,因为它没有显示任何内容?为什么不直接添加子视图,因为它是通过addSubview为视图完成的,并将“在其中”放入显示所需的变量?为什么运行这样一个2部分的过程?

1 个答案:

答案 0 :(得分:4)

model-view-controller (MVC) pattern中,存储数据的对象与处理表示的对象隔离:实现MKOverlay的对象的角色是管理数据存储,MKOverlayView对象的角色是处理表示地图。

例如,您可能有一个ApartmentBuilding对象存储有关租户,租金,财产税等的数据,您可能希望在显示您的房地产帝国的应用中使用该对象。地图 - 但您可能 想要在计算税单的应用中使用相同的ApartmentBuilding数据,或者生成定期维护日历。

如果为ApartmentBuilding建模的代码与在地图上显示您的建筑物的代码完全分开,那么您可以将ApartmentBuilding模型与不同的视图对象配对 - {{1 ,比方说,或MaintenanceCalendarView - 您的代码更易于维护和重复使用。