问题标签 [mktileoverlay]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
407 浏览

ios - 增加 MKMapView 中瓦片的大小

我目前正在实现一个带有自定义平铺覆盖的 MKMapView。不幸的是,我拥有的瓷砖在视网膜显示器上显示得相当小,使得它们上的文字很难阅读。有没有办法在不弄乱他们在地图上的位置的情况下放大它们?

我已经使用这样的自定义 MKTileOverlayRenderer 子类尝试了这个问题中的解决方案:

不幸的是,这似乎把我的瓷砖弄乱了。我不能说我有很多使用 CGContexts 的经验,并且只使用了一些参数而没有取得太大的成功。

在此处输入图像描述

0 投票
1 回答
893 浏览

ios - MKTileOverlay: How to reload a specific tile or region

I'm working on a map-based app. I used a MKTileOverlay to show some dynamic contents. Occasionally certain tiles need reloading when new information arrives.

I've tried to call overlayRenderer.setNeedsDisplayInMapRect(mapRect) in main thread but apparently it doesn't trigger a map redraw in my case. So far the only approach that works is overlayRenderer.reloadData(). However, this will cause the entire contents (instead of only specific region) to be reloaded and lead to flickering in the view, so this is not a option for me.

Can anyone give any advice on this? Thanks & Cheers.

0 投票
2 回答
3595 浏览

ios - iOS 中的离线地图

我非常需要为我的应用程序制作离线地图,因为它主要是为泰国制作的,那里通常很难获得互联网连接。我现在正在为我使用 OpenStreetMap,MKTileOverlay但在实现它以供离线使用时遇到问题。我找到了一个说子类 MKTileOverlay 的教程。因此,在地图所在的 ViewController 中,我有:

在我的 MKTileOverlay 子类中,我有:

问题是根本没有加载任何东西,除非我注释掉子类中的代码。我在哪里搞砸了?

0 投票
1 回答
185 浏览

ios - 子类化 MKTileOverlay 的困难

我正在尝试对 MKTileOverlay 进行子类化,但是在找不到对象上的属性 canReplaceMap 时遇到问题。我究竟做错了什么?我去新建,创建新类,MKTileOverlay 的子类并添加教程都说要添加的方法,但是找不到这些简单的属性!

0 投票
2 回答
1576 浏览

ios - 地图离线缓存

我非常需要为我的应用程序制作离线地图,因为它主要是为泰国制作的,那里通常很难获得互联网连接。我现在正在使用OpenStreetMapMKTileOverlay但在实现离线使用时遇到问题。我找到了一个关于 subclass 的教程MKTileOverlay。所以,在我ViewController的地图所在的地方,我有:

在我的子类中MKTileOverlay,我有:

问题是根本没有加载任何东西,除非我注释掉子类中的代码。我在哪里搞砸了?

0 投票
0 回答
81 浏览

swift - 离线视网膜地图图块太大

这个问题自八月以来一直没有答案。我没有发现相同的问题。我希望它足够清楚。地图上的问题似乎很少,但必须有人知道答案。

我正在尝试使用 512x512 瓷砖显示离线地图。如果我使用地图正确显示的 256x256 瓷砖,我的瓷砖命名为 22524@x2.png,但 512 瓷砖仅显示每个瓷砖的四分之一。这是我的代码

我需要添加什么才能使图块正确显示?苹果可以接受在视网膜屏幕上使用 256x256 瓷砖的地图吗?

0 投票
0 回答
1264 浏览

ios - 为什么我的自定义 MKTileOverlayRenderer 在多个位置绘制同一个图块?

所以我正在编写一个基于 MapKit 的应用程序,它在地图上绘制一个叠加层。然而,很多覆盖图是动态的,因此被绘制的图块经常变化,所以我实现了一个自定义的 MKTileOverlay 和一个自定义的 MKTileOverlayRenderer。第一个处理存储平铺图像的 url 方案,第二个处理自定义 drawMapRect 实现。

我遇到的问题是我似乎在多个位置绘制相同的平铺图像。这是一个屏幕截图,可以帮助您直观地理解我的意思:(我知道瓷砖是颠倒的和向后的,我可以解决这个问题) iOS Simulator Screenshot

