Javascript 使用不带文本文件的OpenLayers显示POI

Javascript 使用不带文本文件的OpenLayers显示POI,javascript,html,openlayers,Javascript,Html,Openlayers,我需要使用OpenLayers在滑动地图上显示带有信息的标记。下面是我尝试做的一个例子:http://wiki.openstreetmap.org/wiki/Openlayers_POI_layer_example 由于我使用的软件产品缺乏灵活性,我无法使用服务器端脚本,也无法直接从SQL数据库访问所需的信息 我能做的就是从SQL数据库中获取信息,并将其读入html表,然后将该表解析为javascript数组。问题是OpenLayers.Layer.Text需要一个文本文件,那么如何将javas

我需要使用OpenLayers在滑动地图上显示带有信息的标记。下面是我尝试做的一个例子:http://wiki.openstreetmap.org/wiki/Openlayers_POI_layer_example

由于我使用的软件产品缺乏灵活性,我无法使用服务器端脚本,也无法直接从SQL数据库访问所需的信息

我能做的就是从SQL数据库中获取信息,并将其读入html表,然后将该表解析为javascript数组。问题是OpenLayers.Layer.Text需要一个文本文件,那么如何将javascript数组中的信息转换成OpenLayers可以用来在每个标记旁边显示信息的格式呢

附加代码

下面是我尝试使用向量来解决这个问题的例子。不幸的是,这段代码似乎不起作用-我已经检查过了,它看起来很好。有什么想法吗


var osmap=null;
var wgs84Proj=null;
var osmapProj=null;
函数初始化()
{
var elmnts=document.getElementById('data').getElementsByTagName('tr');
var-ACol=-1;
var BCol=-1;
var-CCol=-1;
var LonCol=-1;
var LatCol=-1;
var-minX=0;
var maxX=0;
var-minY=0;
var-maxY=0;
//将字段与第一行中的列标题匹配
对于(var col=0;col1)
{
minX=Number(elmnts[1]。单元格[LonCol]。innerHTML)-0.00001
maxX=Number(elmnts[1]。单元格[LonCol]。innerHTML)+0.00001
minY=Number(elmnts[1]。单元格[LatCol]。innerHTML)-0.00001
maxY=Number(elmnts[1]。单元格[LatCol]。innerHTML)+0.00001
}
osmap=新建OpenLayers.Map
(
{
分区:“地图画布”,
控制:
[
新建OpenLayers.Control.Navigation(),
新建OpenLayers.Control.PanZoomBar(),
新建OpenLayers.Control.attribute()
]
}
);
var mapnik=new OpenLayers.Layer.OSM();
mapnik.transitionEffect='resize';
addLayer(mapnik);
var vectors=新的OpenLayers.Layer.Vector(“覆盖”);
添加图层(矢量);
var wgs84Proj=newopenlayers.Projection(“EPSG:4326”);//WGS 1984 Projection
var osmapProj=osmap.getProjectionObject();//这将是OSM的球形墨卡托投影
//在表格行中循环。。。
对于(变量行=1;行maxX)maxX=lonVal;
如果(latValmaxY)maxY=latVal;
vectors.addFeatures(
新OpenLayers.Feature.Vector(
新OpenLayers.Geometry.Point(latVal,lonVal),
{description:'这是描述属性'}的值,
{外部图形:'http://wiki.openstreetmap.org/wiki/File:Ol_icon_blue_example.png,graphicHeight:25,graphicWidth:25,graphicXOffset:0,graphicYOffset:0}
)
)
}
}
var bounds=new OpenLayers.bounds(minX,minY,maxX,maxY).transform(wgs84Proj,osmapProj);
zoomToExtent(边界,false);
}   
window.onload=初始化;


A.
B
C
朗
拉特
1.
11
111
28
-26.00
2.
22
222
28
-26.20
3.
33
333
28.50
-26.50
4.
44
444
27
-25.00

已编辑:已修复

由于外部图形的url不正确,因此未呈现标记。出于某种原因,openlayers不报告错误,只需将功能添加到UnderedFeatures变量

通过将url更改为
http://wiki.openstreetmap.org/w/images/e/e7/Ol_icon_blue_example.png
功能渲染,尽管它们位于大西洋

已编辑:包括从wgs84到球面的点变换

如果标记所需的数据位于javascript数组中,则可以在循环中执行与下面类似的操作

var vectorLayer = new OpenLayers.Layer.Vector("Overlay");

// Define markers as "features" of the vector layer:
var feature = new OpenLayers.Feature.Vector(
        new OpenLayers.Geometry.Point( -0.1279688, 51.5077286).transform(wgs84Proj,osmapProj),
        {description:'This is the value of<br>the description attribute'} ,
        {externalGraphic: 'http://wiki.openstreetmap.org/w/images/e/e7/Ol_icon_blue_example.png', graphicHeight: 25, graphicWidth: 21, graphicXOffset:-12, graphicYOffset:-25  }
    );    
vectorLayer.addFeatures(feature);
var vectorLayer=新的OpenLayers.Layer.Vector(“覆盖”);
//将标记定义为矢量图层的“特征”:
var feature=new OpenLayers.feature.Vector(
新OpenLayers.几何.点(-0.1279688,51.5077286).变换(wgs84Proj,osmapProj),
{description:'这是描述属性'}的值,
{外部图形:'http://wiki.openstreetmap.org/w/images/e/e7/Ol_icon_blue_example.png,graphicHeight:25,graphicWidth:21,graphicXOffset:-12,graphicYOffset:-25}
);    
矢量图层。添加特征(特征);
显然,您需要在阵列中循环,获取所需的数据,并在创建特性时将其添加到特性中


这就是你想要的吗?

谢谢你的帮助。我试过使用向量,但似乎不起作用。我已经贴好了我的标签