我已经使用源和图层设置了下面显示的地图:
function TestCreateLine() {
var CoordsFromTo = [];
for (var i = 0; i < session.points.length; i++) {
CoordsFromTo.push(session.points[i][0])
}
var line = new ol.geom.LineString(CoordsFromTo);
var feature = new ol.Feature(line);
feature.setStyle(styles.route);
vectorSource.addFeature(feature);
}
然后我在地图上设置了一个点击事件,该事件将为该点创建一个功能以显示一个小图标。如果这是选择的第二个点,它将在两个点之间创建一个LineString。两者都显示如下:
线段形式
function TestCreateFeature(coord) {
var coords = coord.shift();
var feature = new ol.Feature({
id: coords,
type: 'place',
geometry: new ol.geom.Point((coord[0]))
});
feature.setId(coords);
feature.setStyle(styles.icon);
vectorSource.addFeature(feature);
}
功能
session.interactions.modify.on('modifyend', function (e) {
//IF YOUR MODIFYING AN OSRM ROUTE
if (document.getElementById('Checkbox2').checked) {
}
//LINE STRING ROUTE
else {
session.points = [];
var changedFeatures = e.features.getArray();
var newFeature = changedFeatures[changedFeatures.length - 1];
var ben = newFeature.getGeometry().getCoordinates();
vectorSource.clear()
for (var i = 0; i < ben.length; i++) {
var newPointInformation = [];
newPointInformation.push((CreateGuid() + CreateGuid() + "-" + CreateGuid() + "-4" + CreateGuid().substr(0, 3) + "-" + CreateGuid() + "-" + CreateGuid() + CreateGuid() + CreateGuid()).toLowerCase());
newPointInformation.push(ben[i]);
session.points.push(newPointInformation);
TestCreateFeature(newPointInformation);
}
TestCreateLine();
}
});
它们都作为功能添加到源中。我目前面临的问题是我希望能够修改路线并将新的坐标传递给我。
目前我正在使用'ModifyEnd'事件,但它似乎让我不止一个坐标。
{{1}}
正如你所看到的那样,我尝试清空源代码功能并重新构建,但问题并非所有的坐标都归还给我。
有人可以帮忙吗?