#openlayers-3
#openlayers-3
Вопрос:
У меня есть карта, и я хотел бы добавить функции. Объекты всегда добавляются правильно в конце массива. Если добавлено более 10 объектов, одиннадцать — вставляется в любом месте.
draw.on('drawend', function(evt) {
var feature = evt.feature;
var anfang = ol.proj.transform(feature.getGeometry().getFirstCoordinate(), 'EPSG:3857', 'EPSG:4326');
var ende = ol.proj.transform(feature.getGeometry().getLastCoordinate(), 'EPSG:3857', 'EPSG:4326');
var url = '?lonlats=' anfang '|' ende 'amp;nogos=amp;profile=shortestamp;alternativeidx=0amp;format=geojson';
url = encodeURIComponent(url);
url = broutes url;
var response = new XMLHttpRequest();
response.open('GET', url);
var onError = function() {
console.log('error');
}
response.onerror = onError;
response.onload = function() {
if (response.status == 200) {
var data = Ext.decode(response.responseText);
var arr = data.features[0].geometry.coordinates;
var arrayNew = [];
for (i=0; i<arr.length; i ){
var n = ol.proj.transform(arr[i], 'EPSG:4326', 'EPSG:3857');
arrayNew.push(n);
}
var data = new ol.geom.LineString( arrayNew );
//console.log(data);
var featureSnake = new ol.Feature({
geometry: data
});
snakeSource.addFeature( featureSnake );
var win = Ext.create('MyProject.view.window.Edit', {
record : featureSnake,
toDo: 'insert',
});
win.show();
} else {
onError();
}
}
Комментарии:
1.Смотрите github.com/openlayers/openlayers/issues/5729 Либо укажите собираемые функции, либо используйте
spatialIndex: false
openlayers.org/en/v4.6.5/apidoc /…
Ответ №1:
Я случайно изменил свой код, как вы мне сказали (используя версию 4.3.3)
vectorSource = new ol.source.Vector({
useSpatialIndex: false
});
Теперь у меня есть следующий результат vectorSource.getFeatures()
polygon1
polygon2
...
polygon15
polygon2
polygon3
...
polygon15
polygon1
У меня есть все функции дважды.
Комментарии:
1. Регистрируете ли вы объекты по мере их добавления? Если ваш json возвращает объекты в экстенте, вы можете получить те же результаты, которые повторяются в тех же случаях. В документации говорится
getFeatures()
, что возвращает объекты в случайном порядке. ПриuseSpatialIndex: false
этом должна быть коллекция функций, чтобы вы также могли попробовать использоватьgetFeaturesCollection().getArray()
2. Спасибо, я решил проблему с помощью
getFeatureCollection().getArray()