描述:主要是想从数据库中动态读出坐标,然后显示到谷歌地图中
现在程序可以显示写死的点,可以读出数据库中的坐标,但是就是无法将读出的坐标显示在地图上!程序如下:
前台代码<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>Untitled Page</title>
     <script type="text/javascript">               <%=GetRootIDArray() %>;           
        </script>
</head>
<body onload="initialize()" onunload="GUnload()"> 
<script src="http://ditu.google.cn/maps?file=api&amp;v=2&amp;key=abcdefg&sensor=true_or_false" 
            type="text/javascript"></script>     <div id="map" style="width: 700px; height: 450px" align="center"></div>  
          <script src="js/test.js" type="text/javascript" ></script>
    <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label></body>
</html>
后台C#using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Web.UI.HtmlControls;public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {    }
    protected string GetRootIDArray()
    {
        SqlConnection conn = MyDB.GetConn();
        SqlCommand cmd = new SqlCommand("select jingdu, weidu from jiamengshang", conn);
        SqlDataAdapter adp = new SqlDataAdapter(cmd);
        DataSet ds = new DataSet();
        adp.Fill(ds);
        System.Text.StringBuilder text = new System.Text.StringBuilder();
        if (ds.Tables.Count > 0)
        {            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                text.AppendFormat("jingxiaoshang[ {0} ]  =  new  Array('{1}','{2}');", i.ToString(), ds.Tables[0].Rows[i]["jingdu"].ToString(), ds.Tables[0].Rows[i]["weidu"].ToString());
            }
        }
        Label1.Text = text.ToString();
        return text.ToString();    }
}
test.js代码var jingxiaoshang = new Array(); var map = new GMap2(document.getElementById("map"));
//添加一个控制条   
map.addControl(new GSmallMapControl());//配置中心点经纬度(青海)和缩放系数,并显示   
map.setCenter(new GLatLng(35.66, 96.74), 6);
//var jingxiaoshang = new Array(); 
for (i = 0; i < jingxiaoshang.length; i++) {
    var temp = point + i;
    temp = new GLatlng(jingxiaoshang[i][0], jingxiaoshang[i][1]);
    map.addOverlay(createMarker(temp, i));
    }//var point2 = new GLatLng(36.56, 101.74);
