将 SQL 数据导入 JS 数组

Posted

技术标签:

【中文标题】将 SQL 数据导入 JS 数组【英文标题】:Import SQL Data into JS Array 【发布时间】:2014-10-01 09:41:06 【问题描述】:

我想显示一个显示一组标记的地图。我正在使用 OSM 和 OpenLayers 库来做到这一点。如果我使用静态值,一切正常。但现在我想显示 SQL 表中的标记。获取数据并将其填充到 JS 数组中的最佳方法是什么?

这是我的代码:

        <script>
        map = new OpenLayers.Map("mapdiv");
        map.addLayer(new OpenLayers.Layer.OSM());

        var size = new OpenLayers.Size(10,10);
        var icon = new OpenLayers.Icon('img/marker.gif', size);

        epsg4326 =  new OpenLayers.Projection("EPSG:4326"); //WGS 1984 projection
        projectTo = map.getProjectionObject(); //The map projection (Spherical Mercator)

        var lonLat = new OpenLayers.LonLat( 8.289166666666, 46.834444444444 ) .transform(epsg4326, projectTo);

        var zoom=8;
        map.setCenter (lonLat, zoom);

        // var markers = new OpenLayers.Layer.Markers( "Markers" );
        // map.addLayer(markers);

        // markers.addMarker(new OpenLayers.Marker(lonLat, icon));

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

        // Define an array.
        var markers = [ 

        // SQL DATA NEEDS TO GO HERE! Formated like this: 
        //  [47.153339352283,8.51886974582752],
        //  [47.5047313406471,8.76598280071111],
        //  [47.3085363748528,8.598335445835]

        ];

        //Loop through the markers array
        for (var i=0; i<markers.length; i++) 

            var lon = markers[i][1];
            var lat = markers[i][0];

            var feature = new OpenLayers.Feature.Vector(
                    new OpenLayers.Geometry.Point( lon, lat ).transform(epsg4326, projectTo),
                    description: "marker number " + i ,
                    externalGraphic: 'img/marker.gif', graphicHeight: 10, graphicWidth: 10, 
                );             
            vectorLayer.addFeatures(feature);
                                

        map.addLayer(vectorLayer);

    </script>

SQL 表:

谢谢你:)

【问题讨论】:

使用 ajax 和像 php 或 asp 这样的服务器端语言来提取数据并将其作为 json 推送出去。使用结果然后填充 OSM 需要的内容 哪个数据库?如果是 Postgres,您可以使用 st_asjson 并使用 java、php 从您的服务器返回 geojson,因为 (geo)json 可以很容易地转换为开放层功能。 @JohnBarça 我正在使用 MS SQL Server... 我建议使用 .NET JSON 类从 SQL 服务器创建 JSON,并将其发送到 OpenLayers。 【参考方案1】:

好的,我有一个解决方案: 首先,我使用 stringbuilder 在 C# 中构建了字符串,并为我的 JS 数组正确格式化了它。然后我将该字符串传递给 JS:

    var markers = [ <%=markers1%> ];

【讨论】:

以上是关于将 SQL 数据导入 JS 数组的主要内容,如果未能解决你的问题,请参考以下文章

将数组从 redux 存储导入到表中。反应,js

Javascript:从从 XML 文件导入数据切换到从 JS 对象数组导入数据

如何使用 json 和 sql 将数据导入 EXTJS 网格面板

js数组如何导入到一个表格里

SQL.JS:JS数据库

怎样将EXCEL数据导入到sql中