用ASP.NET實(shí)現(xiàn)調(diào)用谷歌(Google)衛(wèi)星圖

2010-08-28 10:52:28來源:西部e網(wǎng)作者:

這兩天我在一個(gè)程序中需要用到谷歌衛(wèi)星地圖,但是因?yàn)锳PI太過于復(fù)雜,于是我自己總結(jié)出一個(gè)簡化版本來,只需要兩行JS代碼即可在任意頁面中實(shí)現(xiàn)


首先建立一個(gè)數(shù)據(jù)庫,名字就叫 map_international

字段


id 自增長 主鍵

axis_x 單精度
axis_y 單精度
address_name UNICODE文本 16字長
about UNICODE文本 64字長

字段說明:

id:自己會增長,不用我們填寫


axis_x:經(jīng)度,如 -22.342231

axis_y:緯度

address_name:地名,如“悉尼市”,十六個(gè)字基本夠用

about:簡介,如“悉尼市位于澳大利亞....” ,六十四個(gè)字基本夠用


-----------------------------------------------------------
數(shù)據(jù)庫設(shè)置完畢,隨便找個(gè)地標(biāo)填寫一下,例如:


29.97595571315068,31.13193064301058,吉薩金字塔,位于埃及尼羅河三角洲,5000年的歷史......


建立一個(gè)ASP.NET文件,文件全部內(nèi)容如下:
<%@ Page Language="Jscript" %>
<%@ Import Namespace="System" %>
<%@ Import Namespace="System.Data.OleDb" %>

<script runat="server">

/*

默認(rèn)地圖大小是長 480,寬460

可以通過 w和h參數(shù)來動態(tài)設(shè)定大小
w和h兩個(gè)參數(shù)是可選的
例如:

mapload.aspx?id=1&key=abcdefghijklnm&w=320&h=240 表示窗口寬度是 320 高度是 240

*/


function Page_Load(){


var axis_x:String = "", axis_y:String = "", name:String = "", about:String = "",width:String = "480",height:String = "460";

if (Request.QueryString["w"] != null)
{
width = Request.QueryString["w"].ToString();
}

if (Request.QueryString["h"] != null)
{
height = Request.QueryString["h"].ToString();
}

var key:String = Request.QueryString["key"].ToString();
var dr:OleDbDataReader;
var cmd:OleDbCommand;
var adp:OleDbDataAdapter;
var conn:OleDbConnection;
var connStr:StringBuilder;
var id:int;

//安全過濾,保證不受SQL注入攻擊
try
{
id = int.Parse(Request.QueryString["id"].ToString());
}
catch(e)
{
Response.End();
return;
}

//SQL Server 數(shù)據(jù)庫
connStr = new StringBuilder("provider=SQLOleDb;sever=localhost;uid=kvspas;password=密碼;database=數(shù)據(jù)庫名");

//ACCESS 數(shù)據(jù)庫
//connStr = new StringBuilder("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=");
//connStr.Append(Server.MapPath("map.mdb"));

conn = new OleDbConnection(connStr.ToString());

cmd = new OleDbCommand("SELECT * FROM map_international WHERE id = " + id,conn);

conn.Open();

try
{
dr = cmd.ExecuteReader();

while(dr.Read())
{
axis_x = dr["axis_x"].ToString();
axis_y = dr["axis_y"].ToString();
name = dr["address_name"].ToString();
about = dr["about"].ToString();
}
}
catch(e){}
finally
{
dr.Close();
conn.Close();
}

Response.Write("google_map_key =\""+key+"\";loadMaps("+axis_x+","+axis_y+",\""+name+"\","+width+","+height+");");

}
</script>
-------------------------
好了,導(dǎo)入
<script type="text/javascript" src=">
<script type="text/javascript" src="http://上面那個(gè)asp.net文件名.aspx?id=1&key=你的谷歌地圖API的KEY"></script>

如果不想用asp.net和數(shù)據(jù)庫,你也可以這么做:

<script type="text/javascript" src=">
<script type="text/javascript">
//<!--
//下面的一行修改成你自己的KEY
google_map_key = "ABQIAAAAWERdBboHQYPVZJOtJA8nMRTLyvHy2O1xzwu9As5J_TYbuxW7WxSOH6DCZdrClm8W38PMVlYBExCWrw";
loadMaps(29.97595571315068,31.13193064301058,"吉薩金字塔",400,300);
//-->
</script>