7

Hey, ich habe ein Problem/Fehler beim Versuch, eine v3 und v2 Google Maps auf der Seite zur gleichen Zeit zu haben.Kann das v2- und v3-Google Maps-API auf derselben Seite koexistieren?

Der Kern unserer Anwendung verwendet v2 der API und einige neue Funktionen hinzugefügt, wir entschieden uns, v3 der API zu verwenden, seit v2 veraltet ist. Also lade ich die Version v3 der API dynamisch in einem anderen "Tab" der Anwendung.

Das Problem ist, wenn Sie auf die Karte v3 klicken und dann auf die Karte v2 klicken, beginnt die v2-Karte mit dem Mauszeiger so, als ob Sie geklickt hätten, um zu ziehen, aber nie die Maustaste losgelassen. Und im Grunde Fehler aus, bis Sie die Seite neu laden

Heres ein Beispiel, mit einfachen Anweisungen, wie http://jsbin.com/googlemapv3v2/1

Die seltsame Sache zu replizieren, wenn Sie klicken/mit der v2 Karte spielen, um zuerst klicken Sie dann auf/rumspielen mit der v3 map funktioniert alles gut.

Also habe ich versucht, es durch Brennen benutzerdefinierten Klick/mousedown- Ereignisse auf der v2 Karte „austricksen“, sobald die v3 api geladen wird sehen http://jsbin.com/googlemapv3v2/2

Aber nein es Glück, jemand irgendwelche Ideen hat?

BEARBEITEN: Sollte beachten, es scheint nur in Chrom, Firefox, Safari versucht nicht versucht Oper.

+0

Wenn Sie die Karten genau nach rechts ausrichten, sieht es so aus, als würden Sie eine Karte ziehen, die über zwei divs passt. –

Antwort

2

Ich glaube nicht, dass die beiden APIs auf der gleichen Seite koexistieren sollen. Ich habe ein sehr einfaches Beispiel ausprobiert, bei dem das selbe Problem auftritt. Getestet in Chrome 5.0 und Firefox 3.6.6 (beide für 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> 
+0

Das Seltsame ist, dass sie koexistieren, wenn du zuerst mit der v2-Karte interagierst. – Okeydoke

+0

Ja, bemerkte das :) –

+4

Ich war ein Sydney Google Dev-Fest und fragte einen Googler diese Frage. Ich kann bestätigen, dass sie nicht darauf ausgelegt sind, auf derselben Seite zu existieren. – RedBlueThing