我已經構建了一個應用程序,允許用戶在另一個多邊形內繪製多邊形。出於某些應用特定原因,這兩個多邊形位於不同的圖層中。用戶繪製多邊形後,調用layer.events.register函數來檢查多邊形是否完全位於較大的多邊形內部。現在我想要修改應用程序,並且我有以下問題:如何在用戶在Openlayers中繪製多邊形後繪製轉換框?
Q1)如何將變換框添加到用戶繪製的多邊形中?我希望用戶能夠在繪製後旋轉或縮放多邊形。 Q2)如何在轉換(旋轉或縮放)後檢查多邊形是否仍在較大的多邊形內?
**用戶繪製的多邊形實際上是另一個矩形內的矩形。
我在下面粘貼了一些代碼。請注意,名爲「BaseLayer」的圖層是添加用戶生成的矩形的位置。
var renderer = OpenLayers.Util.getParameters(window.location.href).renderer;
var baseLayer = new OpenLayers.Layer.Vector("BaseLayer", {
styleMap: new OpenLayers.StyleMap({
"transform": new OpenLayers.Style({
display:"${getDisplay}",
cursor: "${role}",
pointRadius: 3,
fillColor: "white",
fillOpacity: 1,
strokeColor: "black"
},{
context:{
getDisplay: function(feature){
return feature.attributes.role === "se-resive" ? "none": "";
}
}
})
}),
renderers: renderer
});
var transformControl = new OpenLayers.Control.TransformFeature(baseLayer, {
renderIntent: "transform",
rotationHandleSymbolizer: "rotate"
});
var drawPolygonFeature = new OpenLayers.Control.DrawFeature(baseLayer, OpenLayers.Handler.RegularPolygon,
{'displayClass':'olControlDrawFeaturePolygon',
handlerOptions:{sides: 4,
irregular:true,
style: polygonStyle,
id: "processingPolygon"
}
});
baseLayer.events.register("featureadded", feature, function(evt){
// DOES SOME ERROR CHECKING HERE.
// transformControl.setFeature(evt.feature);
});
我試過到目前爲止: 我嘗試使用control.setFeature功能(代碼中倒數第二線以上)將變換框的功能的events.register()函數內,但是這沒有奏效。添加轉換框還會調用events.register函數,該函數會添加另一個轉換框,並因此再次調用events.register()。這導致無限循環!
任何幫助,非常感謝。謝謝!
編輯: 這裏是我想變換框的類型的例子: http://openlayers.org/dev/examples/transform-feature.html