当我通过浏览器测试我的网站并在Safari中尝试它时,我的仪表板中的此错误无处不在。它适用于Chrome,Firefox和IE9,但在Safari中:
这是错误,我不知道这发生在哪里
InvalidValueError: setMap: not an instance of Map, and not an instance of StreetViewPanorama main:25
这是Initialize函数:
var map;
function initialize() {
geocoder = new google.maps.Geocoder();
geocode = new google.maps.Geocoder();
LatLang = new google.maps.LatLng(38.50, -90.50);
var addresse = {
zoom: 4,
center: LatLang,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById('map'), addresse);
// Bounds for North America
var strictBounds = new google.maps.LatLngBounds(
new google.maps.LatLng(15.70, -160.50),
new google.maps.LatLng(68.85, -55.90));
// Listen for the dragend event
google.maps.event.addListener(map, 'dragend', function () {
if (strictBounds.contains(map.getCenter())) return;
// We're out of bounds - Move the map back within the bounds
var c = map.getCenter(),
x = c.lng(),
y = c.lat(),
maxX = strictBounds.getNorthEast().lng(),
maxY = strictBounds.getNorthEast().lat(),
minX = strictBounds.getSouthWest().lng(),
minY = strictBounds.getSouthWest().lat();
if (x < minX) x = minX;
if (x > maxX) x = maxX;
if (y < minY) y = minY;
if (y > maxY) y = maxY;
map.setCenter(new google.maps.LatLng(y, x));
});
// Limit the zoom level
google.maps.event.addListener(map, 'zoom_changed', function () {
if (map.getZoom() < minZoomLevel) map.setZoom(minZoomLevel);
});
}
答案 0 :(得分:-1)
你需要了解一些徒步旅行,并且javascripts夸耀解决这个问题。
var t = 5;
var t
console.log(t) //undefined in chrome, firefox, etc. But 5 in safari.
您还应该知道,在新的html5规范中,如果您有类似<div id="map"></div>
的内容,则会创建全局变量map
或window.map
在您的代码中,我看到您将map
定义为全局变量(可能在那里进行调试)。
如果在呈现<body>...</body>
之后运行此脚本,其中包含<div id="map"></div>
,window.map
或(全局map
)初始化为"<div id="map"></div>"
,以及何时您再次在Safari中声明var map
,map
变为<div id="map"></div>
,在其他浏览器中变为undefined
。
这是错误的原因。要解决此问题,请将id更改为map
以外的其他内容,或者将此声明为全局变量时执行var map = "";
。或者,在正文之前运行脚本。