Не работает Openlayers.layer.text

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
ArtIntellAnd
Интересующийся
Сообщения: 26
Зарегистрирован: 08 сен 2011, 06:46
Репутация: 0

Не работает Openlayers.layer.text

Сообщение 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
Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Не работает Openlayers.layer.text

Сообщение Mavka »

OFFTOPIC

Прошу прощения за пост не по существу. Это 5-й топик за месяц, в котором обсуждают формально устаревшие классы OpenLayers (Markers, Text). С выходом версии 2.9 (апрель 2010) они переведены в разряд deprecated с рекомендацией мигрировать на Vector (1, 2). Нет, дело личное, можно и с Text работать.

Вот мне и стало интересно: пользователи работают по какому то руководству/мануалу/хаутушке? Хотелось бы связаться с автором.

P.S. Добавьте первой строкой в файл:

Код: Выделить всё

lat  lon title   description iconSize    iconOffset  icon
лангольеры под окном жрали время ом-ном-ном
ArtIntellAnd
Интересующийся
Сообщения: 26
Зарегистрирован: 08 сен 2011, 06:46
Репутация: 0

Re: Не работает Openlayers.layer.text

Сообщение ArtIntellAnd »

Строка в текстовом файле есть, весь текстовый файл:

Код: Выделить всё

lat	lon	title	description	iconSize	iconOffset	icon
52	104	title	description	21,25	-10,-25	http://www.openlayers.org/dev/img/marker.png
Но всё равно не работает, не показывает маркер.
А на счет, почему именно использую устаревший класс, дело в том что интересно изучить всё...
Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Не работает Openlayers.layer.text

Сообщение Denis Rykov »

Имена полей в текстовом файле должны указываться через табуляцию, после каждой (в том числе и последней) строки должен идти символ перевода строки. Это следствие наличия в OpenLayer.Format.Text следующей строки:

Код: Выделить всё

for (var lcv = 0; lcv < (lines.length - 1); lcv++) 
Как мне кажется следовало бы вместо lines.length - 1 использовать просто lines.length. Но это уже вопрос к разработчикам OL.
Spatial is now, more than ever, just another column- The Geometry Column.
ArtIntellAnd
Интересующийся
Сообщения: 26
Зарегистрирован: 08 сен 2011, 06:46
Репутация: 0

Re: Не работает Openlayers.layer.text

Сообщение 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>
Как обновить маркер, а не снова рисовать его?
ArtIntellAnd
Интересующийся
Сообщения: 26
Зарегистрирован: 08 сен 2011, 06:46
Репутация: 0

Re: Не работает Openlayers.layer.text

Сообщение ArtIntellAnd »

Всё, не много поломав голову проблема решилась через moveto. Переходим на изучение векторов... :D
Tink
Участник
Сообщения: 50
Зарегистрирован: 20 июл 2012, 15:49
Репутация: 4

Re: Не работает Openlayers.layer.text

Сообщение Tink »

ArtIntellAnd писал(а):Как обновить маркер, а не снова рисовать его?
Возможно лучше использовать

Код: Выделить всё

strategies: [
    new OpenLayers.Strategy.Refresh({force: true, interval: 1000}),
    new OpenLayers.Strategy.BBOX({resFactor: 1.1})
]
Хотя с Openlayers.Layer.Text я не работал, но думаю стратегии ко всем слоям применимы...
Ответить

Вернуться в «Веб-картография»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость