5

Benim jQuery Mobile web uygulamasında Google Maps Javascript API3 tarafından desteklenen bir harita var. Üzerinde siyah kenarlıklı bir daire ekledim.Haritalarımın jQuery Mobile/Google Maps API3 uygulamasında neden merkezileştiriyorsunuz?

Uygulamamın bu sayfasına doğrudan harita ile giderseniz, harita dairenin ortasına doğru ortalanır.

http://goo.gl/XvLST

enter image description here

haritayla sayfaya yol tıklayın önce benim uygulamanın bu ana sayfasına (http://goo.gl/0IWgE) ve daha sonra gitmek, harita

  1. merkezlidir erringly (Harita, çemberin merkezinde ortalanmalıdır). Gri kaplı bir alanın tamamı eksik
  2. . Ben doğrudan harita ile sayfasını ziyaret eğer benim ana sayfasından harita ile sayfaya tıklayın, ancak doğru çalışırken

enter image description here

Neden haritası vefasız mı?

Harita sayfasını data-ajax='false' ile yüklemek için Ajax'ı kullanamam. Ancak, bunu yapamıyorum çünkü bir mobil uygulama ajax olmayan yüklere izin vermiyor. Chrome Web Developer konsoluna girdiğimde haritayı yeniden konumlandırıyor gibi görünüyor, ancak javascript'imde nereye arayacağımı bilmiyorum.

+0

Burada herhangi bir şey görmüyorum http://dl.dropbox.com/u/1531353/CS164/mockups/map%20askew/index.html, kötü bir şekilde hizalandığında – defau1t

+0

bir ekran görüntüsü verebilir misiniz Bu sayfadaki bağlantıya tıkladığınızda, kötü ortalanmış bir haritayı görmelisiniz. Tuhaf olarak, doğrudan http://goo.gl/XvLST adresini ziyaret ederseniz bağlantı doğru şekilde ortalanır. – dangerChihuahua007

+0

Sorunumu açıklığa kavuşturmak için ekran görüntüleri ekledim. Teşekkürler. – dangerChihuahua007

cevap

7

Sayfa ajax yoluyla yüklendiğinden (dizinden geldiğinde) - kullanmakta olduğunuz sayfa olayı muhtemelen DOM'dan önce çağrılmaktadır. Tamamen hazır GMaps, sayfanın hazır olmasını bekliyor.

pageinit dışında farklı bir etkinlik kullanmayı deneyin. (Herhangi bir animasyon bittikten sonra ishal gibi) pageshow benziyor http://jquerymobile.com/demos/1.0/docs/api/events.html

iyi biri olabilir Ya da bir pageshow durumunda, olay boyutlandırmak haritalara aramayı beklemeye başladı. Benim durumumda pageshow veya pagechange

+0

Teşekkür ederim, bunu en kısa zamanda deneyeceğim. Sadece merak, bir sayfada belirli bir eleman için tüm olayları görüntülemek için sistematik bir yolu var mı? – dangerChihuahua007

+0

Bildiğim kadarıyla değil. Tüm olayları dinlemeli ve bunları kaydetmeliydim. Ama çalışmak için var olan tüm olayları bilmeniz gerekiyor :) – barryhunter

+1

Yup 'pageinit' sayfalarınızda 'pageshow' olarak değiştirildi benim için çalıştı. – codaniel

1

Sayfa ana sayfa ile harita arasında yeniden yükleniyor mu? Değilse ve bir div oluşturuyorsanız veya yeniden boyutlandırıyorsanız, div değişikliklerinden (boyut değişikliği veya bir ekran kaldırıldıktan sonra: google.maps.event.trigger(map, 'resize')) arama yapmanız gerekir. (Olayı tetiklemek için kodu gösterecek şekilde düzenlenmiştir, @Heitor Chang)

+0

Teşekkürler, ancak bu hatayı map.resize() ile çağırdığımda alıyorum: 'Uncaught TypeError: Object # 'resize'' yöntemine sahip değil. Google Haritalar API3 referansı, bir Harita nesnesiyle ilişkili bir "resize()" yönteminden de bahsetmez. http://goo.gl/ORciv – dangerChihuahua007

+1

google.maps.event.trigger'ı deneyin (harita, 'yeniden boyutlandır')? API ref –

+0

numaralı telefondan google.maps.Map'ın "etkinlikleri" altında. Teşekkürler, hangi işlevlerimde bunu çağırmam gerektiğini düşünüyorsunuz? 'AddCircle() 'de hiçbir boşuna çağırmayı denedim. – dangerChihuahua007

0

Çağrı google.maps.event.trigger(mapObj, "resize");, benim geçici çözüm $('#mapdiv').trigger('create'); iyi çalışıyor. ama diğer durumlarda bunun işe yaradığını bilmiyorum.

İlgili konular