将数据库与谷歌静态地图标记集成(叠加)

时间:2011-02-28 16:20:10

标签: asp.net database google-maps

我找不到通过数据库在静态谷歌地图上创建叠加层的方法。我可以轻松地实现单个标记(位置)。下面是代码:

int mapID = Convert.ToInt16(hdnMapID.Value);         SqlDataReader dr = Maps.GetMapPointsByMapIDUserID(mapID,userID);

   string latitude = "53.615143";
   string longitude = "-1.711380";
    string center = "" + latitude + "," + longitude + "";
    string zoom = "20";
    string size = "512x512";
    string maptype = "roadmap";

    while (dr.Read())
    {


            map2.ImageUrl = "http://maps.google.com/maps/api/staticmap?center=" + center + "&zoom=" + zoom + " &size=" + size + "&maptype=" + maptype + "&markers=color:blue|label:S|" + dr["lat"] + ", " + dr["lng"] + "&sensor=true";
        }



        cnt++;
    }
    dr.Dispose();

在上面的网址中,单个位置很容易传递标记值(颜色:蓝色|标签:S |“+ dr [”lat“] +”,“+ dr [”lng“] +),但是在我的项目中,我有多个位置,我无法找到为多个位置创建不同网址的方法,例如,如果有两个位置,上面的网址中将有2个标记,我如何根据数字创建编程的谷歌静态网址地图中存在的标记(叠加)。

任何教程或帮助都将受到高度赞赏

2 个答案:

答案 0 :(得分:1)

M'vy的第1号文章

确定。我想我明白了。所以我编辑答案以使用代码片段。 以下代码必须用于 ONE mapId

int mapID = Convert.ToInt16(hdnMapID.Value); 
/* I suppose this executes the following SQL query : 
 * SELECT lat, lng FROM Table WHERE mapID = :mapID;
 */
SqlDataReader dr = Maps.GetMapPointsByMapIDUserID(mapID, userID);

string latitude = "53.615143";
string longitude = "-1.711380";
string center = "" + latitude + "," + longitude + "";
string zoom = "20";
string size = "512x512";
string maptype = "roadmap";

/* This is the basic link, with no markers */
string URLStart = "http://maps.google.com/maps/api/staticmap?center=" +
center + "&zoom=" + zoom + " &size=" + size + "&maptype=" + maptype + "&sensor=true";

string markersStr = "";

/* Each record we will read correspond to one point on the map: 
 * NB you don't need the markerID 
 * We add each point long and lat to the string */
while (dr.Read()) {
    markersStr += "&markers=color:blue|label:S|" + dr["lat"] + ", " + dr["lng"] + ;
}

map2.ImageUrl = URLStart + markersStr;
dr.Dispose();

//Then display the map with the URL that has all the point for mapId

markerId没用。您可以使用轻松计算值     SELECT COUNT(*)FROM表WHERE mapID = 581;


第一篇文章

Hello Muhammad,

您可以在Google Map Static API here

中找到答案

对于多个标记,您只需重复URL中的markers参数即可。 您可以选择其他颜色,名称等。只需添加新的&markers=<blah blah>

即可

M'vy

答案 1 :(得分:0)

要创建静态地图网址,您可以使用此开源项目 - http://code.google.com/p/google-maps/