2010-11-09 35 views
0

我正在使用Google Maps API 3顯示加拿大的谷歌地圖和一堆標記,但在IE7/8中並未顯示根本就給了我一個灰色的矩形。它可以在Firefox/Chrome/Opera/IE9中正常加載。Google地圖不會出現在IE7/8中(但適用於IE9)

下面是代碼:

$(document).ready(function() { 
    var browserSupportFlag = new Boolean(); 
    var map; 
    geocoder = new google.maps.Geocoder(); 
    var myOptions = { 
     zoom: 3, 
     mapTypeId: google.maps.MapTypeId.ROADMAP, 
     navigationControl: true, 
     mapTypeControl: true, 
     scaleControl: true, 
     streetViewControl: true, 
     navigationControlOptions: { 
      style: google.maps.NavigationControlStyle.ZOOM_PAN 
     }, 
     mapTypeControlOptions: { 
      style: google.maps.MapTypeControlStyle.DROPDOWN_MENU 
     } 
    }; 
    //var bounds = new GLatLngBounds(); 
    map = new google.maps.Map(document.getElementById("dealer-map"), myOptions); 

    if (navigator.geolocation) { 
     browserSupportFlag = true; 
     navigator.geolocation.getCurrentPosition(function(position) { 
      currentLocation = new google.maps.LatLng(position.coords.latitude, 
                position.coords.longitude); 
      contentString = "Location found using W3C standard"; 
      map.setCenter(currentLocation); 
     }, function() { 
     }); 
    } 
    var geoXml = new geoXML3.parser({ map: map }); 
    geoXml.parse('<?php echo "/dealers.php"; ?>'); 

});  

並採用進口:

<script type="text/javascript" src="http://maps.google.com/maps/api/js?v=3.1&sensor=false&region=CA"></script> 

的HTML/CSS是:

<div class="main-content"> 
<div class="wide-content"> 
<h3>Find a Dealer</h3> 
<div style="width: 800px; height: 330px;" id="dealer-map"></div> 
</div> 
</div> 

任何想法可能是錯誤的?

+0

包括完整的html和你的CSS。如果您不給div的寬度/高度,Google地圖將顯示失敗。在這種情況下,您仍然可以看到對v1.maps.google.com的HTTP請求。 – Drew 2010-11-09 22:16:40

+0

添加了HTML/CSS – adamzwakk 2010-11-09 22:26:17

+0

您是否在IE8/7或IE9兼容模式下運行。我的GMaps API3地圖在IE8/7兼容模式下也不起作用。事實上,目前在IE9中,這些模式中很少有工作。 – Drew 2010-11-09 22:30:38

回答

3

實際上很簡單,您需要在所有情況下都執行setCenter,否則會顯示一個灰色框。

if(navigator.geolocation) { 
    ... 
} else { 
    map.setCenter(new google.maps.LatLng(34,-83)); 
} 

試一下,看看它的工作現在。

+0

太棒了!這工作!謝謝! – adamzwakk 2010-11-09 22:56:42

+0

給他一個投票在那裏的傢伙! – 2010-11-09 22:59:27

0

我的猜測是navigator.geolocation.getCurrentPosition函數中的空函數。

navigator.geolocation.getCurrentPosition(function(position) { 
     currentLocation = new google.maps.LatLng(position.coords.latitude, 
               position.coords.longitude); 
     contentString = "Location found using W3C standard"; 
     map.setCenter(currentLocation); 
     /*infowindow.setContent(contentString); 
     infowindow.setPosition(currentLocation); 
     infowindow.open(map);*/ 
    }, function() { // <<< empty function may fubar ie 
    }); 

嘗試沒有空的功能,如下圖所示。只是在黑暗中進行刺探,卻沒有實際的聯繫,直接發現問題。

navigator.geolocation.getCurrentPosition(function(position) { 
    currentLocation = new google.maps.LatLng(position.coords.latitude, 
               position.coords.longitude); 
     contentString = "Location found using W3C standard"; 
     map.setCenter(currentLocation); 

}); 
+0

是的,我看到後,我張貼在這裏。但沒有解決任何問題。儘管謝謝! – adamzwakk 2010-11-09 22:21:54

+0

嘗試註釋掉除地圖實例化代碼以外的所有額外代碼(getCurrentPosition函數和那個geoXML東西)。如果地圖只加載了基本的通話,那麼你知道它是其中的一個功能。 – 2010-11-09 22:28:02

+0

用JUST運行它「var map = new google.maps.Map(document.getElementById(」dealer-map「));」仍然沒有生產。 – adamzwakk 2010-11-09 22:35:26

相關問題