2016-04-29 74 views
1

OpenLayers 3具有很好的拖放功能。這個例子在這裏給出:打開圖層3-獲取矢量數據中的矢量類型(線,多邊形,點)

http://openlayers.org/en/master/examples/drag-and-drop.html

在爲拖放事件處理程序和刪除您可以訪問已在此情況下被拖入(vectorSource)矢量圖層:

dragAndDropInteraction.on('addfeatures', function(event) { 
    var vectorSource = new ol.source.Vector({ 
     features: event.features 
    }); 
    map.addLayer(new ol.layer.Vector({ 
     source: vectorSource, 
     style: styleFunction 
    })); 
    map.getView().fit(
     vectorSource.getExtent(), /** @type {ol.Size} */ (map.getSize())); 
    }); 

vectorSource可以在這裏看到是從event.features創建的,但是我無法找到一種方法來告知已被拖入地圖的矢量是否爲多邊形,

我的問題是,有沒有辦法告訴數據是什麼矢量類型?

console.log(event.features);顯示那裏有一個幾何術語,但我不確定這是如何可靠地給我的數據類型。

我需要知道我的圖層管理工具,以便我可以正確表示矢量圖層。

我曾嘗試:

event.features[0].getGeometry(); 
event.features[0].getGeometryName(); 

似乎都不產生,我需要的信息。

+0

雖然達尼洛的回答涵蓋了問題,但創建功能時,您可以添加一些自定義的參數給他們。然後在行動上,你可以得到這些對象的參數。如果你有,例如,兩種類型的點,你想知道哪一個是哪一個,這可以提供幫助。 –

+0

謝謝,但問題是,我不知道數據類型是什麼時候加載的,不一定會讓他們感到困惑。 –

回答

1

如果你有一個功能,您可以獲取它的幾何形狀,然後它的類型:

feature.getGeometry().getType() 

幾何類型。 'Point','LineString','LinearRing', 'Polygon','MultiPoint','MultiLineString','MultiPolygon', 'GeometryCollection','圓'。

參考:http://openlayers.org/en/v3.0.0/apidoc/ol.geom.html#GeometryType

+0

恐怕與event.features [0] .getGeometry()我只是得到一個對象返回似乎沒有包含有用的信息,和event.features [0] .getGeometryName()只是給'幾何'作爲一個響應。 –

+0

你能演示一個例子(小提琴)嗎? – Danilo