服务地图功能的开发心得
上个月帮校团委做了一个服务地图功能的开发。现在写一下心得吧,记录一下我的成长~~~~~
这个服务地图的前端跟后台都是我自己一个人完成的,这是第一次前端后台都自己做的。在不懂前端,只懂后台的情况下做这个功能,其实有点不容易!所以做的时候在前端方面的内容花的时间比较多,光是JS的参数问题就百度了N多次(那个时候没学JS),现在才知道那是多么简单的傻B问题。
这个地图调用的是百度地图的API,申请密钥等操作的时候百度自动帮你生成代码(代码注释得也挺详细),那对开发有很大的方便,开发速度也大大提高。调用百度地图的API只是这个功能的基础,然后就是在这个地图上做文章了。在这个开发的过程中其实还遇到了不少的问题,也学得了不少。例如:URL的解释、文件路径、根据地址获取经纬度等等,虽然那些都是很细节的问题,不过一天不解决就一天不能完成。最大的体会就是在设计测试的时候要防止各种非法输入,如果连白痴都能够正常使用的话,应该也就差不多了吧。事实上在试运行的时候也发现了很多的bug,通过这些bug,其实学到的还挺多的。我也似乎明白了bug是永无止境的~~~~
每做完一个项目,心里都挺开心的,至少多了一点点的成就感,我可以作贡献的!而且我本身也很享受这个开发的过程,尽管其中会有烦恼、急躁的情绪。我一直都相信:没有学不会的知识,而且努力是会有回报的!我喜欢,所以我选择了这条路来实现我的人生意义。
地图网址:http://xtw.gdut.edu.cn/web_zyfw/map/Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="AllPoints.aspx.cs" Inherits="AllPoints" %> <!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"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>广东工业大学志愿服务点</title> <style type="text/css"> html{height:100%} body{height:100%;margin:0px;padding:0px} #milkMap{height:654px; width:1261px; border:1px solid blue; } .style2 { width: 570px; } </style> <script type="text/javascript" src="http://api.map.baidu.com/api?v=1.1&services=false"></script> </head> <body> <form id="form1" runat="server" target="right"> <div id="milkMap"></div> </form> </body> <script type="text/javascript"> function initMap() { setMapEvent(); //设置地图事件 } //地图事件设置函数: function setMapEvent() { map.enableDragging(); //启用地图拖拽事件,默认启用(可不写) map.enableScrollWheelZoom(); //启用地图滚轮放大缩小 map.enableDoubleClickZoom(); //启用鼠标双击放大,默认启用(可不写) map.enableKeyboard(); //启用键盘上下左右键移动地图 } var map = new BMap.Map("milkMap"); // 创建地图实例 var point = new BMap.Point(113.439, 23.0916); // 创建点坐标 map.centerAndZoom(point, 12); // 初始化地图,设置中心点坐标和地图级别 map.addControl(new BMap.OverviewMapControl({ isOpen: 1, anchor: BMAP_ANCHOR_TOP_RIGHT })); //为地图添加鹰眼 map.addControl(new BMap.NavigationControl()); //为地图添加鱼骨 // var zsIcon = new BMap.Icon("http://openapi.baidu.com/map/images/us_mk_icon.png", //图片地址 //new BMap.Size(20, 20), // 标注显示大小 //{ //offset: new BMap.Size(0, 0), // 标注底部小尖尖的偏移量 //imageOffset: new BMap.Size(-46, 0) // 这里相当于CSS sprites //}); var zsIcon = new Array(); var pointMarker = new Array(); var marker = new Array(); var infoWindow = new Array(); <% int i=0;while(i<SitesCount()) { %> zsIcon[<%=i%>] = new BMap.Icon("http://openapi.baidu.com/map/images/us_mk_icon.png", //图片地址 new BMap.Size(20, 20), // 标注显示大小 { offset: new BMap.Size(0, 0), // 标注底部小尖尖的偏移量 imageOffset: new BMap.Size(<%=Icon(i)[0]%>,<%=Icon(i)[1]%>) // 这里相当于CSS sprites }); pointMarker[<%=i%>] = new BMap.Point(<%=DTMapSite().Rows[i]["Coordinate"]%>); marker[<%=i%>] = new BMap.Marker(pointMarker[<%=i%>], { icon: zsIcon[<%=i%>] }); map.addOverlay(marker[<%=i%>]); infoWindow[<%=i%>] = new BMap.InfoWindow("<p><% for(int j=0;j<PointImagesCount(Convert.ToInt32(DTMapSite().Rows[i]["Id"]));j++) {%> <a target='_blank' title='相片' alt='相片' > <img src=<%=PointImages(Convert.ToInt32(DTMapSite().Rows[i]["Id"])).Rows[j]["ImageAddress"] %> /></a> <% } %></p><p style='font-size:12px;'>服务点:<%=DTMapSite().Rows[i]["ServicePoint"]%></p><p style='font-size:12px;'>服务点简介:<%=DTMapSite().Rows[i]["Intro"] %></p><p style='font-size:12px;'>地址:<%=DTMapSite().Rows[i]["Location"] %></p>-------------------------------------------------</p><p style='font-size:12px;'>志愿组织:<%=DTMapSite().Rows[i]["Department"] %></p><p style='font-size:12px;'>服务内容:<%=DTMapSite().Rows[i]["Works"] %></p><p style='font-size:12px;'>志愿服务负责人:<%=DTMapSite().Rows[i]["Principal"] %></p><p style='font-size:12px;'>联系方式:<%=DTMapSite().Rows[i]["Contact"] %></p>"); // 创建信息窗口对象 marker[<%=i%>].addEventListener("onmouseover", function () { //给招商银行标注添加点击事件 this.openInfoWindow(infoWindow[<%=i%>]); //打开招商银行的窗口 }); marker[<%=i%>].addEventListener("click", function () {window.open("Details.aspx?ServicePoint=<%=DTMapSite().Rows[i]["ServicePoint"] %>&&Department=<%=DTMapSite().Rows[i]["Department"] %>");}); <% i++; %> <% } %> initMap(); </script> </html>