Google maps Google Maps KMZ文件未在IE8和IE7中呈现
我有一个带有地图的web应用程序。我添加了一个很好的自定义贴图控件,用于打开和关闭贴图上的不同图层。目前只有两个层,在大多数浏览器中都运行良好 除了IE8+7。启用时,地图上不会显示任何图层。据我所知,地图正在加载kmz/kml文件(当preserveViewport设置为false时,地图将移动到正确的位置),但它们只是没有出现。一个图层包含多段线,另一个图层包含标记。我使用的代码如下:Google maps Google Maps KMZ文件未在IE8和IE7中呈现,google-maps,internet-explorer-8,internet-explorer-7,kml,kmz,Google Maps,Internet Explorer 8,Internet Explorer 7,Kml,Kmz,我有一个带有地图的web应用程序。我添加了一个很好的自定义贴图控件,用于打开和关闭贴图上的不同图层。目前只有两个层,在大多数浏览器中都运行良好 除了IE8+7。启用时,地图上不会显示任何图层。据我所知,地图正在加载kmz/kml文件(当preserveViewport设置为false时,地图将移动到正确的位置),但它们只是没有出现。一个图层包含多段线,另一个图层包含标记。我使用的代码如下: function someFunction() { //code to initialise ma
function someFunction() {
//code to initialise map etc goes here...
var layers = [];
//Create 1st layer
var exchangeslayer = new google.maps.KmlLayer('http://link.to.file/exchanges.kmz'
suppressInfoWindows: true,
preserveViewport: true
});
layers.push({name: "Exchanges", layer: exchangeslayer});
//Code to create second layer
var nyclayer = new google.maps.KmlLayer('http://www.nyc.gov/html/dot/downloads/misc/cityracks.kml'
suppressInfoWindows: true,
preserveViewport: false
});
layers.push({name: "NY City Tracks", layer: nyclayer});
addCustomLayerControls(layers);
}
function addCustomLayerControls(layers) {
//there is code here that would generate the divs for the custom map control
var container; //container is a div element created via javascript
for (var i = 0; i < layers.length; i++) {
this.addLayerLabelToContainer(layers[i], container);
}
//some more code
}
function addLayerLabelToContainer(layer, container) {
var map; //Assume I get a reference to the map
//some code here to make pretty labels for the map controls...
var layerLabel; // layerLabel is a div element created via javascript
google.maps.event.addDomListener(layerLabel, 'click', function() {
if(layer.layer.map == null) {
layer.layer.setMap(map);
} else {
layer.layer.setMap(null);
}
});
}
function someFunction(){
//初始化地图等的代码在这里。。。
var层=[];
//创建第一层
var exchangeslayer=new google.maps.KmlLayer('http://link.to.file/exchanges.kmz'
suppressInfoWindows:对,
保存视口:true
});
layers.push({name:“Exchanges”,layer:exchangeslayer});
//创建第二层的代码
var nyclayer=new google.maps.KmlLayer('http://www.nyc.gov/html/dot/downloads/misc/cityracks.kml'
suppressInfoWindows:对,
保存视口:false
});
layers.push({name:“纽约城市轨道”,layer:nyclayer});
添加自定义图层控件(图层);
}
函数addCustomLayerControl(层){
//这里有一些代码可以为自定义映射控件生成div
var container;//container是通过javascript创建的div元素
对于(变量i=0;i
如果您像这样修改addLayerLabelToContainer(),那么它将在IE中正常工作。已验证其在IE 8和9中正确加载KMZ
function addLayerLabelToContainer(layer, container) {
// var map; //Assume I get a reference to the map
//some code here to make pretty labels for the map controls...
var layerLabel; // layerLabel is a div element created via javascript
if(layer.layer.map == null) {
layer.layer.setMap(map);
} else {
layer.layer.setMap(null);
}
}
不需要调用addDomListener()。还请注意:
还对someFunction中的语法错误进行了如下小修复:
function someFunction() {
// var map; //assume map is initialised, I've just removed that code
var layers = [];
// see https://developers.google.com/maps/documentation/javascript/layers
//Create 1st layer
var exchangeslayer = new google.maps.KmlLayer(
'http://kml-samples.googlecode.com/svn/trunk/kml/kmz/simple/big.kmz',
{ suppressInfoWindows: true, preserveViewport: true
});
layers.push( {name: "Exchanges", layer: exchangeslayer} );
// ...
addCustomLayerControls(layers);
}
因此,事实证明我的问题与CSS有关。我的一个样式表将
最大宽度:100%
应用于所有img标记。这是在玩弄地图标记/多段线
我现在明白了,但当你认为问题与javascript有关时,就不那么明显了。因此,我将把这个答案留给其他犯同样错误的人。在发现任何kml/kmz文件都出现此错误后编辑了我的原始问题。Kmlayer.getStatus()是否告诉您有用的信息?@geocodezip getStatus()每次都返回“OK”,但是地图上仍然没有显示任何东西,所以我只是注意到当我将光标悬停在kml层应该渲染的区域上时,光标会发生变化。对我来说,这表明它们已添加到地图中,但只是不可见。是否有方法更改可见性?是否使用“兼容性视图”?来自“*不支持Internet Explorer的兼容性视图”。addLayerLabelToContainer()用于向屏幕添加一个div,单击该div将添加/删除该层。我现在意识到,当我复制代码时,它有点混乱。我的问题已经解决了。
function someFunction() {
// var map; //assume map is initialised, I've just removed that code
var layers = [];
// see https://developers.google.com/maps/documentation/javascript/layers
//Create 1st layer
var exchangeslayer = new google.maps.KmlLayer(
'http://kml-samples.googlecode.com/svn/trunk/kml/kmz/simple/big.kmz',
{ suppressInfoWindows: true, preserveViewport: true
});
layers.push( {name: "Exchanges", layer: exchangeslayer} );
// ...
addCustomLayerControls(layers);
}