对于具有 3D 投影的某些缩放级别,NMAMapView 上的 boundingBox 不正确
Posted
技术标签:
【中文标题】对于具有 3D 投影的某些缩放级别,NMAMapView 上的 boundingBox 不正确【英文标题】:Incorrect boundingBox on NMAMapView for certain zoom levels with 3D projection 【发布时间】:2020-01-07 08:26:09 【问题描述】:如果我将NMAMapView
完全缩小以便您可以看到地球仪 (NMAMapViewMinimumZoomLevel
),则调用NMAMapView
s boundingBox 属性确实会返回所有顶部* / 底部* 属性的以下坐标:
po self.hereMapView.boundingBox?.topRight
▿ Optional<NMAGeoCoordinates>
- some : <NMAGeoCoordinates: 0x2828bde00; latitude = -90.000000; longitude = 0.000000; altitude = -340282346638528859811704183484516925440.000000>
self.hereMapView.boundingBox?.topLeft
▿ Optional<NMAGeoCoordinates>
- some : <NMAGeoCoordinates: 0x2828bca20; latitude = -90.000000; longitude = 0.000000; altitude = -340282346638528859811704183484516925440.000000>
// ...
上面的某些缩放级别也是如此。这对我来说似乎不正确,这是 Here SDK 中的错误吗?
编辑:这似乎只是 3D 投影的问题,在最低缩放级别的 2D 投影中,我们确实得到了有效坐标
【问题讨论】:
您使用的是哪个版本的 HERE 移动 SDK? 这里是 HEREMaps 3.11.2 您是否可以使用最新版本 3.14 来测试同样的问题是否仍然存在?您可以从 developer.here.com 上的帐户下载它 由于我们的部署目标,我只能升级到 3.13.3,不幸的是问题仍然存在 感谢您的信息。我们正在对此进行调查,并会尽快回复您。 【参考方案1】:在问题中的更新(2D 投影中的有效边界框)和来自@dashchak 的 cmets 之后,这是预期的行为,边界框是一个矩形,其上限为与矩形边界不同的值。
来自Documentation:
地图的boundingBox是最小的NMAGeoBoundingBox 其中包含当前在屏幕上可见的所有地图区域。如果 地图在 2D 视图中(零倾斜),boundingBox 应该(几乎) 正好与屏幕矩形的边界重合。如果地图在 3D视图,可视屏幕区域是地理空间中的梯形 (屏幕顶部的可视区域比底部宽 由于透视)。因此,边界框将包含一些区域 在这种情况下,它实际上在屏幕上不可见。
【讨论】:
我同意文档。 “如果地图是 3D 视图,则可视屏幕区域在地理空间中是一个梯形(由于透视关系,屏幕顶部的可视区域比底部宽)。因此,在这种情况下,边界框将包含一些在屏幕上实际上不可见的区域。”然而,当整个地球都在视野中时,我得到的是一个边界框,每个角都有 4 个坐标 (-90, 0)。所以这意味着可见边界框的宽度和高度为 0。你能向我解释一下这是如何正确的行为吗? 这里不要刻薄,感谢您的回复。 一般来说,边界框旨在与墨卡托投影一起使用,以在完全缩小并显示地球的整个球形/椭圆体形状时将地球的球形/椭圆形近似为二维矩形,这种近似没有多大意义,因此坐标被限制为默认值。您可以尝试在 NMAMapView 中切换到墨卡托投影(NMAProjectionTypeMercator),以检查行为是否符合您的预期。 在 3.15 SDK 中,如果任何屏幕角不能投影到地图视图上,边界框将为零。以上是关于对于具有 3D 投影的某些缩放级别,NMAMapView 上的 boundingBox 不正确的主要内容,如果未能解决你的问题,请参考以下文章