我正在使用OpenLayers实现一个简单的基于Web的GIS应用程序。我想将热图显示为背景图像 - 就像GoogleMaps的混合视图一样。这似乎是不可能的 - 我想要一个漂亮的地图,所以我使用OSM层 - 但图像是完全不透明的 - 所以我所能做的就是将图像(或任何其他层)覆盖在这一层之上 - 是的,我可以应用一些透明度,但当然,标签会淡出。
似乎没有办法要求OSM仅用于地砖(海洋等)然后插入我的自定义图层,然后在插入带有街道,街道名称和所有其他的OSM层的顶部插入元素。
我想,实现这一目标的唯一方法是设置我自己的OSM-TileServer并相应地进行配置?
任何想法?
先谢谢
答案 0 :(得分:1)
看起来你可以找到没有标签的osm瓷砖:http://help.openstreetmap.org/questions/1873/how-can-i-create-a-map-without-any-names-on-it
我不知道任何«仅标签»OSM tileset。(编辑:除非我更好地阅读我粘贴的链接;)
我在这里(https://alastaira.wordpress.com/2011/05/13/displaying-labels-on-top-of-bing-maps-custom-tile-layers/)发现,似乎有2个适合您需求的平铺图块。我想在OpenLayers(http://dev.openlayers.org/docs/files/OpenLayers/Layer/Bing-js.html)中设置它们应该不难。
答案 1 :(得分:0)
感谢tonio这个快速回复!
它现在与OSM一起使用 - 对于所有感兴趣的人,这是我的解决方案: (MY-MIDDLE-LAYER.KML是德国的红色半透明地图,用于测试目的)
var kml = new OpenLayers.Layer.GML("KML", "MY-MIDDLE-LAYER.KML", {
format: OpenLayers.Format.KML,formatOptions:{extractStyles:true,extractAttributes:true},alwaysInRange:true,isBaseLayer: false,opacity:50,transparent:true
});
OpenLayers.Layer.OSM.Toolserver = OpenLayers.Class(OpenLayers.Layer.OSM, {
initialize: function(name, options) {
var url = [
"http://a.www.toolserver.org/tiles/" + name + "/${z}/${x}/${y}.png",
"http://b.www.toolserver.org/tiles/" + name + "/${z}/${x}/${y}.png",
"http://c.www.toolserver.org/tiles/" + name + "/${z}/${x}/${y}.png",
"http://d.www.toolserver.org/tiles/" + name + "/${z}/${x}/${y}.png",
"http://e.www.toolserver.org/tiles/" + name + "/${z}/${x}/${y}.png",
"http://f.www.toolserver.org/tiles/" + name + "/${z}/${x}/${y}.png"
];
options = OpenLayers.Util.extend({numZoomLevels: 19}, options);
OpenLayers.Layer.OSM.prototype.initialize.apply(this, [name, url, options]);
},
CLASS_NAME: "OpenLayers.Layer.OSM.Toolserver"
});
l1=new OpenLayers.Layer.OSM.Toolserver('osm-labels-de', {isBaseLayer: false, visibility: true});
l2=new OpenLayers.Layer.OSM.Toolserver('osm-no-labels');
map.addLayers([kml,l1,l2]);
...标签在所有内容上都显示出很好的可读性。