Вы забыли символ 's' в этой строке:
lineLayer.addFeatures([lineFeature]);
Функция 'addFeature' не существует: OpenLayers.Layer.Vector.addFeatures
Чтобы увидеть эту функцию, удерживайте клавишу Shift на клавиатуре и попробуйте нарисовать прямоугольник
РЕДАКТИРОВАТЬ : Хорошо, теперь я знаю, как вы хотели.
Вам необходимо создать один объект OpenLayers.Point для каждой точки в вашей БД. Одним из решений является использование и вызов Ajax вашей собственной функции PHP для их получения. Файл PHP содержит код для их получения. Я рекомендую возвращать их в формате JSON (например, строку). Использование JQuery Framework:
$.ajax({
url: 'your_php_file.php',
dataType: JSON // for example, you can use 'string' type too
success: function(coordinates){
}
});
Теперь у вас есть много координат из вашей БД. Пришло время нарисовать свой многоугольник. Следующая ссылка может быть полезна
OpenLayers - как нарисовать полигон из существующих точек lonLat?
Надеюсь, это поможет вам. Удачной кодировки!
EDIT2
linear_ring - объект, принадлежащий классу OpenLayers.Geometry.LinearRing. Конструктор нуждается в массиве OpenLayers.Geometry.Points, и вы дали ему массив OpenLayers.LonLat.
Вам нужно изменить это добавление этой строки после каждого создания точки (изменение индекса в соответствии с вашим собственным кодом):
points[0] = new OpenLayers.Geometry.Point(points[0].lon,points[0].lat);
Итак, ваша тестовая функция выглядит так:
function test(){
lineLayer = new OpenLayers.Layer.Vector("Line Layer");
style = { strokeColor: '#0000ff',
strokeOpacity: 1,
strokeWidth: 10
};
points = new Array();
points[0] =new OpenLayers.LonLat(-2.460181,27.333984 ).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());;
points[0] = new OpenLayers.Geometry.Point(points[0].lon,points[0].lat);
points[1] = new OpenLayers.LonLat(-3.864255,-22.5 ).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());;
points[1] = new OpenLayers.Geometry.Point(points[1].lon,points[1].lat);
var linear_ring = new OpenLayers.Geometry.LinearRing(points);
polygonFeature = new OpenLayers.Feature.Vector(
new OpenLayers.Geometry.Polygon([linear_ring]), null, style);
lineLayer.addFeatures([polygonFeature]);
map.addLayer(lineLayer);
}
Результат таков: Результат изображения