在 MKMapView 上绘制网格

Posted

技术标签:

【中文标题】在 MKMapView 上绘制网格【英文标题】:Draw a grid onto an MKMapView 【发布时间】:2014-08-25 08:56:59 【问题描述】:

我想在我的地图中绘制一个网格,它表示某个缩放级别的图块的大小。因此,例如,我想在我的地图视图上有一个网格,显示缩放级别 10 瓷砖的轮廓。所以这个瓷砖的轮廓。无论地图视图本身的缩放级别是 5 还是 15,它都应该显示该图块放置位置的轮廓。

我遇到的问题是如何计算代表每个可见“瓷砖”的正确矩形。

非常感谢任何帮助!!!

或者以下问题的答案可能会有所帮助:

如何将 MKMapRect 转换为 MKTileOverlayPath?

【问题讨论】:

【参考方案1】:

我发现当您想开始越来越多地使用地图时,MapKit 太有限了。

我会推荐使用适用于 ios 的 Google Maps SDK:https://developers.google.com/maps/documentation/ios/start

然后将 GMSTileLayer 用于图块: https://developers.google.com/maps/documentation/ios/reference/interface_g_m_s_tile_layer

从长远来看,将 MapKit 替换为 Google 地图可为您提供更多功能和选项,并且比 Apple 具有更好的地理定位和反向地理定位

【讨论】:

虽然这可能是真的,但 OP 应该知道 Google Maps 是一项付费服务​​,并且用户可以执行的 API 调用数量有限,而 Apple Maps 是免费的,并且仅在不合理的情况下限制 API 访问API 调用的数量。 这个答案来自 2014 年(5 年前),虽然仍然相关,但 Apple 地图框架及其支持的位置数据要强大得多【参考方案2】:

您也可以查看Mapbox。在使用 TileMill 通过将 Map 背景设置为图案图像来创建网格层之间,您只能导出缩放级别 10 并将其托管在 Mapbox 上或将其导出为 MBTiles 格式(基于 SQLite)。然后,其中一个 Mapbox 移动工具包可以将图块作为地图上的叠加层提供。

【讨论】:

以上是关于在 MKMapView 上绘制网格的主要内容,如果未能解决你的问题,请参考以下文章

使用 MKMapView 的 showShowsUserLocation 方法而不显示视图

MKMapView 和 setRegion:animated: 不更新地图视觉效果

使用 UIView 作为 MKMapView 子视图来绘制路线

在 MKMapVIew 中像 MKPinAnnotation 一样绘制 Pin 查看 Pin

使用 Swift 在 MapView 上绘制多边形

未调用 mkmapview 委托方法 -calloutaccessorycontroltapped