0

目前我的工作的OpenLayers 3.定製覆蓋中的OpenLayers 3

我用谷歌地圖JavaScript API V3定義疊加添加自定義的標記在地圖上HTML DIV。這些標記被分組並繪製在不同的自定義覆蓋圖中。

現在我試圖在OpenLayers 3中實現它,但是我找不到任何解決方案,因爲OpenLayers 3中的疊加層在一個疊加層中佔用了一個標記。

我可以在OpenLayers 3中分組疊加層以分組標記嗎?或者還有其他選擇嗎?

+0

我也面臨同樣的問題。您也可以嘗試leaflet.js –

+0

但我需要OpenLayers 3中的解決方案。 – SHK

回答

0

您有多種可能的選擇。

A)如果你只有一個,那麼你可以使用一個StyleFunction。見這個代碼ol3 vector example,更具體地說本節:

var vectorLayer = new ol.layer.Vector({ 
    source: new ol.source.Vector({ 
     url: 'https://openlayers.org/en/v3.20.1/examples/data/geojson/countries.geojson', 
     format: new ol.format.GeoJSON() 
    }), 
    style: function(feature, resolution) { 
     style.getText().setText(resolution < 5000 ? feature.get('name') : ''); 
     return style; 
    } 
    }); 

style財產?它可以是ol.style.Style或樣式函數,如上所示。該函數接收地圖視圖的特徵和當前分辨率作爲參數,並在每次特徵被渲染(或重新渲染)時被調用。返回ol.style.Style或樣式對象數組將使用/這些樣式呈現該功能。

該功能可以具有獨特的屬性,即feature.getProperties()。在特徵中使用盡可能多的屬性,可以返回唯一樣式對象的唯一數組。

下面是更多complex ol3 example featuring style functions,你可以看看,並有一個動態樣式取決於分辨率的例子。這可以讓您更好地瞭解您可以對功能屬性執行哪些操作。

B)如果你有多個數據集,那麼你就可以創建每個數據集一個向量層與層上定義一個風格獨特的對象,這將使該功能都是一樣的。

+0

感謝您的回覆,但我需要爲每個標記使用html div來存儲有關標記的信息。我不知道覆蓋圖的樣式如何可以幫助解決這個問題。 – SHK

+0

如果您查看ol3的向量示例(答案中的示例),您會看到當鼠標懸停在顯示信息的國家/地區時。這些渲染使用ol.Feature,而不是ol.Overlay。我認爲這對你來說可能是一個好方法。 –