Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 正在寻找谷歌地图投影中一个bug的解决方法_Android_Google Maps - Fatal编程技术网

Android 正在寻找谷歌地图投影中一个bug的解决方法

Android 正在寻找谷歌地图投影中一个bug的解决方法,android,google-maps,Android,Google Maps,我使用谷歌地图api 10已经有一段时间了,有一个bug我无法修复,因为我99.9%确定它在谷歌图书馆中 我做了很多投影.toPixels()来画东西,一切都很好。我使用自定义的缩放方法进行缩放mapController.setZoom(getZoom()+1),在我使用收缩缩放(双指缩放)之前,这一切都可以正常工作。之后,投影似乎卡在某些缩放级别内。 如果我将缩放从12按到11,则贴图getZoomLevel()将显示11(它总是报告正确的级别)。现在如果我使用我的zoomOut方法,我在第

我使用谷歌地图api 10已经有一段时间了,有一个bug我无法修复,因为我99.9%确定它在谷歌图书馆中

我做了很多投影
.toPixels()
来画东西,一切都很好。我使用自定义的缩放方法进行缩放
mapController.setZoom(getZoom()+1)
,在我使用收缩缩放(双指缩放)之前,这一切都可以正常工作。之后,投影似乎卡在某些缩放级别内。

如果我将缩放从12按到11,则贴图
getZoomLevel()
将显示11(它总是报告正确的级别)。现在如果我使用我的zoomOut方法,我在第13层,投影计算对第13层来说是正确的,但是每个后续的zoomOut只会改变地图的缩放级别(记住,在内部,设备没有互联网,所以没有地图数据)。投影继续计算一切,就好像它仍然是zoomlevel 13
我是否应该缩放投影突然跳到11级,而不管地图的真实级别是什么。因此,如果我收缩缩放到12,投影将停留在11/13,并且只有在缩小/放大时才会在这两个投影之间跳跃。
如果我再次收缩缩放,投影将更新,但会再次停留在收缩缩放到的新级别。

因此,在没有互联网的情况下,一个小变焦会完全破坏投影,整个地图变得毫无用处(在我的情况下,我真的不需要可视化地图,我只需要它的地理点转换,这是最重要的部分)。


除了在触摸屏上禁用超过1个指针之外,是否有人知道修补程序/解决方法或其他任何可以帮助我的方法?

在我的customMapView的构造函数中映射内容

    setVisibility(View.VISIBLE);

    mapController = getController();

    mapController.setZoom(17);

    setBuiltInZoomControls(false);
    getZoomButtonsController().setVisible(false);

    setSatellite(false);
    setTraffic(false);
    setClickable(true);
    preLoad();

这就是我用自定义按钮缩放的方式

mapController.setZoom(getZoomLevel() + 1); // zoom in
mapController.setZoom(getZoomLevel() - 1); // zoom out

1) 缩放按钮工作正常
2) 收缩缩小
3) 现在按钮/zoom via按钮显示上述行为


其他信息:
我刚刚使用了应用程序“myTracks”和“Torque”。
两者都使用谷歌地图。
在这两个版本中,我都录制了曲目。
现在,如果我禁用internet并使用双指缩放,然后使用常用按钮放大/缩小,在某个点,轨迹会偏离某个方向,即使它完全居中。直到经过多次缩小/放大后轨迹消失为止。
第二次我重新激活互联网,地图能够加载一些瓷砖下一次缩放工作,一切都很好。。。因为地图似乎需要一些来自互联网的数据来计算投影中的某些东西,而这些东西似乎是由2指缩放提供的。。。我就是这么看的


3个应用程序,都是相同的问题

你的问题很让人困惑,你应该重新措辞

但至少我了解到,您在未连接到internet的设备中使用的是
MapView
,并且您在将投影与地图缩放级别同步时遇到问题

首先也是最重要的一点,问题不在谷歌地图中,您需要在代码中查找问题

实现
getZoomLevel()
Projection
之间的同步最常见的错误是,经常忘记第一个值是整数值(它以离散步长乘以1递增/递减),而地图图像和投影可以在它们之间获取值,为用户提供更平滑的放大/缩小

例如,当您捏缩缩放时,当您将手指放在屏幕上并更改贴图大小(和投影)时,方法
getZoomLevel()
始终返回开始捏缩缩放时贴图的缩放级别。只有在停止收缩缩放(将手指从屏幕上取下)后,方法
getZoomLevel()
才会返回最终的选择缩放级别。但是如果不在此处完成,因为动画会继续将地图图像放大/缩小到最接近的整数缩放级别(在停止收缩缩放后,
getZoomLevel()
开始返回的缩放级别)

希望你能理解。如果你没有发布一个你的代码示例来举例说明问题,你会得到帮助来纠正它


问候。

对不起,我已经尽可能清楚地描述了问题,但它与您描述的内容无关。我用地图工作了将近2年,这并不是那么简单,这个问题埋在图书馆的深处。我也用谷歌地图工作了将近2年:-)在发布我的答案之前,我已经测试了我的一个程序,它在一个与网络断开的设备上显示了一条10000点的路径。它总是能够正确处理缩放。我尝试过几次图片缩放(放大和缩小),然后是缩放按钮(还有我开发的自动缩放),所有这些都很好。仔细阅读我上面描述的内容,并进行更多的测试(使用日志消息显示缩放级别),您将能够缩小问题的范围。如果您愿意,请发布一个遇到问题的示例代码,我将进行检查。关于一些代码。此外,如果设备具有internet,问题只会一直存在,直到地图可以加载第一个分幅。对瓷砖进行一些计算似乎可以解决这个问题。我只是不知道我怎么会导致这个问题,所以我搞乱了谷歌的内部变量,只有活跃的互联网才能修复它们。这个代码很好。问题出在
draw()
方法上,由于某种原因,在缩放动画开始时(即按下缩放按钮时)正在绘制,但在缩放动画结束后不更新绘制。您可以通过添加一个新按钮来确认这一点,该按钮只执行
mapView.invalidate()
。按下该按钮,您将看到所有绘图都将正确绘制。发布您的
draw()
方法。