MapKit 覆盖以将平面图添加到地图

Posted

技术标签:

【中文标题】MapKit 覆盖以将平面图添加到地图【英文标题】:MapKit overlays to add floor plans to map 【发布时间】:2014-10-06 06:51:00 【问题描述】:

我正在尝试向 ios MapKit 添加叠加层以显示平面图。但是,我不确定这样做的最佳方法。如果我使用 MKOverlay 添加平面图,是否会延迟加载平面图,或者我是否需要找出正在显示地图的哪一部分并在之后更新叠加层?我还研究了使用 MKTileOverlay,因为它使用延迟加载,但我的印象是它应该用于完全覆盖地图,而不仅仅是添加到现有地图。这是正确的吗?

【问题讨论】:

【参考方案1】:

是的,你是对的MKTileOverlay 可以用瓷砖覆盖整个地图,是的,它使用延迟加载。

如果您不愿意替换地图的原生外观和填充,请使用MKOverlayMKOverlay也可以实现延迟加载。

注意:MKTileOverlay 不会删除您已经存在的MKAnnotationsMKOverlay

【讨论】:

谢谢。 MKOverlay 是否自动使用延迟加载,还是我需要以特殊方式对其进行配置?另外,我的叠加层应该添加到一个 MKOverlayView,还是每个叠加层单独的 MKOverlayView? 对于MKOverlay 为延迟加载创建块或后台线程,不需要单独创建,所有覆盖将在同一个MKOverlayView 上管理。【参考方案2】:

MKOverlay 是一个协议,而不是一个类。从 iOS 7 开始,您需要 MKTileOverlay。根据当前显示的地图部分,事物会延迟加载。

您可能会发现这可以作为有关如何对图块进行编号和组织的参考:

https://www.mapbox.com/foundations/how-web-maps-work/

至于覆盖苹果地图,默认会出现这种情况,但是你也可以调整MKOverlayLevel用来放置在苹果的底图和标签层之间,或者如果你想禁用苹果的地图你可以使用canReplaceMapContent = YES完全。

【讨论】:

以上是关于MapKit 覆盖以将平面图添加到地图的主要内容,如果未能解决你的问题,请参考以下文章

覆盖切割平面中的切口

如何利用GlobalMapper基于谷歌高程生成剖面图

隐藏谷歌地图平面图

如何为 iOS 应用程序构建内部地图导航?

Java 8 流:列表到按 [重复] 分组的平面地图

MapKit 自定义注释被添加到地图,但在地图上不可见