Страница 1 из 1
Не работает Openlayers.layer.text
Добавлено: 09 сен 2011, 09:59
ArtIntellAnd
Ни как не пойму почему не показывает маркер в таком примере
Код: Выделить всё
<html><body>
<div id="mapdiv"></div>
<script src="http://www.openlayers.org/api/OpenLayers.js"></script>
<script>
map = new OpenLayers.Map("mapdiv");
map.addLayer(new OpenLayers.Layer.OSM());
var pois = new OpenLayers.Layer.Text( "My Points",
{ location:"./textfile.txt",
projection: map.displayProjection
});
map.addLayer(pois);
//Set start centrepoint and zoom
var lonLat = new OpenLayers.LonLat( 9.5788, 48.9773 )
.transform(
new OpenLayers.Projection("EPSG:4326"), // transform from WGS 1984
map.getProjectionObject() // to Spherical Mercator Projection
);
var zoom=11;
map.setCenter (lonLat, zoom);
</script>
</body></html>
текстовый файл
Код: Выделить всё
10 20 title description 21,25 -10,-25 http://www.openlayers.org/dev/img/marker.png
Re: Не работает Openlayers.layer.text
Добавлено: 09 сен 2011, 10:34
Mavka
OFFTOPIC
Прошу прощения за пост не по существу. Это 5-й топик за месяц, в котором обсуждают формально устаревшие классы OpenLayers (Markers, Text). С выходом версии 2.9 (апрель 2010) они переведены в разряд deprecated с рекомендацией мигрировать на Vector (
1,
2). Нет, дело личное, можно и с Text работать.
Вот мне и стало интересно: пользователи работают по какому то руководству/мануалу/хаутушке? Хотелось бы связаться с автором.
P.S. Добавьте первой строкой в файл:
Код: Выделить всё
lat lon title description iconSize iconOffset icon
Re: Не работает Openlayers.layer.text
Добавлено: 09 сен 2011, 10:49
ArtIntellAnd
Строка в текстовом файле есть, весь текстовый файл:
Код: Выделить всё
lat lon title description iconSize iconOffset icon
52 104 title description 21,25 -10,-25 http://www.openlayers.org/dev/img/marker.png
Но всё равно не работает, не показывает маркер.
А на счет, почему именно использую устаревший класс, дело в том что интересно изучить всё...
Re: Не работает Openlayers.layer.text
Добавлено: 09 сен 2011, 12:09
Denis Rykov
Имена полей в текстовом файле должны указываться через табуляцию, после каждой (в том числе и последней) строки должен идти символ перевода строки. Это следствие наличия в OpenLayer.Format.Text следующей строки:
Код: Выделить всё
for (var lcv = 0; lcv < (lines.length - 1); lcv++)
Как мне кажется следовало бы вместо lines.length - 1 использовать просто lines.length. Но это уже вопрос к разработчикам OL.
Re: Не работает Openlayers.layer.text
Добавлено: 12 сен 2011, 04:37
ArtIntellAnd
Всё, с этим разобрался. Всё заработало.
Теперь как же решить эту проблему. Через секунду обновляется маркер из текстового файла... Вот код. Только он не обновляется а по новой добавляется, как уйти от этого...
Код: Выделить всё
<html>
<head>
<script src="http://www.openlayers.org/api/OpenLayers.js"></script>
<script src="http://www.openstreetmap.org/openlayers/OpenStreetMap.js"></script>
</head>
<body onload="init();">
<script type="text/javascript">
var map;
function init() {
map = new OpenLayers.Map("Map");
var mapnik = new OpenLayers.Layer.OSM();
map.addLayer(mapnik);
map.setCenter(new OpenLayers.LonLat(104.2724,52.2864)
.transform(
new OpenLayers.Projection("EPSG:4326"),
new OpenLayers.Projection("EPSG:900913")
), 14
);
var size = new OpenLayers.Size(21,25);
var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);
var icon = new OpenLayers.Icon('http://www.openstreetmap.org/openlayers/img/marker.png',size,offset);
var pois = new OpenLayers.Layer.Text( "My Points",
{ location:'./text.txt',
projection: map.displayProjection
});
map.addLayer(pois);
}
</script>
<script type="text/javascript">
function se() {
var pois = new OpenLayers.Layer.Text( "My Points",
{ location:'./text.txt',
projection: map.displayProjection
});
}
</script>
<script type="text/javascript" language="javascript">
var timerOnce = window.setInterval("se();", 1000);
</script>
<div id="Map"></div>
</body>
</html>
Как обновить маркер, а не снова рисовать его?
Re: Не работает Openlayers.layer.text
Добавлено: 12 сен 2011, 05:47
ArtIntellAnd
Всё, не много поломав голову проблема решилась через moveto. Переходим на изучение векторов...

Re: Не работает Openlayers.layer.text
Добавлено: 28 сен 2012, 08:06
Tink
ArtIntellAnd писал(а):Как обновить маркер, а не снова рисовать его?
Возможно лучше использовать
Код: Выделить всё
strategies: [
new OpenLayers.Strategy.Refresh({force: true, interval: 1000}),
new OpenLayers.Strategy.BBOX({resFactor: 1.1})
]
Хотя с
Openlayers.Layer.Text я не работал, но думаю стратегии ко всем слоям применимы...