javascript - HereMaps JS getZoom() 在捏合缩放操作后返回 0

标签 javascript android xamarin here-api pinchzoom

我们正在使用 C# 和 Xamarin 框架开发 Android 应用程序(针对 API 19 及更高版本)。核心组件是位于 WebViewClient 内的 map - 该 map 是使用 Here Maps JS API v3(不是 Here Maps 移动 Android SDK)呈现的 Here Maps。

问题:ma​​p.getZoom() 在用户进行捏合缩放操作后返回 0

作为测试,我们连接了以下事件:“mapviewchangestart”、“mapviewchange”、“mapviewchangeend”、“sync”,然后在名为 map.getZoom() 的处理程序中 - 除了我们引用的“sync”<强>e.newValue.zoom。此外,应用程序可以直接调用map.getZoom(),无需任何相关的 map 事件。然而,在每种情况下,在捏合缩放操作之后,getZoom() 返回 0。

我们认为这可能是异步问题,因此在调用 map.getZoom() 之前等待了几秒(大约 30)所有事件/处理程序完成 - 它返回了 0。

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

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

最佳答案

与我们的 map 合作伙伴合作并查看他们提供的一些示例代码后,我们确定该问题是由于我们的错误假设造成的:

getZoom() 不返回整数,而是返回 float

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

有趣的是,每当使用 map 缩放控制 (+ -) UI 按钮时,该值似乎总是增加/减少到下一个整数(例如 3.462 将变为 3.0 或 4.0),但是当捏合时 - to-zoom事件发生时,值一般包含小数部分。

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

无论如何,我认为这本质上是需要更仔细地 RTFM 并重新评估假设的情况。

关于javascript - HereMaps JS getZoom() 在捏合缩放操作后返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51623205/

相关文章:

javascript - 如何访问 svelte 组件内的命名插槽?

android - 是否可以在不使用手机/平板电脑上的 Samsung S Health 应用程序的情况下检索 Samsung Gear S3 watch 计步器和心率日志

android - Xamarin Facebook 登录并使用 Graph api

ios - 如何在 Xamarin.Forms ios 中更改工具栏图标颜色

javascript - Promise.all() 用于具有多个参数的 Promise

javascript - 如何使用 Sweet alert

javascript - 跳转到指定 anchor 而不更改历史记录

android - 错误膨胀类 ImageButton

android - 通过命令行签署 APK

installation - 使用 Xamarin Studio 运行新的 MonoGame 项目