本实例演示借助WebService、Ajax技术和回调函数,从MSSQL数据库中获取所需数据,并用JavaScript语言将数据结果显示到网页地图上。 1、WebService (1)在工具箱的Ajax Extentions下面找到ScriptMa
本实例演示借助WebService、Ajax技术和回调函数,从MSSQL数据库中获取所需数据,并用JavaScript语言将数据结果显示到网页地图上。
1、WebService
(1)在工具箱的Ajax Extentions下面找到ScriptManager控件,拖到网页上,右键属性,打开Services集合,将Path设为WebService.asmx,如下图所示:
(2)打开App_Code中的WebService.cs,一定要做到取消对[System.Web.Script.Services.ScriptService]行的注释,然后开始编写WebService,该实例写一个从NMET数据库的school表中获取信息(包括学校名称,经纬度等),将结果凑成一个JSON格式的字符串。
[WebMethod]
public string GetSchool()
{
string SQL = "SELECT * FROM SCHOOL";
string st;
MyDBase DB = new MyDBase(".", "NMET");
SqlDataReader RD = DB.DBDataReader(SQL);
st = "[";
while (RD.Read())
{
st = st + "{sname:\'" + RD["sname"].ToString().Trim() + "\',lnglat:[" + RD["LNG"].ToString().Trim() + "," + RD["LAT"].ToString().Trim() + "],info:\'"+RD["SAdd"].ToString().Trim()+"\'},";
}
int n = st.Length - 1;
st = st.Substring(0, n);
st = st + "]";
DB.DBClose();
return st;
}
2、回调函数
(1)采用eval()函数,将JSON格式字符串转化为对象;
(2)将WebService中获取的学校名称添加到下拉列表框中;
(3)将坐标信息以点的形式显示到天地图上;
(4)对点添加鼠标点击和鼠标移动事件。
function init()
{
var S = new WebService();
S.GetSchool(getschool);
}
//回调函数
function getschool(e) {
var LNG, LAT;
var s;
s = eval('(' + e + ')');
LNG = parseFloat(s[0].lnglat[0]);
LAT = parseFloat(s[0].lnglat[1]);
var lnglats = new Array();
var names = new Array();
var URLs = new Array();
var INFO = new Array();
var infoWin;
document.getElementById("school").options.length = 0;
for (var i = 0; i < s.length; i++)
{
var lat, lng;
lng = parseFloat(s[i].lnglat[0]);
lat = parseFloat(s[i].lnglat[1]);
lnglats[i] = new TLngLat(lng, lat);
names[i] = String(s[i].sname);
URLs[i] = String(s[i].url);
INFO[i] = String(s[i].info);
document.getElementById("school").options.add(new Option(names[i], names[i]));
}
for (var i = 0; i < lnglats.length; i++)
{
(
function(n) {
var marker = new TMarker(lnglats[n]);
map.addOverLay(marker);
TEvent.addListener(marker, 'click', function() {
var truthBeTold = window.confirm("请你选择:点击“确定”进行地图定位,点击“取消”进入学校主页")
if (truthBeTold) Locate(s[n].sname);
else window.open(URLs[n]);
});
TEvent.addListener(marker, 'click', function() {
Locate(s[n].sname); //点击进行学校地图定位
});
TEvent.addListener(marker, 'mouseover', function() {
infoWin = marker.openInfoWinHtml("这里是“" + names[n] + "”," + INFO[n] + ",请点击!");
//infoWin.setTitle("提示");
//infoWin.setLabel('<a href="http://www.baidu.com" target="_blank">URLs[n]</a>');
//infoWin.closeInfoWindowWithMouse(); //该方法不太灵活,自编关闭函数
});
TEvent.addListener(marker, 'mouseout', function() {
infoWin.closeInfoWindow();
});
}
)(i);
}
}
3、结果展示
