- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试尽可能多地阅读有关此主题的文章。 AFAIK我这样做是正确的,但是我的 map 从未显示结果我的电话。我想看看沉淀_新层和在测试时,我将模拟器位置设置为当前的区域显示降水,但我在 map 上看不到任何东西。这是我的也是第一次尝试使用 MKTileOverlay。
我尝试将 canReplaceMapContent 更改为 NO 和 YES 以及改变具有相同结果的 alpha。
我已验证我的 map 委托(delegate)已连接并可用于我的所有其他 map 调用。我还知道我正在下载请求,因为 openweathermap 也多次阻止我调用他们的网站经常(我现在每分钟只收到 60 个请求)。
我正在执行以下操作:
- (void) setupTileRenderer
{
NSString *tileTemplate = @"https://tile.openweathermap.org/{z}/{x}/{y}.png?appid=<my_app_id>";
MKTileOverlay *tileOverlay = [[MKTileOverlay alloc] initWithURLTemplate:tileTemplate];
tileOverlay.minimumZ = 2;
tileOverlay.maximumZ = 16;
tileOverlay.canReplaceMapContent = YES;
_tileRenderer = [[MKTileOverlayRenderer alloc] initWithTileOverlay:tileOverlay];
_tileRenderer.alpha = 0.5;
DISPATCH_ASYNC {
[_mapView addOverlay:tileOverlay level:MKOverlayLevelAboveLabels];
});
}
- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id <MKOverlay>)overlay
{
if ([overlay isKindOfClass:[MKTileOverlay class]])
{
_tileRendererRequests++;
if (_tileRendererRequests > 55) {
NSLog(@"OWMREQ - too many requests per min");
}
NSLog(@"OWMREQ _tileRendererRequests: %ld", (long)_tileRendererRequests);
return _tileRenderer;
}
}
一个小问题:如何计算我发出的请求数量?看来我这样做的方式并没有计算所有的请求我正在制作,但很快就被关闭了。
感谢您的帮助。
[编辑]我实际上做了子类化它来缓存图 block ,但是图 block 始终是白色的(当我在浏览器中复制/粘贴链接时),但我仍然没有看到它们显示在 map 上。该 map 仅显示法线贴图(没有任何变化)。我尝试将“canReplaceMapContent”更改为 false,但结果相同。我验证了我到达了 result(data, nil) 行,它在应包含降水的图 block 上显示了 1444 字节的计数。我使用另一个雷达应用程序来验证我所看到的地方是否下雨。这是我的代码:
override func loadTile(at path: MKTileOverlayPath, result: @escaping (Data?, Error?) -> Void) {
let baseURL = "https://tile.openweathermap.org/map/precipitation_new/"
let key = String(path.x) + "|" + String(path.y) + "|" + String(path.z)
if let thisImg = cachedData.getRadarTileObject(key: key) {
result(thisImg, nil)
}
else {
let keyid = "my key id"
let url = self.baseURL + String(path.z) + "/" + String(path.x) + "/" + String(path.y) + ".png?appid=" + keyid
let theUrl = URL(string: url)
print("URL: \(url)")
let request = NSMutableURLRequest.init(url: theUrl!, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 30)
request.httpMethod = "GET"
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest) {data,response,error in
if error == nil {
if let count = data?.count {
if count > 0 {
result(data, nil)
return
}
}
}
else {
print("ERROR loading tile data: \(String(describing: error?.localizedDescription))")
}
result(nil, nil)
}
dataTask.resume()
}
}
最佳答案
您的代码实际上运行得很好,只需将 URL 设置为 https://tile.openweathermap.org/{z}/{x}/{y}.png?appid=<my_app_id>
什么时候应该是https://tile.openweathermap.org/map/precipitation_new/{z}/{x}/{y}.png?appid=<my_app_id>
。请求数量完全错误,但图 block 确实显示正确。您可能还想设置 canReplaceMapContent
为假。
当我使用您的代码时,它总共发出了 28 个显示美国大陆的请求。我对 MKTileOverlay 进行了子类化,以添加有助于解决 API 限制的缓存机制。
关于ios - openweathermap MKTileOverlay 不显示在 map View 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54497461/
用平铺 map 添加叠加层应该很容易。我有一个很大的问题。他们不显示。 我在 15 16 和 17 放大文件夹 baymap 中有 Bayeux 中心的 map 图 block 。我将文件夹滑入项目中
我的应用程序在 iOS 8 上运行良好,但当我尝试在 Xcode 7 上构建它时, map 不显示。我在模拟器和真实设备上试过了。 下面是一些代码。 - (void)viewDidLoad {
我正在尝试更新我的瓦片 map 代码以使用 iOS 7 的 MKTileOverlay 和 MKTileOverlayRenderer,并且我可以使用一些指针来使事情更好地工作。 首先,这里是 iOS
我遇到一个问题,在 iOS 13.2(可能也来自 iOS 13)中,使用 MKTileOverlay 加载离线 map 瓦片偶尔会无法呈现,使瓦片空白,似乎MKTileOverlay 的子类完全没有问
有没有办法使用 MKTileOverlay用MBTiles数据库?当覆盖区域越来越大时,将许多小文件(瓦片)直接存储在 native 文件系统上是非常低效的。将它们全部集中在一个地方会容易得多。但是,
我操作自己的 map tileserver。可使用自签名证书通过 HTTPS 访问此服务器。有没有机会使用 MKTileOverlay static NSString * const template
我正在开发一个基于 map 的应用程序。我使用了 MKTileOverlay 来显示一些动态内容。当新信息到达时,有时某些图 block 需要重新加载。 我尝试在主线程中调用 overlayRende
在执行过程中,图像在整个 map 中重复出现。我还可以指定一个 UIImage 来代替 URLTemplate 吗? 我在某个特定位置添加了叠加图像。恰好在当前位置。 谢谢 这是我的代码: impor
我是 iOS 开发的新手,在使用 MapKit 时遇到了问题。 我正在尝试创建一个简单的应用程序来将光栅图像叠加到使用 mapkit 创建的 map 上。 这是我的 tabViewcontroller
我正在尝试使用新的 iOS 7 beta 中提供的 MKTileOverlay 和 MKTileOverlayRenderer 在 Apple map View 上添加 Mapbox 切片图层或 Ma
您好,我正在使用 MKTileOverlay 在我的 iOS7 应用程序 中呈现 OpenStreetMap 图 block 。现在我想实现缓存这些图 block 的功能。我在 NSHipster (
我想在 map 上实现缩放效果(我已经想到了),但是在 MKTileOverlay 完成加载图 block 之后。无论如何知道这些图 block 何时完成加载?我已经尝试了所有其他 mapView 方
我正在尝试显示来 self 们的 WMS 服务器的 WMS 切片。我用旧的 MKOverlay 实现了这一点,但我现在试图更新它以使用 MKTileOverlay 但我无法显示图 block 。这是我
我在使用 MapKit 的 iOS 项目中有一个自定义的 MKTileOverlay,它大部分时间都运行良好。然而,在放大/缩小几次和平移 map 后,一些图 block 没有被绘制。 起初我认为这是
我在 MKMapKit 中加载 512x512px 的图 block 时遇到问题。服务器提供 512x512 .jpeg 图 block 。 我在 MKMapView 中找不到自定义视网膜图 bloc
我尝试尽可能多地阅读有关此主题的文章。 AFAIK我这样做是正确的,但是我的 map 从未显示结果我的电话。我想看看沉淀_新层和在测试时,我将模拟器位置设置为当前的区域显示降水,但我在 map 上看不
我需要在 mapkit 框架中显示 OSM 叠加层而不是标准的苹果 map 。但是我有一个问题,如何在不加载苹果 map 的情况下显示 OSM 叠加层?现在我只有一个方法 AxMapKitTileOv
我正在使用 MapKit,以便通过在 mapView 上添加 MKTileOverlay 来创建卫星和雷达动画。 使用 UISlider 和 PlayButton,我可以通过播放 MKOverlayR
我在下面标记的位置遇到运行时错误?如何从子类调用 MKTileOverlay“url”函数?收到 EXC_BAD_INSTRUCTION? 基本上想在某些地方显示自定义图 block ,但在不可用时返
我有一个 MKMapView 与 MKTileOverlay 一起工作,显示本地数据库中的图 block 。一切正常。 然后我使用 MKDirections 获取两个坐标之间的方向并绘制路线: MKR
我是一名优秀的程序员,十分优秀!