Перерисовка вектора (изменение его координат и угла)

Привет, столкнулся с проблемой перерисовки вектора, вот код, но он не рабочий, в чем ошибка?

 
<html>
<head>
  <title>OpenLayers Example</title>
    <script src="http://openlayers.org/api/OpenLayers.js"></script>
    <script src="http://www.openstreetmap.org/openlayers/OpenStreetMap.js"></script> 
  
 <script defer="defer" type="text/javascript">
   function init()
   {
        var map = new OpenLayers.Map('map');
        
            layerMapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik", {layers: 'basic'});
            map.addLayer(layerMapnik);
            layerTilesAtHome = new OpenLayers.Layer.OSM.Osmarender("Osmarender");
            map.addLayer(layerTilesAtHome);
            layerCycleMap = new OpenLayers.Layer.OSM.CycleMap("CycleMap");
            map.addLayer(layerCycleMap);

       map.setCenter(new OpenLayers.LonLat(104,52) // Центр карты
          .transform(
            new OpenLayers.Projection("EPSG:4326"), // преобразование из WGS 1984
            new OpenLayers.Projection("EPSG:900913") // в Spherical Mercator Projection
          ), 12 // Уровень масштаба
        );
        
       map.addControl(new OpenLayers.Control.LayerSwitcher());
        
var vectorLayer = new OpenLayers.Layer.Vector("Overlay");
var feature = new OpenLayers.Feature.Vector(
new OpenLayers.Geometry.Point(104, 52).transform(
            new OpenLayers.Projection("EPSG:4326"), // преобразование из WGS 1984
            new OpenLayers.Projection("EPSG:900913")) // в Spherical Mercator Projection
          ,
{some:'data'},
{externalGraphic: 'tram.png', graphicHeight: 21, graphicWidth: 16, rotation: 90});
vectorLayer.addFeatures([feature]);

map.addLayer(vectorLayer);    

new_vector();

}

   </script>

<script type="text/javascript">
        function new_vector()
         {
           var lon = 102;
           var lat = 53;
            var newPoint = new OpenLayers.LonLat(lon, lat).transform(
                                                              new OpenLayers.Projection("EPSG:4326"),
                                                              new OpenLayers.Projection("EPSG:900913"));
           feature.geometry.x = lonlat.lon;
           feature.geometry.y = lonlat.lat;    
           feature.style.rotation = 45;           
           feature.move(newPoint);
         }
</script>    


  </head>
    <body onload = 'init()'>
      <div style="width:600px; height:600px" id="map"></div>
     

</body>
</html>


 

Дак вы добавьте vectorLayer.drawFeture(feature), ну и я документацию по леерсам точно не помню, но мне кажется move принимает на сколько подвинуть а не куда, и вроде как не LonLat

Не работает, изменил на

<script type="text/javascript">
        function new_vector()
        {
           var lon = 102;
           var lat = 53;
            var newPoint = new OpenLayers.LonLat(lon, lat).transform(
                                                              new OpenLayers.Projection("EPSG:4326"),
                                                              new OpenLayers.Projection("EPSG:900913"));
           feature.geometry.x = lonlat.lon;
           feature.geometry.y = lonlat.lat;    
           feature.style.rotation = 45;           
           vectorLayer.drawFeture(feature);
        }
</script>    

А ошибки пишет?
vectorLayer разве доступен внутри new_vector, там же вроде для этого надо ее либо как глобальную объявлять либо new_vector объявлять внутри init

Хотя в вопросе областей видимости в js - я не спец.

Нет, ошибок не пишет, и вектор остается на месте старых координат.
Я если даже функцию new_vector() переношу в главную функцию всё равно не работает


<html>
<head>
  <title>OpenLayers Example</title>
    <script src="http://openlayers.org/api/OpenLayers.js"></script>
    <script src="http://www.openstreetmap.org/openlayers/OpenStreetMap.js"></script> 
  
 <script defer="defer" type="text/javascript">
   function init()
   {
        var map = new OpenLayers.Map('map');
        
            layerMapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik", {layers: 'basic'});
            map.addLayer(layerMapnik);
            layerTilesAtHome = new OpenLayers.Layer.OSM.Osmarender("Osmarender");
            map.addLayer(layerTilesAtHome);
            layerCycleMap = new OpenLayers.Layer.OSM.CycleMap("CycleMap");
            map.addLayer(layerCycleMap);

       map.setCenter(new OpenLayers.LonLat(104,52) // Центр карты
          .transform(
            new OpenLayers.Projection("EPSG:4326"), // преобразование из WGS 1984
            new OpenLayers.Projection("EPSG:900913") // в Spherical Mercator Projection
          ), 12 // Уровень масштаба
        );
        
       map.addControl(new OpenLayers.Control.LayerSwitcher());
        
var vectorLayer = new OpenLayers.Layer.Vector("Overlay");
var feature = new OpenLayers.Feature.Vector(
new OpenLayers.Geometry.Point(104, 52).transform(
            new OpenLayers.Projection("EPSG:4326"), // преобразование из WGS 1984
            new OpenLayers.Projection("EPSG:900913")) // в Spherical Mercator Projection
          ,
{some:'data'},
{externalGraphic: 'tram.png', graphicHeight: 50, graphicWidth: 50, rotation: 90});
vectorLayer.addFeatures([feature]);

map.addLayer(vectorLayer);    

           var lon = 102;
           var lat = 53;
            var newPoint = new OpenLayers.LonLat(lon, lat).transform(
                                                              new OpenLayers.Projection("EPSG:4326"),
                                                              new OpenLayers.Projection("EPSG:900913"));
           feature.geometry.x = lonlat.lon;
           feature.geometry.y = lonlat.lat;    
           feature.style.rotation = 45;           
           vectorLayer.drawFeture(feature);

new_vector();
}
   </script>

<script type="text/javascript">
        function new_vector()
        {

        }
</script>    


  </head>
    <body onload = 'init()'>
      <div style="width:600px; height:600px" id="map"></div>
     

</body>
</html>

Тогда и не знаю даже, а redraw у слоя не помогает?

А где использовать redraw?

vectorLayer.drawFeture(feature);
vectorLayer.redraw();

Не, не помогло. Вот нашел пример, только ни как не могу разобрать с ним…
http://kestrelcomputer.com/MovingMarkers/MoveMarkers.html

Чета они у меня не движутся нифига.

А ты какой браузер используешь? Я Chrome, жмешь там на кнопку тест и они двигаться начинают.

Все, разобрался. Спасибо dkiselev.
Вот решение:

var newPoint = new OpenLayers.LonLat(x, y).transform(
                  new OpenLayers.Projection("EPSG:4326"), // преобразование из WGS 1984
                  new OpenLayers.Projection("EPSG:900913"));
            
        feature.attributes.angle = angle;
        
        feature.move(newPoint);

Черт, кнопку Start Test то я и не приметил :slight_smile: