【问题标题】:Zooming in google map api 3 [ios]放大谷歌地图 api 3 [ios]
【发布时间】:2014-11-21 08:47:06
【问题描述】:

根据Google Map documentation。在 iPhone 中

缩放是通过两指捏合来完成的。

因此,当我在屏幕上点击手指并移动时,地图会被缩放,但之后当我从屏幕上松开手指时,我在地图重新加载之前看到的缩放比实际渲染的缩放要多得多。

目前,我正在 iPhone 5ios 7.1.2iPhone 4Sios 8 上进行测试>

我在我的应用程序中使用 JQuery Mobile Framework,并且地图是动态生成的。 (当我创建具有固定值的地图时,它工作正常)

我创建了小提琴,您可以在其中看到同样的问题。 Link

我的问题的一些图片 第一张图片地图打开

当我尝试用手指捏缩放地图时的第二张照片。

当我从屏幕上松开手指时的第三张照片。

因此它无法保持第二张图片中显示的缩放级别。如何解决这个问题

【问题讨论】:

  • 捏缩放不会返回实际的缩放级别,因为在缩放操作期间不会加载图块。如果您console.log(mapClass.map.getZoom());,您将在捏缩放结束后获得缩放级别。
  • 仅在webapp 的情况下?因为在 IPhone 中已经安装的地图应用程序中,它以这种方式工作。
  • 您的示例按照 Google 的文档正确缩放。您似乎只想使地图图像更大,而不是在最终缩放级别加载新图块。也许某种视口缩放会起作用?
  • 也许吧。您能否更具体地了解视口缩放。 ?因为我正在使用 jquery mobile 并且我不想缩放完整的视口。我只关心地图对象。
  • 可能原生应用使用 iOS 内置地图。 Google 会在缩放时加载图块。

标签: javascript ios iphone jquery-mobile google-maps-api-3


【解决方案1】:

请尝试更换:

google.maps.event.addListener(mapClass.map, 'zoom_changed', function() {
    mapClass.map.panTo(myLatlng);
});

与:

google.maps.event.addListener(mapClass.map, 'zoom_changed', function() {
    mapClass.map.panTo(mapClass.map.center);
});

希望对你有帮助。

【讨论】:

    【解决方案2】:

    我解决了这个问题(或者可能是一个非常相似的问题)购买限制我在zoom_changed 侦听器中所做的工作。我用lodash throttle

    替换这个

    google.maps.event.addListener(mapClass.map, 'zoom_changed', myFunction);
    

    有了这个

    google.maps.event.addListener(mapClass.map, 'zoom_changed', _.throttle(myFunction,100));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-11
      • 2011-08-24
      • 1970-01-01
      • 2015-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-23
      相关资源
      最近更新 更多