Ho lo stesso problema con una linea con solo quattro vertici. Ho modificato il numero di OL.SIMPLIFY_TOLERANCE a -1 e non sono state apportate modifiche al rendering della funzione. Se chiamo geometry.getSimplifiedGeometry (0), riavvio tutti e quattro i vertici. Tuttavia, durante il rendering, vengono restituiti solo due vertici. Mi chiedo se qualcos'altro debba essere cambiato? I poligoni sembrano rendere bene. Sono nuovo di OpenLayers 3, quindi sono sicuro che c'è un modo migliore per aggirare questo.
Posso visualizzare correttamente la linea utilizzando una funzione di stile. Ho messo un esempio del mio stile di selezione qui sotto. Ho anche creato una funzione di stile standard per il livello vettoriale. Se non avessi aggiunto la funzione di stile all'interazione di selezione, la mia funzione sarebbe passata da una linea con 4 vertici a una linea con solo i punti iniziale e finale.
var selectStyleFunction = function (feature, resolution) {
var styles = [];
var white = [255, 255, 255, 1];
var blue = [0, 153, 255, 1];
var width = 3;
var geometry = feature.getGeometry();
var type = geometry.getType();
if (type == 'Point') {
styles.push(new ol.style.Style({
image: new ol.style.Circle({
radius: width * 2,
fill: new ol.style.Fill({
color: blue
}),
stroke: new ol.style.Stroke({
color: white,
width: width/2
})
}),
zIndex: Infinity
}));
}
if (type == 'LineString') {
geometry.forEachSegment(function (start, end) {
styles.push(new ol.style.Style({
geometry: new ol.geom.LineString([start, end]),
stroke: new ol.style.Stroke({
color: white,
width: width + 2
})
}));
styles.push(new ol.style.Style({
geometry: new ol.geom.LineString([start, end]),
stroke: new ol.style.Stroke({
color: blue,
width: width
})
}));
});
}
if (type == 'Polygon') {
styles.push(new ol.style.Style({
fill: new ol.style.Fill({
color: [255, 255, 255, .5]
})
}));
styles.push(new ol.style.Style({
stroke: new ol.style.Stroke({
color: white,
width: width + 2
})
}));
styles.push(new ol.style.Style({
stroke: new ol.style.Stroke({
color: blue,
width: width
})
}));
}
return styles;
}
Un altro stile che ho usato per una caratteristica LineString che ho aggiunto alla mia funzione di stile utilizzato per il mio livello vettoriale. Questo aggiunge punti ad ogni vertice, ed è basato fuori del poligono esempio sul sito OpenLayers Esempi:
if (type == horizontal') {
var coords = geometry.getCoordinates();
geometry.forEachSegment(function (start, end) {
styles.push(new ol.style.Style({
geometry: new ol.geom.LineString([start, end]),
stroke: new ol.style.Stroke({
color: [0, 128, 0, .9],
width: width + 2
}),
zIndex: 9000
}));
});
styles.push(new ol.style.Style({
image: new ol.style.Circle({
radius: width + 2,
fill: new ol.style.Fill({
color: [0, 128, 0, 2, 1]
}),
stroke: new ol.style.Stroke({
color: [255, 255, 255, 0.75],
width: width
})
}),
geometry: function() {
return new ol.geom.MultiPoint(coords);
},
zIndex: 9000
}));
}
Thank you - sto ancora lavorando con la libreria ol-debug, in modo da cambiare questo numero ha ridotto il distanza tra i punti. – ryansstack
Dovrò controllare i miei dati per assicurarmi che questo sia il rendering di tutti i dati, tuttavia sembra ancora una griglia quando viene ingrandito da vicino. – ryansstack
Forse mi sono sbagliato. La modifica di questo valore da 0,5 a 0,001 o 0 o -0,001 non sembra fare la differenza in # di punti renderizzati. Modificandolo più in alto, tuttavia, si riduce drasticamente il numero di funzioni. – ryansstack