I have a problem about measurecontrol. I can use measurecontrol and I can show length to use measure control . But my problem is that I didn't use in snap because measurecontrol is a control, not a layer.
measureControl = new OpenLayers.Control.Measure(
OpenLayers.Handler.Path,
{
immediate: true,
persist: true
}
);
measureControl.getCustomLength = function(evt) {
var str = '';
str = 'Toplam: ' + (evt.units === 'km' ? evt.measure.toFixed(3) : evt.measure.toFixed(1)) + ' ' + evt.units + ' ';
// uzunluk =evt.units ==='km';
uzunluk=evt.measure;
return str;
}
map.addControl(measureControl);
measureControl.events.on({
'measure': function(evt) {
$("#mesafe").html(measureControl.getCustomLength(evt));
}
});
measureControl.activate();
This is my measure control. And I want to snap this to point to my another vector. So when I look openlayer's snap:
var snap = new OpenLayers.Control.Snapping({
layer: measurecontrollayer,
targets: [{
layer:mylayer,
tolerance: 15
}]
});
snap.activate();
snap is using only vector but my measurecontrol is not a vector. Please show me some way to achieve this. Also is there another way to use measure in layer linestring layer?
Best Answer
Firstly i want to say measurecontrol is not using on snapp control. So you create own your linestring like that
be careful line.getlength() result is meter distanceee .This is give you when u draw linestring in lineLayer result is meausure this linestring.
Then you must add snapp control like that .
Dont remember snap contral layer must be editable layer . This is result .When you draw linestring automatically snapping your target layer.