Google Maps V3'te sürükleme ataletini devre dışı bırakmanın bir yolu var mı? MapOption olması gerektiği gibi görünüyor, ancak bunu yapmanın bir yolunu bulamıyorum.Google Haritalar'da sürüklenme ataletini/momentini devre dışı bırak V3
cevap
Bu, şu anda Maps API V3 ile yapılamıyor. Burada bir özellik isteğinde bulunmadan düşünün: Bazı özel Div yüzer Harita Hareketi üzerinde yeniden konumlandırılan gerek harita üzerinde olan, bugün bu aynı sorun koştu
. Yeniden konumlandırmam, kullanıcı farenin gitmesine izin vermeden önce sürüklendikten sonra tam bir duraklamaya geldiği sürece gayet iyi çalıştı (yani momentum olmayacaktı), ancak eğer hızlı bir şekilde sürüklendiyse ve divun serbest kalması biraz daha sona erecekti.
Bunu düzeltmek için, ben sürükleme olayı ve boşta olay girdiklerini:
var map = /* All the map config */
var stickyCenter = map.getCenter();
/* ... Code ... */
google.maps.event.addListener(map, 'drag', function(){ stickyCenter = map.getCenter(); });
google.maps.event.addListener(map, 'idle', function() { map.setCenter(stickyCenter); });
ne olur sen sürükledi ve sonra harita tamamen durduğu olmasıdır (momentumun yapıldıktan sonra) harita 'yerine oturdu'. yaslama çok ani olursa
, biri muhtemelen panto olabilir veya bir şekilde hareket animasyon. Umarım bu yardımcı olur, mükemmel değildir, ancak bir sürükleme olayından gelen ivmeyi tersine çevirmenin bir yolu.
v3'ten itibaren, "dragend" ve "boşta" olayları arasındaki süreyi hesaba katacak olan "center_changed" etkinliğine bağlanabilirsiniz. https://developers.google.com/maps/documentation/javascript/events –
@DevinMcInnis Haklısınız. Bu, google kodunda açık olan sorun hakkında da tartışılmıştır: https://code.google.com/p/gmaps-api-issues/issues/detail?id=3543&q=idle&colspec=ID%20Type%20Status%20Introduced% 20Fixed% 20Summary% 20Stars% 20ApiType% 20Internal Özellikle: "Bu kullanım şekli bir kez' dragend' olay tetiklenir bir 'idle' dinleyicisi ekleyerek çözülebilir boşta olay yangınlar haritası dinlenmeye kez geldiğinde.. Bindirmeyi konumlandırmak için, 'drag'' yerine 'bounds_changed' veya 'center_changed' komutunu kullanın – EdgeCaseBerg
En azından momentumu tersine çevirmenin mümkün olduğuna eminim. Birileri lütfen yanılıyorsam beni düzeltin! Kolaylık olması açısından, örneğin, en haritanız konteyner 100vw
bir width
ve 100vh
bir height
sahiptir diyelim. mouseup
olayı tarafından çağrılan bir işlevde getCenter()
'u arayın ve sonra bu koordinatları hemen setCenter()
için kullanın?
function initMap(){
...
var win = window;
google.maps.event.addDomListener(win, 'mouseup', setCoords);
function setCoords(){
var x = myMap.getCenter();
var lat = x.lat();
var lng = x.lng();
myMap.addListener('center_changed', function(lat, lng){
myMap.setCenter(new google.maps.LatLng(lat, lng));
};
};
aslında Yukarıdaki kod çalışır, ama vurucu tarayıcı görünüşte aşırı yüklü hale gelene kadar sadece bir kez çalıştığını ve hatayı Yakalanmayan RangeError üretir: Maksimum çağrı yığını boyutu aştı.
Şimdi ne yapılacağından emin değilsiniz.
Daha fazla bilgi için bu here.
center_changed dinleyicisi, center_changed olayını başlatan ve sonsuz bir döngü oluşturan harita merkezini ayarlar – geocodezip
@geocodezip Yanıtladığınız için teşekkürler. haklısın, bunu biraz önce fark ettim: Komik olan şey, 'myMap.addListener ...' eklemeden kusursuz çalışmasını bekleyeceksin, ama değil, kod varmış gibi çalışıyor. Lütfen diğer konu başlığına bakın http://stackoverflow.com/questions/39626454/functions-uncaught-rangeerror-maximum-call-stack-size-exceeded-with-google-m –
Bu hiçbir çözüm ile bilinen bir sorun olduğunu tahmin belgesiz seçeneği disablePanMomentum
ör .:
new google.maps.Map(document.getElementById(id), {
disablePanMomentum: true,
backgroundColor: 'none',
disableDefaultUI: true,
center: {
lat: 40.674,
lng: -73.945
},
zoom: 2,
...
Güzel olanı. nasıl bulduğunuzu merak ettiniz –
@PedroAdameVergara Geniş kapsamlı tersine mühendislik veya bazı temel regex becerileri.Ayrıca, – Orwellophile
@ orwellophile Bunu bulmak için regex kullanırım? Bilmek isterim, şerefe –
- 1. devre dışı bırak animasyonlar
- 2. Google Chrome’da JavaScript önbelleğini devre dışı bırak
- 3. Devre dışı bırak System.err
- 4. devre dışı bırak fare
- 5. jqGrid: Sıralamayı devre dışı bırak
- 6. Treeview'de SelectedImageIndex'i devre dışı bırak
- 7. AngularCli: incelemesi devre dışı bırak
- 8. groovy.xml.MarkupBuilder'i devre dışı bırak PrettyPrint
- 9. Yığın görevini devre dışı bırak
- 10. devre dışı bırak 'pause' pencerelerinde
- 11. Tümü devre dışı bırak UIView
- 12. Android haritalarda v3 küme küme nasıl uygulanır?
- 13. Jhipster: devre dışı bırak iletişim kutusunu kapatın
- 14. Google Maps V3: Tuval İşaretleyicilerini Devre Dışı Bırakma
- 15. Google Maps V3: "Sokak Görünümü" nasıl devre dışı bırakılır?
- 16. VS2010 xaml içinde anahatlamayı devre dışı bırak (veya tamamen anahatlarını devre dışı bırak)
- 17. jQuery .toggle() yöntemini devre dışı bırak
- 18. Knockout devre dışı bırak seçenek seçeneği altyazısı
- 19. istekleri: otomatik kod çözmeyi devre dışı bırak
- 20. devre dışı bırak bütün ses efektleri Android
- 21. devre dışı bırak derleme 2008 Proje
- 22. AndroidStudio'da C++ hata ayıklayıcısını devre dışı bırak
- 23. UIMenuItem otomatik seçiciyi devre dışı bırak yöntem
- 24. DOMMouseScroll fare tekerini etkinleştir/devre dışı bırak
- 25. Mobil cihazlarda Affix'i devre dışı bırak
- 26. Emberjs - TextField'ı Devre Dışı Bırak ve Etkinleştir
- 27. Restkit, önbelleğe almayı devre dışı bırak
- 28. sözdizimi - Java'nın otomatik derlenmesini devre dışı bırak
- 29. Tran proxy yapılandırmasında https devre dışı bırak
- 30. Jquery metin kutusu değeri devre dışı bırak
kullanılsın mı? – pixelfreak