2

私はOpenLayersを使用して単純なWebベースのGISアプリケーションを実装しています。GoogleMapsのハイブリッドビューのように、ヒートマップを背景画像として表示したいと思います。これは不可能のようです-見栄えの良い地図が欲しいので、OSM-Layerを使用しています-しかし、画像は完全に不透明です-したがって、私にできることは、このレイヤーの上に画像(または他のレイヤー)をオーバーレイすることだけです-はい、ある程度の透明度を適用できますが、もちろん、ラベルはフェードアウトします。

OSMにグラウンドタイル(海など)のみを要求する方法はないようです。次に、カスタムレイヤーを挿入し、その上に、通り、通りの名前、その他すべての要素を含むOSMレイヤーを挿入します。

これを実現する唯一の方法は、独自のOSM-TileServerをセットアップし、それに応じて構成することだと思います。

何か案は?

前もって感謝します

4

2 に答える 2

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 つの bing タイル セットがあるようです。それはあなたのニーズに合うでしょう。OpenLayers ( http://dev.openlayers.org/docs/files/OpenLayers/Layer/Bing-js.html )でそれらをセットアップするのはそれほど難しくないと思います。

于 2012-04-24T14:17:21.610 に答える
0

トニオさん、素早い返信ありがとうございます!

それは現在 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]);

...そして、ラベルは何よりも読みやすく表示されます:)

于 2012-04-24T15:26:49.437 に答える