我正在尝试创建一个OpenLayers地图,该地图仅显示没有基本地图或底层图块层的KML图层。
KML图层将是室内地板图,但它不需要位于特定坐标位置的现有地图之上。我只需要自己显示楼层地图,而不需要其他地图。我还想设置平移限制,以便用户无法远离地图。
下面是我用来在现有基本地图上成功显示KML图层的一些代码。我尝试了很多东西试图让KML层自己显示,但无济于事。
任何人都可以帮忙解决这个问题,或者告诉我需要使用下面的代码更改什么才能自行显示KML?
var vector = new ol.layer.Vector({
source: new ol.source.Vector({
url: MAPS_URL + 'map1.kml',
format: new ol.format.KML()
})
});
var map = new ol.Map({
target: 'map',
layers: [
new ol.layer.Tile({
source: new ol.source.MapQuest({layer: 'sat'})
}),
vector
],
view: new ol.View({
center: ol.proj.transform([37.41, 8.82], 'EPSG:4326', 'EPSG:3857'),
zoom: 2
})
});
map.addLayer(vector);
谢谢!
答案 0 :(得分:1)
a la:
var vector = new ol.layer.Vector({
source: new ol.source.Vector({
url: MAPS_URL + 'map1.kml',
format: new ol.format.KML()
})
});
var map = new ol.Map({
target: 'map',
layers: [vector],
view: new ol.View({
center: ol.proj.transform([37.41, 8.82], 'EPSG:4326', 'EPSG:3857'),
zoom: 2
})
});
map.addLayer(vector);
答案 1 :(得分:0)
您是否检查过是否可以阅读KML文件?可能存在CORS问题。
我建议使用AJAX调用加载KML,然后使用ol.format.KML读取这些功能并将其添加到源代码。
sourceVector = new ol.source.Vector();
layerVector = new ol.layer.Vector({
source: sourceVector
});
formatKML = new ol.format.KML({extractStyles: false});
$.ajax('http://storage.googleapis.com/dbauszus-file-bucket/rtmLmpHg.kml',{
type: 'GET',
contentType: 'application/vnd.google-earth.kml+xml',
success : function(response) {
features = formatKML.readFeatures(response,{
dataProjection: 'EPSG:4326',
featureProjection: 'EPSG:3857'
});
sourceVector.addFeatures(features);
}
});
如果您无法读取此类文件,请在Firebugz NET选项卡中查看CORS问题。