Tak wygląda mój kod:

  1. <script type="text/javascript">
  2.  
  3. function initialize() {
  4. if (GBrowserIsCompatible()) {
  5. var map = new GMap2(document.getElementById("map_canvas"));
  6. var lat = '<?= $this->geo_lat;?>';
  7. var lon = '<?= $this->geo_long;?>';
  8. var punkt = new GLatLng(lat, lon);
  9. var marker = new GMarker(punkt, {draggable: true});
  10. var coordsform = document.getElementById("coordsform");
  11.  
  12. map.setCenter(punkt, 13);
  13. map.addOverlay(marker);
  14.  
  15. GEvent.addListener(marker, "dragend", function() {
  16. $.post("/zf/ajax/coords/", {lat: marker.getPoint().y, lon: marker.getPoint().x}, function(data){
  17. if(data != "OK") {
  18. alert("Data Loaded: " + data);
  19. }
  20. });
  21.  
  22.  
  23. });
  24. }
  25. }
  26. $(document).ready(function() {
  27. initialize();
  28. });


a tak wygląda sama mapa po załadowaniu. Nie ważne jakie dam koordynaty: marker laduje w gornym lewym rogu (zobaczyć go można po przesunięciu mapy), a pozostałe kafelki mapy dopiero po chwili i przesunięciu się ładują.



To samo w nowym FF i IE 7.

Jedyne co jest "nietypowe", to że dałem deklaracje funkcji initialize w ramach <body> i tam ją wywołuję przez jQuery po załadowaniu dokumentu, a z taga <body> wywalilem onLoad.

---

A doszedłem przed chwilą do jeszcze jednej śmiesznej rzeczy. W FF jeśli wejdę na adres w ten sposob:

strona/index.php

to faktycznie gmap ma błędy

natomiast jezeli wejde o tak:

strona/index.php#mapa

(czyli przechodząc do anchora z divem, gdzie jest mapa) to wszystko laduje sie ok. taby robione są za pomocą jQueryUI, czy jest miedzy nim a gmaps jakis konflikt?

Znalazłem rozwiązanie: wystarczało do obiektu gmap2 dodać parametr

Kod
var map = new GMap2(document.getElementById("map_canvas"),{size:new GSize(500,300)});