Rob,我确信有更好的方法可以做到这一点,但这是我实现它的方式。
我即将为您提供的解决方案应该允许您向 Mapbox 地图添加标记(搜索“omnivore mapbox”以获取 Web 应用程序 CSV 导入等效于 TileMill 添加数据源功能),该地图可以通过您的 Web 应用程序访问并获取其数据从连接到 MS SQL 数据库的 GridView 生成的 CSV 文件。
我遇到了同样的问题,数据在 SQL 2008 中,我需要用它来创建地图。Mapbox 需要 CSV 或 POSTGRESQL 来显示图钉,但我在任何地方都没有设置 POSTGRESQL 服务器。这是我所做的:(请注意,我正在使用 C# 并创建一个 ASP NET Web 应用程序)
- 创建一个空的 ASPX 页面,我们称之为 DataGridView.aspx
- 添加一个网格视图
- 将该 GridView 链接到您的 SQL 数据源
- 创建一个按钮,将其命名为“刷新 CSV”
- 双击它以自动为该按钮创建一个事件。
在该按钮的事件代码中,使用以下代码:
protected void Button1_Click(object sender, EventArgs e)
{
GridView1.AllowPaging = false;
GridView1.DataBind();
StringBuilder sb = new StringBuilder();
for (int k = 0; k < GridView1.Columns.Count; k++)
{
if(k==0) // little trick to avoid comma at the end of the line
{
sb.Append(GridView1.Columns[k].HeaderText);
continue;
}
//add separator
sb.Append(',' + GridView1.Columns[k].HeaderText);
}
//append new line
sb.Append("\r\n");
for (int i = 0; i < GridView1.Rows.Count; i++)
{
for (int k = 0; k < GridView1.Columns.Count ; k++)
{
if (k == 0) // little trick to avoid comma at the end of the line
{
sb.Append(GridView1.Rows[i].Cells[k].Text);
continue;
}
//add separator
sb.Append(','+GridView1.Rows[i].Cells[k].Text );
}
//append new line
sb.Append("\r\n");
}
string a= string.Empty;
StreamWriter yourStream = File.CreateText(Server.MapPath("~/CSVExport.csv"));
a = sb.ToString()+"\r\n"; //formatting text based on poeition
yourStream.Write(a);
yourStream.Close();
}
不要忘记在 DataGridView.aspx.cs 文件的开头有这些
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Text;
在您的 Web 应用程序的根目录上,创建一个空文件,将其命名为“CSVExport.csv”。
这将保存格式为 CSV 的 GridView 数据。
现在,每次单击该按钮时,它都会更新您的 CSVExport.csv 文件。
要检查一切是否正确显示,请启动 TileMill 并运行(在本地调试运行)您的网站。
转到 [localhost:whateverthatportnumberis]/DataGridView.aspx
点击按钮。打开 CSVExport.csv 以检查您的文件是否已更新(您应该会看到 CSV 文件格式的数据。)
现在,在不停止本地网站测试的情况下,继续使用 TileMill [localhost:whateverthatportnumberis]/CSVExport.csv 中 CSV 文件的链接
如果您的 CSVExport.csv 文件格式正确,您应该会看到正在显示的标记。这应该回答您有关如何将数据从 SQL 获取到 Mapbox 可以使用的 CSV 格式的问题。当您说:“有没有更好的方法来创建必须在本地访问的地理映射应用程序?”时,您的问题在这里变得模棱两可。所以我要在这里停下来。
同样,我刚刚给您的解决方案应该允许您向 Mapbox 地图添加标记(搜索“omnivore mapbox”以获取 Web 应用程序 CSV 导入等效于 TileMill 添加数据源功能),可以通过您的 Web 应用程序访问并获取其数据从连接到 MS SQL 数据库的 GridView 生成的 CSV 文件。