我已经更改了某些平铺图像,使它们具有不同的颜色并包含其平铺路径。您会注意到许多平铺图像在不同区域重复出现。

我一直试图弄清楚为什么会发生这种情况,所以按照我的代码路径,覆盖起点是非常标准的——ViewController 设置 addOverlay() 调用,它调用代表的 mapView(rendererForOverlay:) 返回我的自定义 MKTileOverlayRenderer 类,然后尝试调用我的 drawMapRect(mapRect:, zoomScale:, context)。然后它获取给定的 map_rect 并计算 map_rect 属于哪个图块,调用自定义 MKTileOverlay 类的 loadTileAtPath(),然后绘制生成的图块图像数据。这正是我的代码看起来也正在做的事情,所以我不确定我哪里出错了。也就是说,如果我不尝试实现自定义绘图并使用默认的 MKTileOverlayRenderer,它工作得非常好。不幸的是,那'

作为参考,这是我的自定义类中的相关代码:

我的自定义 MKTileOverlay 类

我的自定义 MKTileOverlayRenderer 类:

我的辅助函数处理 zoomScale、zoomLevel、tile path 和 tile 坐标之间的转换:

我认为这是一个非常模糊的错误,所以没有太多运气找到其他面临类似问题的人。任何事情都会有帮助!

0 投票
1 回答
90 浏览

ios - 如何根据 NSMutableArray 中的特定 URL 动态创建 MKTileOverlay

我在NSMutableArray ( dateArrayURL )中有一个NSDictionnary

它看起来像这样:

请注意,每个日期的 URL 图像都不同。

现在,我想使用以下方法为 MutableArray 中的每个日期/URL 构建一个 MKTileOverlay:

我应该为数组中的每个元素循环,并使用适当的 URL 创建一个 MKTikeOverlay 吗?我该怎么做,我一直在访问字典/数组中的元素。

0 投票
2 回答
749 浏览

ios - iOS - 解决方法 MKOverlayRenderer 和 Alpha 属性

在将 MKOverlayRenderer 的 alpha 属性传递给地图后,如何访问和修改它?

事实上,我可以修改rendererForOverlay方法中的 alpha 属性:

但是只有当我向 mapView 添加 Overlay 时才会调用此方法,对吧?

所以我的问题是:即使在我的 Overlay 已经在地图上渲染之后,有没有办法改变和设置这个 alpha 属性的值?

我尝试将渲染器添加到 NSMutableArray 中:

然后我可以通过调用我所做的这个方法来改变透明度:

有没有更好的方法来做到这一点?仅设置 alpha 值似乎是一个缓慢的过程。

实际上我想动态地将我的 OverlayRenderer 的 alpha 值从 0 切换到 1,这样我就可以显示 1 Overlay,隐藏它,显示另一个,隐藏它等等......

0 投票
1 回答
974 浏览

ios - iOS - 某些图块未在自定义 MKTileOverlay 中呈现

我在使用 MapKit 的 iOS 项目中有一个自定义的 MKTileOverlay,它在大多数情况下都能正常工作。但是,在放大/缩小几次并平移地图后,一些图块没有被绘制出来。

起初我认为这是一个简单的瓦片没有加载的情况,所以我将 MKTileOverlay 子类化并在控制台中添加了日志记录。它表明所有的瓷砖都被完美地加载并传送到了结果块。

当我没有想法时,我创建了一个本地图块生成器,它只返回带有路径 x/y/z 和绘制框架的图像,以查看缺少哪些图块。

缺少平铺示例图像

不幸的是,即使使用本地生成的图块,问题仍然存在,因此它与 Internet 连接无关。另一个奇怪的行为是,如果我有两个自定义叠加层,它们将是完全相同的图块,不会在两个叠加层上呈现。

我现在能想到的唯一解决方案是将瓷砖渲染器子类化并确保显示所有内容,因为无法知道瓷砖没有被渲染。然而,这听起来像是大量的工作和“重新发明轮子”的任务......