HereMaps JS getZoom() returns 0 捏缩放动作后

HereMaps JS getZoom() returns 0 after a pinch to zoom action

我们正在使用 C# 和 Xamarin 框架开发 Android 应用程序(面向 API 19 岁及以上)。中央组件是位于 WebViewClient 内部的地图 - 该地图是使用 Here Maps JS API v3 呈现的 Here Maps(不是 Here Maps mobile Android SDK).

问题:map.getZoom() returns 0 在用户双指缩放操作后

作为测试,我们连接了以下事件:'mapviewchangestart'、'mapviewchange'、'mapviewchangeend'、'sync',然后在名为 map.getZoom 的处理程序中() - 除了 'sync' 我们引用了 e.newValue.zoom。该应用程序还可以直接调用 map.getZoom() w/o 任何相关的地图事件。然而,在每种情况下,在捏合缩放操作之后,getZoom() returns 0.

认为这可能是异步问题,我们在调用 map.getZoom() 之前等待所有 events/handlers 完成几秒 (apx 30) - 它返回 0。

但是,当点击地图上的地图控件(即 + -)进行缩放或以编程方式设置缩放级别时,getZoom() 会按预期运行并返回正确的缩放级别。一个可能的线索:当双指缩放并达到最大缩放级别(即 20)时,map.getZoom() 正确反映 20.

有没有人经历过类似的事情?任何想法或想法(无论多么微小)都将不胜感激 - 谢谢。

在与我们的地图合作伙伴合作并查看他们提供的一些示例代码后,我们能够确定问题是由于我们的假设不正确造成的:

getZoom() 不是 return 整数而是浮点数

在我们的 C# 包装器中,我们错误地假设它 return 是一个整数,因此每当该值不能隐式转换为整数时(例如,当它不是 3.0、4.0、5.0 等时),而是有小数部分(例如 3.462)它被 C# 转换为零 (0)。

有趣的是,无论何时使用地图缩放控件 (+ -) UI 按钮,该值似乎总是 increase/decrease 到下一个整数整数(例如 3.462 将变为 3.0或 4.0) 但当发生双指缩放事件时,这些值通常包含小数部分。

我们还假设有 21 个缩放级别(0 到 20),但这似乎也是一个不正确的假设 - 如果有人知道一些对此进行详细说明的文档将会有所帮助。

无论如何,我想这本质上是一个需要更密切地进行 RTFM 和重新评估假设的情况。