I'm attempting to use OpenLayers to display dynamically moving markers. The data from the markers is actually being read from a dynamically updating table elsewhere on the page which updates from a webservice every 10 seconds. I pull actually changed, new or deleted data from the table and then "manually" create, move or delete markers. Markers are being created or destroyed correctly, but just not moving.

I have created a simple example to show that I could actually have the markers move manually and still be in the right place when zooming and still have events attached to them.
http://dealmaker.dyndns.org:8080/move-markers.html

However, I have not had any luck with the markers themselves in our project. The OpenLayers functions seem to be doing everything properly. I have closely followed the code through each step in the process and also examined both the marker's properties and its div. The functions are modifying the style definition of the marker div with the correct coordinates. However, the map display is not refreshing. When doing DOM inspection, the marker divs are in their original location with the original left & top position values. Also the marker divs become permanently pinned to the window such that they show in the same location at all zoom levels. However, when zooming in or out, new correctly placed marker divs are also created. Then, the markers are present at wrong locations & wrong sizes and correct locations & sizes (until another update is fired and the marker fails to move).

here is the marker move code for both the example & the actual project:

Actual Project
----------------- var mrkr = vehLayer.markers[j];
var newLon = objArray[i].X;
var newLat = objArray[i].Y;
var newLonLat = new OpenLayers.LonLat(newLon,newLat);
var newPx = vehLayer.getViewPortPxFromLonLat(newLonLat);
mrkr.moveTo(newPx);

Example
-------------------
//randomly move all the markers
for(var i=0;i<markerLayer.markers.length;i++)
{
   var mrkr=markerLayer.markers[i];
   var sign = Math.random();
   (sign<0.5)?sign=(-1):sign=1;
   var newLon = sign * Math.random() + mrkr.lonlat.lon;
   var newLat = sign * Math.random() + mrkr.lonlat.lat;
   var newLonLat = new OpenLayers.LonLat(newLon,newLat);

   var newPx = map.getPixelFromLonLat(newLonLat);
   mrkr.moveTo(newPx);
}

Does anyone have any idea what could be wrong with the real project such that the viewport is not being refreshed except when doing a zoom in or zoom out? If there is anymore info I could give to help solve the problem, I'd be happy to give it.

--
*Matt Priour*
Kestrel Computer Consulting <http:%5C%5Cwww.kestrelcomputer.com>
<mailto:[EMAIL PROTECTED]>
_______________________________________________
Users mailing list
[email protected]
http://openlayers.org/mailman/listinfo/users

Reply via email to