在地图上绘制数据

时间:2015-11-05 16:03:59

标签: c# excel visual-studio-2010 for-loop maps

我正在尝试编写Windows窗体应用程序以在地图上显示数据。如果我手动输入数据,我可以成功写入数据,但在通过Excel文件上传数据时遇到一些问题。我已将Latitude和Longitude存储在Excel文件中,我正在读取该文件。我的代码正在完美地读取数据,但它没有被绘制。但是,如果我在Excel文件中只存储一个Lat / Long,则会绘制该图。这是我的手动数据传输代码,工作正常。

private void btnsearch_Click(object sender, EventArgs e)
        {
            string lat = txtlat.Text;

            try
            {
                StringBuilder queryaddress = new StringBuilder();
                queryaddress.Append("https://www.here.com/search/");

                if (street != string.Empty)
                {
                    queryaddress.Append(street );
                }

                webBrowser1.Navigate(queryaddress.ToString());
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message.ToString(), "Error");
            }
        }

当我逐个从Excel文件中读取数据时,它没有被绘制。这是代码:

private void btnmap_Click(object sender, EventArgs e)
        {

            for (int i = 1; i <=20; i++)
            {
                System.Threading.Thread.Sleep(3000);
                tb_display_content.Text = excel_getValue("A" + i);
                string lat = tb_display_content.Text;
                try
                {
                    StringBuilder queryaddress = new StringBuilder();

                    queryaddress.Append("https://www.here.com/search/");

                    if (lat != string.Empty)
                    {
                        queryaddress.Append(lat );
                    }

                    webBrowser1.Navigate(queryaddress.ToString());
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message.ToString(), "Error");
                }
            }
        }

此代码有什么问题?请建议。

2 个答案:

答案 0 :(得分:0)

  1. 在循环之外取StringBuilder queryaddress = new StringBuilder();
  2. 清除下一个循环的queryaddress
  3. 那应该照顾好你的问题

答案 1 :(得分:0)

你有两个问题。看起来您没有正确构建http查询字符串。您尝试使用的服务的网址是......

https://www.here.com/search/testing?x=ep&map=41.56144,-71.59227,12,normal

其中“testing”是搜索词,“map = 41.56144,-71.59227”是地图的中心位置。为了正确显示纬度/经度,您需要复制它并替换lat,long和搜索项。有点像...

var searchTerm = "kittens";
var lat = "41.2312";
var lon = "-72.102";
var finalURL = string.format(@"https://www.here.com/search/{0}?x=ep&map={1},{2},12,normal",searchTerm, lat, lon);

您的第二个问题是,在Excel示例中,您正在定义URL,请求该URL,显示该URL,然后每3000毫秒重复一次该过程。该代码只会在完成运行后显示Excel电子表格中的最后一个点(如果它完全运行...提示......由于您的第一个问题,它不会显示)。

以下是一些推荐阅读材料:HTTP Query Strings