Страница 1 из 1
Отображение нескольких треков на слое
Добавлено: 27 фев 2012, 12:36
kau
Здравствуйте.
Создаю слой для отображения трека из файла формата gpx:
Код: Выделить всё
//слой для отображения GPX
lgpx = new OpenLayers.Layer.Vector("GPX Data", {
protocol: new OpenLayers.Protocol.HTTP({
url: temp.xml",
format: new OpenLayers.Format.GPX({extractWaypoints: true, extractRoutes: true, extractAttributes: true})
}),
strategies: [new OpenLayers.Strategy.Fixed()],
styleMap: lgpx_style1,
projection: new OpenLayers.Projection("EPSG:4326")
});
Вопрос в том, как добавить еще несколько треков на карту? Сейчас я под каждый, создаю свой слой. Мне кажется это не совсем правильно.
Может кто-то подскажет: на одном слое можно отобразить несколько треков, загружаемых из файла? Или как это сделать правильнее?
Re: Отображение нескольких треков на слое
Добавлено: 27 фев 2012, 13:16
Denis Rykov
Не совсем понял вопрос. У вас один файл gpx в котором несколько треков? В приведенном вами примере на карту добавляется только один трек из файла, а остальные нет?
Re: Отображение нескольких треков на слое
Добавлено: 27 фев 2012, 13:39
kau
В одном файле один трек. И для отображения трека я использую отдельный файл и отдельный слой.
В принципе можно поместить несколько треков в один файл, но я читал, что они при отображении будут склеиваться в один большой трек.
Re: Отображение нескольких треков на слое
Добавлено: 27 фев 2012, 14:01
Denis Rykov
Тогда я не понял чего вы хотите, в первом посте вы спросили:
можно отобразить несколько треков, загружаемых из файла?
а получается, что в одном файле всего 1 трек.
Re: Отображение нескольких треков на слое
Добавлено: 27 фев 2012, 14:11
kau
В первом посте выразился может быть не совсем точно. Речь идет о разных файлах (для каждого файла свой трек). Мой вопрос-то в принципе о том, как можно корректно добавить на карту отображение нескольких треков?
А как это будет сделано из одного файла (но чтоб при этом треки не склеивались в один большой) или нескольких не столь важен. Тот механизм, который я сейчас использую мне кажется не совсем правильным (один трек - один слой, два трека - два слоя, ....). Или других вариантов нет?
Re: Отображение нескольких треков на слое
Добавлено: 27 фев 2012, 15:18
Denis Rykov
Первое, что пришло в голову:
Код: Выделить всё
map = new OpenLayers.Map("mapdiv");
var epsg4326 = new OpenLayers.Projection("EPSG:4326");
var epsg900913 = new OpenLayers.Projection("EPSG:900913");
var center = new OpenLayers.LonLat(29,40).transform(epsg4326, epsg900913);
var gpxTrackStyle = {strokeColor: "#FF0000", strokeWidth: 2};
var base = new OpenLayers.Layer.OSM();
//слой для отображения GPX
lgpx = new OpenLayers.Layer.Vector();
lgpx.style = gpxTrackStyle;
map.addLayers([base,lgpx]);
map.setCenter(center, 2);
var gpx = new OpenLayers.Format.GPX({externalProjection: epsg4326, internalProjection: epsg900913});
var url_list = [
"http://gis-lab.info/share/DR/sandbox/gpx/1185846.gpx",
"http://gis-lab.info/share/DR/sandbox/gpx/1164963.gpx"
];
for (var i = 0, l = url_list.length; i < l; i += 1) {
var features = [];
new OpenLayers.Request.GET({
url: url_list,
success: function(e){
features = gpx.read(e.responseText);
lgpx.addFeatures(features);
}
});
}
Re: Отображение нескольких треков на слое
Добавлено: 28 фев 2012, 16:36
kau
Denis Rykov писал(а):Первое, что пришло в голову:
Вот такая ошибка возникает:
Код: Выделить всё
XMLHttpRequest cannot load http://gis-lab.info/share/DR/sandbox/gpx/1185846.gpx. Origin http://... is not allowed by Access-Control-Allow-Origin.
Не подскажете в чем дело?
Re: Отображение нескольких треков на слое
Добавлено: 28 фев 2012, 18:04
Denis Rykov
Подскажу. Либо поставбте
прокси и пропишите там гислабовский хост, либо скачайте треки и разместите их на своём хосте.
Re: Отображение нескольких треков на слое
Добавлено: 29 фев 2012, 15:15
kau
Спасибо, с этим (XMLHttpRequest cannot load http...) разобрался. Все выполняется без ошибок. Но на карте ничего не появляется.
features создается такой
Код: Выделить всё
[Object { data={...}, id="OpenLayers.Feature.Vector_921", geometry=LINESTRING(4355895.8663649 6745578.2778295,4355970.2648913 6745563.6104373,4356089.3767464 6745720.7624454,4356160.806753 6745850.9764113,4356176.7625466 ....
Выполняю:
Ничего не происходит. Подскажите, что не так?
Может быть есть ссылка на рабочий пример?
Re: Отображение нескольких треков на слое
Добавлено: 29 фев 2012, 19:00
Denis Rykov
Re: Отображение нескольких треков на слое
Добавлено: 01 мар 2012, 16:12
kau
Denis Rykov писал(а):Вот набросал.
Спасибо, большое - все заработало.