[英]OpenLayers save a feature
我正在創建一個可以使用以下代碼編輯的行:
var line_points = Array();
var lineLayer = new OpenLayers.Layer.Vector(label);
this.map.addLayer(lineLayer);
this.map.addControl(new OpenLayers.Control.DrawFeature(lineLayer, OpenLayers.Handler.Path));
for ( x in points ) {
var point = points[x].split(',');
var lat = parseFloat( point[0] );
var lon = parseFloat( point[1] );
line_points[x] = new OpenLayers.Geometry.Point(this.Lon2Merc(lon), this.Lat2Merc(lat));
}
var line = new OpenLayers.Geometry.LineString(line_points);
var lineFeature = new OpenLayers.Feature.Vector(line, null, style);
lineLayer.addFeatures([lineFeature]);
每當移動或創建一個點來更新HTML表單(然后用於保存該數據)時,我都會嘗試將緯度和經度拉出此功能。 我聽說過協議和內容,但不認為這對我來說是正確的。
有人能指出我正確的方向嗎?
編輯:我已經嘗試直接從HTML獲取詳細信息:
var x = 0;
var y = 0;
$.each(document.getElementById("OpenLayers.Geometry.LineString_195").getAttribute("points").split(','), function(index, value) {
if(index%2){
y = value;
console.log(MercatorToLatLon(x,y).Lat + "," + MercatorToLatLon(x,y).Lon);
} else {
x = value;
}
//console.log(value);
});
但這似乎沒有給出任何有用的價值,而且沒有特別的順序我覺得奇怪。
您可以使用getVertices
操作來檢索要素中各點的所有最新緯度和經度。
因此,每當您想要更新html時,請調用以下內容。
console.log(lineFeature.geometry.getVertices());
function report(event) {
console.log(event.feature.geometry.getVertices());
console.log(event.type, event.feature ? event.feature.id : event.components);
}
lineLayer.events.on({
"beforefeaturemodified": report,
"featuremodified": report,
"afterfeaturemodified": report,
"vertexmodified": report,
"sketchmodified": report,
"sketchstarted": report,
"sketchcomplete": report
});
直接從dom訪問幾何值可能不是最好的主意。 更好,更容易使用OpenLayers API。
您可以訂閱圖層的featuremodified
事件,然后訪問修改后的功能:
lineLayer.events.on({"featuremodified": function(feature){
console.log(feature.geometry.getVertices());
}});
您也可以收聽其他活動,例如“featureadded”,“featureremoved”等。
希望你明白這個主意。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.