我正在使用谷歌地图API 3来显示加拿大的谷歌地图和一堆标记,但在IE7 / 8中,它根本没有显示,只是给了我一个灰色的矩形。它在Firefox / Chrome / Opera / 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®ion=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 :(得分:3)
实际上,您需要在所有情况下都执行setCenter,否则会显示一个灰色框。
if( navigator.geolocation ) {
...
} else {
map.setCenter( new google.maps.LatLng(34,-83) );
}
试一试,看看它现在是否有效。
答案 1 :(得分: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);
});