我们正在使用C#和Xamarin框架开发Android应用程序(针对API 19及更高版本)。中心组件是驻留在WebViewClient中的地图-该地图是Here Maps,它是使用 Here Maps JS API v3 (不是Here Maps移动Android SDK)呈现的。
问题: map.getZoom()在用户捏合缩放操作后返回0
作为测试,我们连接了以下事件:'mapviewchangestart','mapviewchange','mapviewchangeend','sync',然后在名为map.getZoom()的处理程序中-除了'sync'引用了< strong> e.newValue.zoom 。该应用程序也可以直接调用map.getZoom(),而无需任何相关的地图事件。但是,在每种情况下,在捏到缩放操作之后,getZoom()都会返回0。
考虑到可能是异步问题,我们在调用map.getZoom()之前等待了几秒钟(apx 30)以完成所有事件/处理程序-它返回了0。
但是,当点击地图上的地图控件(即+-)以编程方式缩放或设置缩放级别时,getZoom()会按预期运行,并返回正确的缩放级别。可能的线索:当缩小到缩放并且达到最大缩放级别(即20)时,map.getZoom()会正确反映20。
有人经历过类似的事情吗?任何想法或想法(无论是次要的)都将不胜感激-谢谢。
答案 0 :(得分:1)
在与我们的地图绘制合作伙伴合作并查看了他们提供的一些示例代码之后,我们能够确定该问题是由于我们的错误假设造成的:
getZoom()不会返回整数,而是返回浮点数
在我们的C#包装器中,我们错误地假定它返回一个整数,因此无论何时该值不能隐式转换为整数(例如,当它不是3.0、4.0、5.0等时),而是使用小数部分(例如3.462) ),它已被C#转换为零(0)。
值得注意的是,每当使用地图缩放控件(+-)UI按钮时,该值似乎总是增加/减少到下一个整数整数(例如3.462将变为3.0或4.0),但是当捏-发生缩放事件,这些值通常包含小数部分。
我们还假设有21个缩放级别(0到20),但这似乎是不正确的假设-如果有人知道一些详细说明这一点的文档会有所帮助。
无论如何,我认为这本质上是需要更紧密地RTFM并重新评估假设的情况。