【问题标题】:How to move inside google maps only with two fingers?如何仅用两根手指在谷歌地图内移动?
【发布时间】:2016-06-25 09:39:54
【问题描述】:

我有一个移动用户的大问题:

我有一个具有width: 100% 的谷歌地图,因此当用户滚动窗口时,如果触摸地图“内部”的屏幕,滚动将仅适用于地图,而不适用于所有窗口......(昨天我的爸爸在地图里面滚动了3分钟XD)

滚动窗口可以触摸屏幕的边框,但是非常非常严格,并不是所有的用户都理解这一点。 我不想要一张width 少于100% 的地图,所以我必须找到其他解决方案...

这将使地图只有在两指触摸时才可拖动,几乎在捏缩放时......

但是我可以使用哪个谷歌地图事件?

也许:

    google.maps.event.addListener(map, 'dblclick', function(event){
      this.setOptions({draggable:true});
    });

但也许在第一次点击地图时我应该提醒(地图中有一个 div)可以用两根手指移动地图??

你怎么看?代码是否正确?

非常感谢我的英语和奇怪的问题:D

【问题讨论】:

  • 为什么要对我投反对票
  • 这对于移动滚动非常有用。我今天注意到Google 已经为一个手指移动添加了一个原生块,现在,至少在使用 API 时,你只能用两个手指移动地图。例如:cmwautomacao.com.br/contato.php

标签: javascript google-maps mobile google-maps-api-3 user-experience


【解决方案1】:

如果您使用 API v3.27 或更高版本。初始化地图时只需添加属性gestureHandling: 'Cooperative'

喜欢这个

var map = new google.maps.Map(document.getElementById('map'), {
          zoom: 4,
          center: myLatLng,
          gestureHandling: 'cooperative'
        });

More Info Here

或者,如果您想在创建地图后执行此操作,请执行此操作

map.setOptions({gestureHandling: 'cooperative'});

More Info Here

【讨论】:

  • 在 Web 视图应用程序上使用 iFrame 标签的嵌入式地图怎么样?
【解决方案2】:

虽然这是一个很奇怪的要求,但是你可以试试下面的;

document.addEventListener('touchmove', function(e) {
    e.preventDefault();
    var touch = e.touches[0];
    if(e.touches.length == 2){
      //This means there are two finger move gesture on screen
      googleMapsReference.setOptions({draggable:true});
    }
}, false);

我尚未在移动设备上对此进行过测试,但它应该可以为您提供一个起点。

【讨论】:

  • 嗯也许比使用谷歌地图事件更好......当我尝试你的代码时(2-3天)我会告诉你是否有效......非常感谢你的好主意和帮助。现在我等待其他帮助:D
  • 为什么要添加“e.preventDefault”?
  • 根据使用情况,可以删除。它可以防止事件的默认操作。详情可以参考api.jquery.com/event.preventdefault
  • 在 Web 视图应用程序上使用 iFrame 标签的嵌入式地图怎么样?
  • 您可以尝试定位 iframe 并获取其文档对象以添加侦听器,而不是使用文档选择器
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多