描述:主要是想从数据库中动态读出坐标,然后显示到谷歌地图中
现在程序可以显示写死的点,可以读出数据库中的坐标,但是就是无法将读出的坐标显示在地图上!程序如下:
前台代码<%@ 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&v=2&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')
现在程序可以显示写死的点,可以读出数据库中的坐标,但是就是无法将读出的坐标显示在地图上!程序如下:
前台代码<%@ 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&v=2&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')
解决方案 »
- js 数组 递归
- lazyload 的原理是什么
- 大家帮帮我看下这我的菜单问题,要哭了..----------------!
- JvavScript中表單Form中的select值如何傳到另一個頁面?Action?
- 怎样得到所有不同name和id的checkbox对象?
- 请问这个正则表达式应该怎么写?在线等
- 简单的javascript!请问如何实现判断文本框输入内容,然后进行网页跳转呢??
- 下拉列表控件的方法。
- 关于动态写成的HTML页面的JS引入问题,急!能给多少分就给多少分!
- jquery dialog open时总是会重新刷新网页
- 关于execCommand执行的问题
- 控制DIV中LI的宽度
var jingxiaoshang = new Array();
jingxiaoshang 重置了...你应该把 var jingxiaoshang = new Array();这句写到上面的 <script 里面去....仔细看你生成的HTML代码吧...
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[]数组中了呀~
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);
}
}
);
}
}
<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&v=2&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));
}就是从数据库读出后,不知为何就执行不了~
肯定没值
但是你前台一new就没了都
10楼的就是右键查HTML代码后的结果~