v2和v3 Google Maps API可以在同一页面上共存吗?

时间:2010-07-19 01:45:32

标签: javascript google-maps google-maps-api-3 google-maps-api-2

嘿那里,我在尝试在页面上同时拥有v3和v2谷歌地图时遇到了问题/错误。

我们的应用程序的核心使用API​​的v2并添加一些新功能,我们决定使用api的v3,因为不推荐使用v2。所以我在应用程序的另一个“选项卡”中动态加载api的v3版本。

问题是如果你点击v3地图然后点击v2地图,v2地图会在鼠标光标周围开始,就像你点击开始拖动但从未释放鼠标按钮一样。并且基本上是错误,直到你重新加载页面

这是一个例子,有关如何复制的简单说明 http://jsbin.com/googlemapv3v2/1

奇怪的是,如果您首先使用v2地图点击/播放,然后使用v3地图单击/播放它可以很好地工作。

所以我在加载v3 api后,通过在v2地图上触发自定义点击/ mousedown事件尝试“欺骗”它,请参阅http://jsbin.com/googlemapv3v2/2

但那里没有运气,有人有任何想法吗?

编辑:应该注意,它似乎只发生在chrome,firefox,safari没有尝试过歌剧。

1 个答案:

答案 0 :(得分:2)

我认为这两个API并不意味着在同一页面上共存。我尝试了一个非常基本的例子,它碰巧和你的问题一样。在Chrome 5.0和Firefox 3.6.6中测试(适用于Mac):

<!DOCTYPE html>
<html> 
<head> 
  <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> 
  <title>Google Maps v2 and v3 on same page</title> 
  <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=false"
          type="text/javascript"></script>
  <script src="http://maps.google.com/maps/api/js?sensor=false" 
          type="text/javascript"></script>
</head> 
<body> 
  <div id="map_v3" style="width: 500px; height: 400px;"></div>
  <div id="map_v2" style="width: 500px; height: 400px; margin-top: 50px;"></div>

  <script type="text/javascript">

    var map3 = new google.maps.Map(document.getElementById('map_v3'), {
      zoom: 6,
      center: new google.maps.LatLng(-41.00, 174.00),
      mapTypeId: google.maps.MapTypeId.ROADMAP
    });

    var map2 =  new GMap2(document.getElementById('map_v2'));
    map2.addControl(new GLargeMapControl3D());
    map2.setCenter(new GLatLng(-41.00, 174.00), 6);
  </script>

</body>
</html>