寻找谷歌地图投影中的错误的解决方法

时间:2012-11-27 16:35:53

标签: android google-maps

我正在使用谷歌地图api 10已经有一段时间了,并且有一个我无法修复的错误,因为我99.9%肯定它在googles库中。

我做了大量的投影.toPixels()来绘制内容并且一切正常。我使用自定义缩放方法mapController.setZoom(getZoom() +1)进行缩放,一切正常,直到我使用捏缩放(双指缩放)。之后,投影似乎停留在某些缩放级别内
如果我从12到11捏缩放,地图getZoomLevel()给我11(它总是报告正确的级别)。现在,如果我使用我的zoomOut方法,我在13级,投影计算13级的所有权利,但每个后续的zoomOut只更改地图缩放级别(内部,请记住,设备没有互联网,所以没有地图数据)。投影继续计算所有内容,就好像它仍然是zoomlevel 13! 我应该放大投影突然跳到11级,无论地图的真实水平是多少。因此,如果我捏缩放到12,则投影卡在11/13并且只有在我缩小/缩小时才会在这两个之间跳跃。
如果我再次捏合变焦,投影会更新,但再次卡在我捏缩放的新水平。

因此,没有互联网的捏缩放完全杀死投影,整个地图变得无用(在我的情况下,我真的不需要视觉地图,我只需要它的geoPoint翻译,这是最重要的部分)。


有没有人知道一个修补程序/解决方法或任何可以帮助我的东西,除了在触摸中禁用多于1个指针?

在我的customMapView

的构造函数中映射Stuff
    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)现在按钮/缩放通过按钮显示如上所述的行为

附加信息:
我刚刚使用了应用程序“myTracks”和“Torque” 两者都使用googlemaps 在两个我都录制了曲目 现在,如果我禁用互联网并使用双指缩放,然后使用常规按钮放大/缩小,在某些时候,即使轨道完全居中,轨道也会偏向某个方向。在经过大量缩小/缩小后,曲目已经消失 第二个我重新激活互联网,地图能够加载一些瓷砖,NEXT变焦正在工作,一切都很好...因为地图似乎需要一些来自互联网的数据来计算投影内的东西,这似乎提供了一些东西通过2指缩放......这就是我如何看待它。

3个应用程序,所有相同的问题......

1 个答案:

答案 0 :(得分:0)

你的问题很混乱,你应该重新说出来。

但至少我知道您在设备中使用MapView而未连接到互联网,并且在将投影与地图缩放级别同步时遇到问题。

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

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

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

希望你理解它。如果没有发布您的代码示例来说明问题,您将获得帮助以纠正它。

问候。