Javascript KML图层渲染顺序谷歌地图
我注意到以下API有一些不同的行为Javascript KML图层渲染顺序谷歌地图,javascript,google-maps,kml,jak,Javascript,Google Maps,Kml,Jak,我注意到以下API有一些不同的行为 <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script> 有时多边形层渲染气球层的顶部,有时则相反 似乎在浏览器中“缓存”贴图后,它将使用多边形层ontop进行渲染。有没有办法防止这种情况发生?还是让一层始终处于背景中?不幸的是,我无法在一个kml中映射这些层 我已经让它工作了 将以下两个参数添加到标记层: p
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
有时多边形层渲染气球层的顶部,有时则相反
似乎在浏览器中“缓存”贴图后,它将使用多边形层ontop进行渲染。有没有办法防止这种情况发生?还是让一层始终处于背景中?不幸的是,我无法在一个kml中映射这些层 我已经让它工作了 将以下两个参数添加到标记层:
pane: "floatPane",
preserveViewport: true
看起来是这样的:
var ctaLayer2 = new google.maps.KmlLayer({
url: 'https://sites.google.com/site/gmaptest123/kml/HelloKml6.kml',
pane: "floatPane",
preserveViewport: true
});
我相信默认的是mapPane,它的z索引比floatPane低 层按从服务器接收的顺序渲染(不一定是它们在代码中出现的顺序)。在设置第二个的map属性之前,可以通过等待Kmlayer status_changed事件来强制一个接着一个加载
function initialize() {
var chicago = new google.maps.LatLng(-122.365662,37.826988);
var mapOptions = {
zoom: 11,
center: chicago
}
var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
var ctaLayer = new google.maps.KmlLayer({
url: 'https://sites.google.com/site/gmaptest123/kml/nst.kml'
});
google.maps.event.addListener(ctaLayer, "status_changed", function() {
ctaLayer2.setMap(map);
});
ctaLayer.setMap(map);
var ctaLayer2 = new google.maps.KmlLayer({
url: 'https://sites.google.com/site/gmaptest123/kml/HelloKml6.kml'
});
}
google.maps.event.addDomListener(window, 'load', initialize);
在这方面有一个有趣的方法。以下是实际订购代码:
// BEGIN SEQUENTIAL KML LOADING CODE
// This ensures the layers are drawn in order: cone, warnings, track
// Draw coneLayer
coneLayer.setMap(map);
// Listen for when coneLayer is drawn
var listener1 = google.maps.event.addListener(coneLayer, 'metadata_changed', function() {
// When it's drawn (metadata changed), clear listener, draw warningsLayer ...
google.maps.event.clearListeners(coneLayer, 'metadata_changed');
warningsLayer.setMap(map);
// .. and listen for when warningsLayer is drawn
var listener2 = google.maps.event.addListener(warningsLayer, 'metadata_changed', function() {
// When it's drawn, clear listener, draw trackLayer ...
google.maps.event.clearListeners(warningsLayer, 'metadata_changed');
trackLayer.setMap(map);
// ... and listen for when trackLayer is drawn
var listener3 = google.maps.event.addListener(trackLayer, 'metadata_changed', function() {
// When it's drawn, clear listener and blank out the map-loading sign
google.maps.event.clearListeners(trackLayer, 'metadata_changed');
$('#loadingIndicator').html("");
});
});
});
// END SEQUENTIAL KML LOADING CODE
感谢您,在最初的测试中,似乎使标记呈现在前面。我需要看看API来了解发生了什么。谢谢你的努力。嘿,我很欣赏你的评论。然而,这似乎产生了同样的行为。看看我最新的小提琴。你不想要底部有多边形的图层吗?啊,是的。我意识到代码现在在做什么。我需要把我想要的渲染到最后!谢谢请注意,真正的解决方案是API提供对的相对控制,而不是控制添加层的顺序。是的,我同意。我看到了2010年谷歌的一个增强请求,但至今没有任何结果。我希望我能有更多的经验,这样我就可以投票支持你所有的评论……(你想方设法帮我的忙