【问题标题】:Google Map API v3 'click' event only working if double clicked?Google Map API v3“点击”事件仅在双击时有效?
【发布时间】:2012-11-21 07:26:46
【问题描述】:

Google Map API v3 再次遇到一个奇怪的小问题。我确定我忽略了一些简单的问题,但是在寻找了几个小时的答案之后,我已经准备好寻求帮助了。

我有一个多边形形状,我终于想出了如何在单击时放大...除了现在它不是单击即可放大多边形,而是需要双击。令我困惑的是,该脚本只需单击一下即可。这是我所指的脚本部分:

    // Add a listener for the click event
  google.maps.event.addListener(zone1, 'center_changed', function() {     
      window.setTimeout(function() {
          map.panTo(marker.position());
      }, 1000);
  });

  google.maps.event.addListener(zone1, 'click', function() {
      map.setCenter(marker.position(29.737, -95.394),
      map.setZoom(18)
      );
  });

这是一个工作页面的链接:http://www.conleym.com/map/google_maps_code_9_zoom.html *当前唯一设置为缩放的多边形是多边形 1 - 地图顶部的蓝色形状。

我已经在 Firefox(23)、IE(9) 和 Chrome(16) 上进行了测试,结果都一样。

【问题讨论】:

  • 您可以在这里查看我关于谷歌地图的问题stackoverflow.com/questions/13689705/…
  • 什么是“zone1”?如果它是一个多边形,则它没有 center_changed 事件....“标记”来自哪里?也没有方法marker.position()。
  • Zone 1 是被引用的多边形。我只是在学习 javascript,由于这段代码不能正常工作,我确信它不完全正确,但它是半工作的,这就是为什么我很困惑,并在这里发布以查看是否有人可以提供帮助.我被提到了在另一个站点上向用户显示的代码:(pastebin.com/TLEJhDci) 为 .position 道歉,这是原始代码中的 .getPosition - 我一直在尝试任何事情来解决这个问题并发布了我最近的尝试.如果有人能给我一些指导,我将不胜感激。
  • 还想提一下,这增加了我的困惑 - 当我放回 .getPosition 而不是 .position (我知道这很糟糕)时,单击可以工作,但它会放大原始地图而不是单击的多边形形状(在本例中为 zone1)

标签: javascript google-maps-api-3 dom-events


【解决方案1】:

我假设您希望地图缩放到多边形的“边界”(以显示整个多边形)。在这种情况下,你可以做这样的事情(对于每个区域);并移除多边形上的“center_changed”监听器:

zone1._myBounds = new google.maps.LatLngBounds();
for (var i=0; i<triangleCoords.length; i++)
{
   zone1._myBounds.extend(triangleCoords[i]);
}

google.maps.event.addListener(zone1, 'click', function () {
  map.fitBounds(zone1._myBounds);
});

working example

请注意,这种方法的可扩展性不是很好(我建议创建一个函数,获取多边形的数据,完成所有这些,然后将引用推送到数组中以供以后使用)。

【讨论】:

  • 感谢一百万 - 这对我帮助很大!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-22
  • 2012-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-19
相关资源
最近更新 更多