本实例演示借助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,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、结果展示
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。