2016-08-04 17 views
0

Ich arbeite an einem Projekt, das die Google Maps API verwendet. Ein Merkmal, das Benutzer haben sollen, ist die Fähigkeit, einen Marker mit einem langen Drücken/Klicken hinzuzufügen, aber nur dann, wenn sich die Karte nicht bewegt hat (d. H. Das Zentrum ist gleich geblieben).Javascript, um zu überprüfen, ob das Zentrum der Karte verschoben hat funktioniert nicht auf Handy

Dazu habe ich einen Event-Listener für ein mousedown -Ereignis, das den aktuellen Mittelpunkt erhält und einen Timeout startet. Wenn das Zeitlimit abgelaufen ist, ohne dass es freigegeben wird, ruft es eine Funktion auf, die zuerst den aktuellen Mittelpunkt der Karte mit dem am Anfang des Ereignisses eingestellten vergleicht, wenn sie denselben Marker setzen, sonst nichts tun.

Das funktioniert gut auf meinem Desktop, aber liest immer die Zentren als die gleichen auf meinem Handy und ich kann nicht herausfinden, warum.

Irgendwelche Ideen, warum dies auf dem Desktop funktioniert, aber nicht auf dem Handy?

Antwort

1

sollten Sie

abfangen
google.maps.event.addListener(map, 'center_changed', function(){ 
    // set a global var for avoid the adding of the marker 
}); 
+0

Danke für die schnelle Antwort! Ich habe das hinzugefügt, aber es funktioniert immer noch nur auf dem Desktop. Ich kann es nicht genau sagen, aber ich bin mir nicht sicher, ob die Google Maps-API eine Änderung in der Mitte registriert, bis Sie Ihren Finger für das Handy freigeben, obwohl er sofort auf dem Desktop registriert wird – SomeSchmo

0

So scheint es, die Google Maps API ein wenig eingängig ist, wenn es vs Desktop auf mobile kommt. Für den Desktop wird eine Änderung in der Mitte registriert, sobald die Karte verschoben wird. Sie wird jedoch erst registriert, nachdem Sie Ihren Finger für das Handy gehoben haben. Um dies zu umgehen ich ein ‚drag‘ Zuhörer am Ende mit, da ich, dass sofort auf beiden Plattformen

sameCenter = true; 
google.maps.event.addListener(map, 'drag', function(){ 
    sameCenter = false; 
}); 

Dank @scaisEdge für die Idee registrieren ist.