Link lines

This commit is contained in:
portree_kid 2020-07-06 20:59:21 +02:00
parent 4b7183c428
commit 70926ed2ff
3 changed files with 92 additions and 4 deletions

View File

@ -877,6 +877,87 @@ You should have received a copy of the GNU General Public License along with FG
reload (force) { reload (force) {
this.load(this.icao, force) this.load(this.icao, force)
}, },
link (index) {
var layers = []
var centerLatLng = null
this.featureLookup[index].forEach(layer => {
if (layer instanceof L.Polyline) {
// console.log(layer._latlngs)
layer._latlngs.forEach(latlng => {
if (latlng.__vertex) {
if (Number.isNaN(latlng.glueindex)) {
console.warn('No glueindex : ' + latlng.__vertex);
}
if (Number(latlng.glueindex) === index) {
centerLatLng = latlng;
}
}
})}
})
var newIndex = index
var nearest = [];
this.featureLookup.forEach(layers => {
layers.forEach(layer => {
if (layer instanceof L.ParkingSpot) {
let distance = layer.getLatLng().distanceTo(centerLatLng);
if (Number(layer.glueindex) !== newIndex && distance < 10) {
nearest.push({d: distance, l: layer, glueindex: layer.glueindex })
}
}
else if (layer instanceof L.Polyline) {
// console.log(layer._latlngs)
layer._latlngs.forEach(latlng => {
if (latlng.__vertex) {
if (Number.isNaN(latlng.glueindex)) {
console.warn('No glueindex : ' + latlng.__vertex);
}
let distance = latlng.distanceTo(centerLatLng)
if (latlng.glueindex !== newIndex && distance < 10) {
nearest.push({d: distance, l: layer, latlng: latlng.__vertex.latlng, glueindex: latlng.glueindex })
}
}
})
}
});
})
var featureLookup = this.featureLookup;
nearest = nearest.map(e => e.glueindex).filter((v, i, a) => a.indexOf(v) === i).filter(i => Number(i)!==newIndex)
nearest.forEach(glueindex => {
featureLookup[glueindex].forEach(layer => {
featureLookup[newIndex].push(layer);
if (layer instanceof L.RunwayNode) {
layer.setLatLng(centerLatLng);
}
else if (layer instanceof L.HoldNode) {
layer.setLatLng(centerLatLng);
}
else if (layer instanceof L.ParkingSpot) {
layer.setLatLng(centerLatLng);
}
else if (layer instanceof L.Polyline) {
layer._latlngs.forEach((e1, index1) => {
if (e1.attributes.index===Number(glueindex)) {
if( Number(layer.begin)===Number(glueindex)) {
layer.begin = String(newIndex);
}
if( Number(layer.end)===Number(glueindex)) {
layer.end = String(newIndex);
}
e1.attributes.index = newIndex;
e1.glueindex = newIndex;
layer.getLatLngs()[index1].update(centerLatLng);
layer.editor.refresh();
layer.editor.reset();
layer.updateMiddle();
}
})
}
})
featureLookup[glueindex] = [];
});
},
save () { save () {
var xml = [] var xml = []
this.groundnetLayerGroup.eachLayer(l => { this.groundnetLayerGroup.eachLayer(l => {

View File

@ -36,10 +36,12 @@
</el-select> </el-select>
</el-col> </el-col>
</el-row> </el-row>
<el-row><el-button @click="link"><i class="fas fa-link"></i></el-button></el-row>
</div> </div>
</div> </div>
</template> </template>
<script lang="js"> <script lang="js">
/* eslint-disable */ /* eslint-disable */
const Coordinates = require('coordinate-parser'); const Coordinates = require('coordinate-parser');
@ -56,6 +58,11 @@
coordFocussed: false, runwayFocussed: false, holdFocussed: false coordFocussed: false, runwayFocussed: false, holdFocussed: false
} }
}, },
methods: {
link: function () {
this.$parent.$parent.$parent.$refs.editLayer.link(this.$store.state.Editable.index)
}
},
computed: { computed: {
editing: { editing: {
get: function () { get: function () {

View File

@ -135,7 +135,7 @@ exports.extendTaxiSegment = function (taxiwaySegment) {
}); });
this.on('editable:drawing:move', function (event) { this.on('editable:drawing:move', function (event) {
if (dragIndex >= 0) { if (dragIndex >= 0) {
console.log('GlueDrag' + event.target); console.log('GlueDrag : '+ dragIndex + '\t' + event.target.dragIndex);
this.follow(dragIndex, event); this.follow(dragIndex, event);
} }
}); });
@ -217,11 +217,11 @@ exports.extendTaxiSegment = function (taxiwaySegment) {
}); });
var dragIndex = -1; var dragIndex = -1;
this.on('editable:vertex:dragstart', function (event) { this.on('editable:vertex:dragstart', function (event) {
console.log("Event Target : ", event.target); console.log("Drag Start : ", event.target);
console.log("Middle Marker : ", event.vertex == event.vertex.middleMarker); console.log("Middle Marker : ", event.vertex == event.vertex.middleMarker, event.vertex.latlng.glueindex == undefined);
console.log("Middle Marker : ", event.vertex.latlng.glueindex == undefined);
if (event.vertex.latlng.glueindex == undefined) if (event.vertex.latlng.glueindex == undefined)
return; return;
console.log("Drag Start : ", event.vertex.latlng.glueindex);
dragIndex = event.vertex.latlng.glueindex; dragIndex = event.vertex.latlng.glueindex;
}); });
this.on('editable:vertex:dragend', function (event) { this.on('editable:vertex:dragend', function (event) {