//map.addOverlay(createMarker(point2, 2));//上面这两句是可以设置点,createMarker后面的1可以设置成超连接或者显示东西
//根据数据库里的数据循环输出上面这两句话就可以了,输出所有点
function createMarker(point, number) {
    var er = new GMarker(point);
    GEvent.addListener(er, "click", function() {
        er.openInfoWindowHtml("xining<b>" + number + "</b>");
    });
    return er;
}
//这个函数是输出点击那个点之后出来,输出的内容。
数据库代码USE [binge]
GO
/****** 对象:  Table [dbo].[jiamengshang]    脚本日期: 10/11/2009 23:06:52 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[jiamengshang](
[jiamengshangId] [int] NULL,
[bianhao] [varchar](10) NULL,
[sheng] [varchar](10) NULL,
[shi] [varchar](10) NULL,
[wangwangId] [varchar](10) NULL,
[QQId] [varchar](10) NULL,
[website] [varchar](10) NULL,
[dizhi] [varchar](10) NULL,
[jingdu] [varchar](10) NULL,
[weidu] [varchar](10) NULL
) ON [PRIMARY]GO
SET ANSI_PADDING OFFinsert jiamengshang (jiamengshangId,bianhao,sheng,shi,wangwangId,QQId,website,dizhi,jingdu,weidu)  values ( 1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'36.08','101.09')
insert jiamengshang (jiamengshangId,bianhao,sheng,shi,wangwangId,QQId,website,dizhi,jingdu,weidu)  values ( 2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'36.18','101.19')

解决方案 »

  1.   

    test.js 中你把 
    var jingxiaoshang = new Array(); 
    jingxiaoshang 重置了...你应该把 var jingxiaoshang = new Array();这句写到上面的 <script 里面去....仔细看你生成的HTML代码吧...
      

  2.   


     protected string GetRootIDArray()
        {
            SqlConnection conn = MyDB.GetConn();
            SqlCommand cmd = new SqlCommand("select jingdu, weidu from jiamengshang", conn);
            SqlDataAdapter adp = new SqlDataAdapter(cmd);
            DataSet ds = new DataSet();
            adp.Fill(ds);
            System.Text.StringBuilder text = new System.Text.StringBuilder();
            if (ds.Tables.Count > 0)
            {            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    text.AppendFormat("jingxiaoshang[ {0} ]  =  new  Array('{1}','{2}');", i.ToString(), ds.Tables[0].Rows[i]["jingdu"].ToString(), ds.Tables[0].Rows[i]["weidu"].ToString());
                }
            }
            Label1.Text = text.ToString();
            return text.ToString();    }这个读出坐标,写到jingxiaoshang[]数组中了呀~
      

  3.   


    function showAddress(address) {
          if (geocoder && !big) {
            geocoder.getLatLng(
              address,
              function(point) {
                if (!point) {
                  alert("不能解析: " + address);
                } else {
                var er = new GMarker(point);
                map.addOverlay(er);
                map.setCenter(point, 13);
                }
              }
            );
          }
        }
      

  4.   

    你好,我把JS代码写在程序里了,然后运行,产生的HTML代码如下:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html>
    <head id="Head1"><title>
    Untitled Page
    </title></head>
    <body onload="initialize()" onunload="GUnload()"> 
    <div id="map" style="width: 700px; height: 450px" align="center"></div> 
    <script src="http://ditu.google.cn/maps?file=api&amp;v=2&amp;key=abcdefg&sensor=true_or_false" 
                type="text/javascript"></script> 
        <script type="text/javascript">     var jingxiaoshang = new Array(); jingxiaoshang[0]  =  new  Array('36.08','101.09');jingxiaoshang[1]  =  new  Array('36.18','101.19');  </script> 
    <script type="text/javascript">    var map = new GMap2(document.getElementById("map"));
        //添加一个控制条   
        map.addControl(new GSmallMapControl());    //配置中心点经纬度(青海)和缩放系数,并显示   
        map.setCenter(new GLatLng(35.66, 96.74), 6);    for (i = 0; i < jingxiaoshang.length; i++) {
            map.addOverlay(createMarker(new GLatlng(jingxiaoshang[i][0], jingxiaoshang[i][1]), i + 1));
        }
        
        //    var point2 = new GLatLng(36.56, 101.74);
        //    map.addOverlay(createMarker(point2, 2));    //上面这两句是可以设置点,createMarker后面的1可以设置成超连接或者显示东西
        //根据数据库里的数据循环输出上面这两句话就可以了,输出所有点
        function createMarker(point, number) {
            var er = new GMarker(point);
            GEvent.addListener(er, "click", function() {
                er.openInfoWindowHtml("xining<b>" + number + "</b>");
            });
            return er;
        }
        //这个函数是输出点击那个点之后出来,输出的内容。    </script> 
        <span id="Label1">jingxiaoshang[0]  =  new  Array('36.08','101.09');jingxiaoshang[1]  =  new  Array('36.18','101.19');</span>    </body> 
    </html>运行时关于脚本报2个错误
    Line:26
    Char:9
    Code:0
    Error:'GLatlng' 未定义
    网址:http://localhost:1531/WebSite3/Default3.aspx

    Line:9
    Char:1
    Code:0
    Error:缺少对象
    网址:http://localhost:1531/WebSite3/Default3.aspx我不明白为什么用“ map.addOverlay(createMarker(new GLatlng(jingxiaoshang[i][0], jingxiaoshang[i][1]), i + 1));”,从数据库中动态读出就不行。如果写成
    var point2 = new GLatLng(36.56, 101.74);
    map.addOverlay(createMarker(point2, 2));
    这样,点就可以标记出来。或者是在程序里给出数组,都可以正常执行,如:
    var mycars=new Array(2);
    mycars[0]=new Array("35.56","96.97");
    mycars[1]=new Array("35.76","97.86");
    for (i = 0; i < mycars.length; i++) { map.addOverlay(createMarker(new GLatLng(mycars[i][0], mycars[i][1]),i+1));
        }就是从数据库读出后,不知为何就执行不了~
      

  5.   

    你右键查看你的HTML源代码吧
    肯定没值
      

  6.   

    虽然说你在后台定义了jingxiaoshang
    但是你前台一new就没了都
      

  7.   

     <script type="text/javascript">     var jingxiaoshang = new Array(); jingxiaoshang[0]  =  new  Array('36.08','101.09');jingxiaoshang[1]  =  new  Array('36.18','101.19');  </script>已经读出来了呀,而且用alert(jingxiaoshang[0][0]);可以谈出对应的数据呀
      

  8.   


    10楼的就是右键查HTML代码后的结果~