Openlayers 2에서 ol3으로 맵 애플리케이션을 마이그레이션 중이며 익스텐트가 변경되면 서버에 요청을 실행하는 bbox 레이어가 있습니다. 새로 고침 전략 (force : true)을 사용하고 서버는 사용자 지정 형식을 사용하여 처리하는 개체 배열을 반환합니다.Openlayers 2 Migrate Openlayers 2 BBOX 전략을 Openlayers 3
var refreshStrategy = new OpenLayers.Strategy.Refresh({
force: true
});
OpenLayers.Format.GTFS = OpenLayers.Class(OpenLayers.Format, {
read: function(body) {
var stops = JSON.parse(body), point, features = [];
for(var i=0,l=stops.length; i<l; i++) {
point = new OpenLayers.Geometry.Point(stops[i].stop_lon, stops[i].stop_lat);
features.push(new OpenLayers.Feature.Vector(point, stops[i]));
}
return features;
}
});
var layer = new OpenLayers.Layer.Vector('Stops', {
projection: new OpenLayers.Projection('EPSG:4326'),
visibility: true,
strategies: [
new OpenLayers.Strategy.BBOX({resFactor: 1.2}),
refreshStrategy
],
protocol: new OpenLayers.Protocol.HTTP({
format: new OpenLayers.Format.GTFS(),
url: '/api/v1/stops.json'
})
});
refreshStrategy.activate();
ol.source.Vector
은 하나의 전략 만 지원합니다. 난하지만 난
var stopFeatures = new ol.Collection();
var source = new ol.source.Vector({
features: stopFeatures,
loader: function(extent, resolution, projection) {
extent = ol.extent.applyTransform(extent, ol.proj.getTransform("EPSG:3857", "EPSG:4326"));
var url = '/api/stops.json?bbox=' + extent.join(',');
$http.get(url).then(function (res) {
var features = _.map(res.data, function (stop) {
var stopFeature = new ol.Feature(stop);
stopFeature.setGeometry(new ol.geom.Point(ol.proj.transform([stop.stop_lon,stop.stop_lat],
'EPSG:4326', 'EPSG:3857')));
return stopFeature;
});
stopFeatures.clear();
stopFeatures.extend(features);
});
},
projection: 'EPSG:4326',
strategy: ol.loadingstrategy.bbox,
});
내가 뭔가를 잘못하고 있어요 같은 기능 모음의 청산 및 재설정 느낌
를 패닝 기능 마커가 깜박 및 데이터의 모든 시간을 다시로드 얻으려면, BBOX 전략을 사용하여 시도 및 새로 고침 속도가 느린 것으로 보인다 .
이 방법을 ol3에서 구현하는 방법은 무엇입니까?
실제로 OpenLayers 3.x의'ol.loadingstrategy.bbox'는 OpenLayers 2의'OpenLayers.Strategy.BBOX'와 완전히 똑같습니다. 왜 다른 괴물이라고 생각합니까? – ahocevar
@ahocevar 코드를 읽고 무슨 뜻인지 이해합니다. 나에게 모호한 점은 ol2가 후드 요청의 후속 요청에서 데이터를 병합하는 방법이며 지금은 기능 컬렉션을 사용해야한다는 것입니다. 나는 재 삽입 될 가능성이있는 기능들을 제거하고 있으며 아마도 그것이 느린 것으로 생각하고있다. 어쨌든이 문제에 관심을 가져 주셔서 감사합니다. –