First of the problems is that variable venues
which is read via an AJAX request is not accessible from the OpenLayers block inside <body>
. If you want to add each data point to the map you'll need to move the marker-adding code to the body of $.each
callback.
Another problem is that, as its name implies, OpenLayers.LonLat
's constructor takes latitude as the first parameter, you're passing lat and lon in the wrong order, causing the markers to appear somewhere on Antarctica.
Here's a JSFiddle that fixes both these problems: http://jsfiddle.net/s9jGt/1/