2010-09-14 82 views
4

我在設置基於地址的標記的網站上有Google地圖。Google Maps API未將標記居中

下面是一個例子(點擊位置選項卡):http://www.weddinghouse.com.au/wedding-directory/zoning-in-personal-training/

正如你可以看到有在地圖上沒有標記。但是,如果向上滾動,標記就坐在視線之外。

我的代碼有問題嗎?奇怪的事情是很少地址實際顯示正確,但大多數沒有。我的代碼有問題嗎?還是Google?

這裏是我的JavaScript代碼:

<script type="text/javascript"> 
$(document).ready(function(){ 
    load('Zoning In Personal Training', '27 Sitella Drive, berwick, VIC, 3806'); 
}); 
</script> 

-

function load(title, address, type) { 
    if (GBrowserIsCompatible()) { 
     var map; 
     var geocoder; 

     map_id = document.getElementById("map"); 
     map = new GMap2(map_id); 
     map.addControl(new GSmallMapControl()); 
     map.setCenter(new GLatLng(24, 0), 17); 
     map.enableDoubleClickZoom(); 

     if (type == 'sat') { 
      map.setMapType(G_SATELLITE_MAP); 
      map.addControl(new GHierarchicalMapTypeControl()); 
     } else { 
      map.setMapType(G_NORMAL_MAP); 
     } 

     geocoder = new GClientGeocoder(); 
     geocoder.getLocations(address, function (response) { 
      map.clearOverlays(); 
      if (!response || response.Status.code != 200) { 
       //map_id.innerHTML('Could not find address on Google Maps'); 
      } else { 
       place = response.Placemark[0]; 
       point = new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]); 

       map.setCenter(point, 17); 

       // Create our "tiny" marker icon 
       var icon = new GIcon(); 
       icon.image = "http://labs.google.com/ridefinder/images/mm_20_red.png"; 
       icon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png"; 
       icon.iconSize = new GSize(12, 20); 
       icon.shadowSize = new GSize(22, 20); 
       icon.iconAnchor = new GPoint(6, 20); 
       icon.infoWindowAnchor = new GPoint(5, 1); 

       // Creates one of our tiny markers at the given point 
       function createMarker(point, index) { 
        var marker = new GMarker(point, icon); 
        var myMarkerContent = "<div style=\"width:200px; overflow:auto;\"><strong>" + title + "</strong><br />" + address + "</div>"; 
        map.addOverlay(marker); 
        marker.openInfoWindowHtml(myMarkerContent); 
        GEvent.addListener(marker,"click",function() { 
        marker.openInfoWindowHtml(myMarkerContent); 
        }); 
       } 
       createMarker(point); 
      } 
     }); 
    } 
} 
+0

我看到一個標記標記在地圖的中心......不關閉屏幕? – Ken 2010-09-14 01:02:38

+0

也適合我。 – RedBlueThing 2010-09-14 01:12:27

回答

5

如果您加載的頁面在谷歌地圖,然後點擊「鏈接」功能,它可以讓你的代碼嵌入網站作爲一個iFrame而不是搞亂API - 你可以試試這個嗎?

這也有一個錯誤,有時標記不居中,特別是在隱藏的div。解決這個問題的最佳方法是將Google地圖的iFrame放入單獨的文件(例如pages/map.html)中,然後在頁面中將iFrame的源代碼放入。

EG-代替IFRAME SRC =「maps.google.com/等等等等」 它作爲SRC =「頁/ map.html」

無論如何,這個職位是6個月大,但比晚好決不!

0

對我來說,問題是當地圖加載時,iframe的大小爲0(display:hidden)。我添加了一個延遲,加載了iframe後加載地圖。這種競爭條件可以解釋爲什麼某些地址可以正確顯示。

也許試試這個:

<script type="text/javascript"> 
    $(document).ready(function(){ 
    setTimeout("delayedLoad()",100); 
    }); 
    function delayedLoad() { 
    load('Zoning In Personal Training', '27 Sitella Drive, berwick, VIC, 3806'); 
    } 
</script> 

(感謝https://groups.google.com/forum/#!topic/google-maps-api/nN0y2pSr2dQ