2012-04-24 85 views
2

我正在使用OpenLayers实现一个简单的基于Web的GIS应用程序。我想将热图作为背景图像显示 - 就像GoogleMaps的混合视图一样。这似乎是不可能的 - 我想要一个漂亮的地图,所以我使用OSM层 - 但图像是完全不透明的 - 所以我所能做的就是在这一层上覆盖一个图像(或任何其他图层)是的,我可以申请一些透明度,但当然,标签会淡出。使用OpenLayers从OSM获得透明瓷砖

似乎没有一种方法要求OSM仅用于地面贴图(海洋等),那么插入我的自定义图层,然后插入带有街道,街道名称和所有图层的OSM层其他元素。

我想,完成这个的唯一方法是设置我自己的OSM-TileServer并相应地进行配置?

任何想法?

由于提前

+0

操作系统...什么?嗯..:| – 2012-04-24 13:16:09

+0

OSM是OpenLayers中的OpenStreetMaps名称 – Fluchtpunkt 2012-04-24 13:22:46

+0

您的想法似乎是最好的方法,除非您可以在已经完成的工作中找到商业瓷砖。 – 2012-04-24 13:56:32

回答

1

看起来你可以找到OSM瓷砖无标签:http://help.openstreetmap.org/questions/1873/how-can-i-create-a-map-without-any-names-on-it

我不知道任何«标签只能»OSM地形设置的。(编辑:除了我读得更好的链接我粘贴;))

我在这里找到(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)中设置它们不应该那么困难。

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]); 

。 ..和标签看起来很好,可读性高于一切:)