2014-05-04 56 views
3

與ol3混合創建一些自定義地圖。在ol3中獲取拖動和丟棄kml文件的樣式

我拖放從Google Mymaps導出的KML文件,效果很好。我想獲得它附帶的樣式,以便我可以像筆畫顏色那樣更改它們。

我看到使用feature.getKeys,有一個叫styleUrl密鑰,並使用feature.get('styleUrl')我看到了它的價值是#青青草地

如何從該樣式中獲取筆觸顏色?

我用Chrome控制檯揣測了一切,但無濟於事。

+0

在感興趣的對象上嘗試一個'console.log'或'console.dir'。 –

回答

0

實際樣式保存在KML格式的對象中,並通過它在要素上設置的樣式函數作爲閉包進行訪問。這意味着樣式本身是無法訪問的。

但是,您仍然可以訪問和操作樣式值。該功能的getStyle方法將返回樣式,樣式數組或樣式函數。在這種情況下,KML格式設置樣式函數。

該函數用給定的分辨率調用並返回樣式數組。如果您確定樣式是靜態的並且不依賴於分辨率,那麼您可以使用適當的分辨率調用樣式函數以獲取樣式。

不過,如果你不知道你肯定伴奏功能如何確定返回值,你可以創建一箇中間風格功能:

var oldStyleFunction = feature.getStyle(); 
feature.setStyle(function(resolution){ 
    var styles = oldStyleFunction.apply(this, arguments); 
    for(var i = 0; i < styles.length; i++){ 
     var stroke = styles[i].getStroke(); 
     if (stroke != null) { 
      console.log('style ' + i + ' stroke color: ' + stroke.getColor() + ' at resolution ' + resolution) 
     } 
    } 
    return styles; 
}); 

上面這個例子中不操作的風格,但它是一個好的開始,並會告訴你風格的筆畫顏色。

相關問題