Your answer has been closed to be perfect.
You should parse the line number for the float.
lineLayer = new OpenLayers.Layer.Vector("Line Layer"); map.addLayer(lineLayer); map.addControl(new OpenLayers.Control.DrawFeature(lineLayer, OpenLayers.Handler.Path)); var coordinates = [ { lat: "35.737097", lon: "51.314965" }, { lat: "35.736953", lon: "51.317454" }, { lat: "35.737572", lon: "51.317551" }, { lat: "35.737755", lon: "51.315716" }, { lat: "35.739588", lon: "51.316070" } ]; function DrawTrack(){ var points = coordinates.map(function (cor) { return new OpenLayers.Geometry.Point(parseFloat(cor.lon),parseFloat(cor.lat)) .transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject()); }); var style = { strokeColor: '#0000ff', strokeOpacity: 0.5, strokeWidth: 5 }; for (var i = 0; i < points.length - 1; i++) { (function (i) { window.setTimeout(function () { var line = new OpenLayers.Geometry.LineString([points[i], points[i + 1]]); var lineFeature = new OpenLayers.Feature.Vector(line, null, style); lineLayer.addFeatures([lineFeature]); map.setCenter(points[i].lon, points[i].lat); }, i * 1000); }(i)); } }
source share