2015-11-15 43 views
2

我使用OpenLayers 3和OpenStreetMap在紙上打印地圖,爲此我需要渲染具有更多細節和更高DPI的地圖,屏幕。我正在使用CSS將尺寸設置爲ol.Maptarget釐米爲打印輸出的所需尺寸(.map { width: 7cm; height: 6.3cm; })。在OpenLayers 3中渲染OpenStreetMap,提供更多細節和更高的DPI

默認顯示的OpenLayers我的地圖這樣的,這是太低細節滿足我的需求之一:

Undesirable default output

通過與map.setSize(map.getSize().map(function (x) { return x*2; }));改變地圖的大小,我能增加細節更接近我需要什麼:

Desired outcome using a hack

但有了這個黑客的問題是,當窗口大小,大小重置,看起來會不對這樣的:

When the hack doesn't work

我怎麼會是能夠控制OSM縮放級別,並在屏幕上獨立於地圖的大小的地圖DPI達到期望的結果(第二張照片)可靠?

回答

0

我找到的解決方案是將地圖放入兩個嵌套的div s中。例如,內部的有一個width: 200%; height: 200%,外部的有transform: scale(.5) translate(-50%,-50%);。這將使用戶看到的分辨率加倍。

此方法將相對於屏幕上的縮放級別更改像素縮放級別。但是,只要用戶縮放地圖,就需要重新計算和更新。