首先说一点废话:
1. 关于名字tonylp,其实从程序员的角度来说,我是喜欢写成tonyLp,采用骆驼法,但是不知道那时候为了什么,博客园的名字变成tony_lp,如果我没记错的话,这应该是c++里面的一种命名方法,欢迎拍砖哦,因为我实在记不清了。
2.我挺喜欢博客园的,这地方大牛好多,我也喜欢在这发随笔,但是总觉得转载来的东西,味道会怪怪的,所以力求所有发表的东西都是自己一个字一个字敲出来的,当然我没有任何鄙视那些转载别人文章的人的意思,毕竟通过转载,的却很方便让我欣赏到了好的文章。
3. 作为一个奋斗在web前端的小菜鸟,我很希望有些大牛能给我推荐一些JQuery,JavaScript,Html以及其他关于web前端的书,非常感谢。
好了,说说百度地图API开发实践,因为这段时间帮一个社团在做一个论坛项目,他们希望有一个地图,可以把一些新鲜事,帮助信息标记出来。现在基于地理位置的社交活动非常热,他们也是希望应用这个技术吧。
通过http://developer.baidu.com/map/上面查看一些javascript类参考,然后看看它的demo,就基本可以开始开发了,不难。
首先说说他们的目标(其实他们现在需求十分不明确,而我也只是作为了解尝试一下百度地图API,所以有些需求就是按照我的逻辑来的):
1.当我点击链接打开这个页面的时候,我希望能自动定位到当前我的位置。
2. 查看当前地图范围内的所有标记点
3. 点击每个标记点,都会有相应大的信息窗口显示
4. 通过搜索,我可以找到一个位置,然后标记它,并写入相应的帮助信息(这里其实是很大的一个模块,需求还没太理清楚)
5.左边栏应该显示我多少距离之内的所有标记点,并提供相应的信息。
6.左边信息中应该有超链接(比方说在地图中显示),然后点击之后在地图中显示。
7.我可以设置搜索距离,即提示方圆多少之内的所有的帮助信息
现在能想到的就是这些需求,然后针对这些需求,我相应的程序设计思想:
1. 获取当前我的地址:1)通过IP获取粗略地position(统一经纬度),然后通过这个position初始化地图
2) 通过ajax向后台获取已经存储的地址信息(这个postion就比较随意了,可以记录上一次的position,也可以在用户注册的时候记录下来,具体还没想好)
2. 获取当前地图范围内的所有标记的点,通过向后台请求position信息,然后将点一个一个mark到地图上。这个时候得做一件额外的工作,为每个marker添加一个鼠标点击监听事件。
3. 比较当前点击的标记点和上一次点击的标记点是否一样,如果不一样,就向后台请求数据包括,title,content,img链接(因为想做一个类似于百度信息窗的东西)
其实我现在只是实现到这里,后面的改天再继续实现,下面附代码和截图,还是建议自己编,实在不是很有技术含量,看看范例基本就会了,还是多注意思想吧。
2 <html>
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5 <title>百度地图</title>
6 <style type="text/css">
7 body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;}
8 #l-map{height:100%;width:78%;float:left;border-right:2px solid #bcbcbc;}
9 #r-result{height:100%;width:20%;float:left;}
10 </style>
11 <link rel="stylesheet" href="http://api.map.baidu.com/library/SearchInfoWindow/1.4/src/SearchInfoWindow_min.css" />
12 <script type="text/javascript" src="http://api.map.baidu.com/api?v=1.4"></script>
13 <script type="text/javascript" src="http://api.map.baidu.com/library/SearchInfoWindow/1.4/src/SearchInfoWindow_min.js"></script>
14 <script type="text/javascript" src="/blog_article/jquery.js"></script>
15 <script type="text/javascript" src="/blog_article/demo.js"></script>
16 <script type="text/javascript">
17 $(document).ready(function(){
18 initMap();
19 initInfoWindow();
20 getMark();
21
22 });
23 </script>
24 </head>
25 <body>
26 <div id="allmap"></div>
27 </body>
28 </html>
2 function initMap(){
3 var lng = 126.657717;
4 var lat = 45.773225;
5 var point = new BMap.Point(lng, lat); // 创建点坐标
6 /* $.ajax({
7 url: 'XXX.action', //replace with the real action
8 type: 'get',
9 async: false,
10 datatype: 'json',
11 success: function(data){
12 lng = data.lng;
13 lat = data.lat;
14 if(lng != null && lat != null){
15 point = new BMap.Point(lng,lat);
16 }
17 }
18 });
19 */
20 map = new BMap.Map("allmap"); // 创建Map实例
21 map.centerAndZoom(point,14); // 初始化地图,设置中心点坐标和地图级别。
前台HTML:<style> .tableList tr td { height: 25px; } .trtitle { background-color: #990000; height: 25px; color: White; }.pageF { float: right; padding: 5px 0; margin-right: 50px; } .pageF a { text-decoration: none; color: blue; } .pageF a:hover { text-decoration: underline; cursor: pointer; color: blue; }</style>
<table class="tableList" cellspacing="1" style="margin-top: 10px; width: 100%; text-align: center;" border="1px"> <asp:Repeater ID="rptCampaignList" runat="server"> <HeaderTemplate> <thead> <tr class="trtitle" style=""> <th> ID </th> <th> 名称 </th> <th> 指向网址 </th> <th> 创建时间 </th> <th> 操作 </th> </tr> </thead> </HeaderTemplate> <ItemTemplate> <tbody> <tr> <td class="alone"> <%# Eval("PartnersID")%> </td> <td class="alone"> <%# Eval("PartnersName")%> </td> <td> <%# Eval("PartnersUrl")%> </td> <td> <%# Eval("PCreateDate", "{0:yyyy-MM-dd HH:ss}").ToString()%> </td> <td> <asp:LinkButton ID="lnkBtnDelUser" CommandArgument='<%# Eval("PartnersID")%>' CommandName="del" OnCommand="lnkBtnOp_Command" runat="server" OnClientClick="if(!confirm('你想要删除这条记录吗?')) return false;">删除</asp:LinkButton> </td> </tr> </tbody> </ItemTemplate> </asp:Repeater> <tfoot> <tr> <td colspan="10"> <div class="pageF"> <webdiyer:AspNetPager ID="pagerBarList" CssClass="paginator" CurrentPageButtonClass="cpb" OnPageChanged="pagerBarList_PageChanged" runat="server" PageSize="20" FirstPageText="首页" LastPageText="尾页" NextPageText="下一页" PrevPageText="上一页" AlwaysShow="true" NumericButtonCount="5" CurrentPageButtonPosition="Center" CustomInfoHTML="<font >共%PageCount%页%RecordCount%条记录</font> " ShowCustomInfoSection="Left" CustomInfoSectionWidth="120px"> </webdiyer:AspNetPager> </div> </td> </tr> </tfoot> </table>
后台代码:
Model类:
public class Partners { //PartnersID, PartnersName, PartnersUrl, PCreateDate private int partnersID; public int PartnersID { get { return partnersID; } set { partnersID = value; } } private string partnersName; public string PartnersName { get { return partnersName; } set { partnersName = value; } } private string partnersUrl; public string PartnersUrl { get { return partnersUrl; } set { partnersUrl = value; } } private DateTime? pCreateDate; public DateTime? PCreateDate { get { return pCreateDate; } set { pCreateDate = value; } }
类:DAL
public List<Partners> GetEDM_CountryPropertyList( int pageSize, int pageIndex, ref int recordCount) { List<Partners> entities = new List<Partners>(); SqlParameter[] pars = { new SqlParameter("@PageSize", pageSize), new SqlParameter("@PageIndex", pageIndex), SqlHelper.MakeParam("@RecordCount",SqlDbType.Int,4,ParameterDirection.Output,null) }; SqlDataReader reader = SqlHelper.ExecuteReader(CommandType.StoredProcedure, "dbo.PartnertsList", pars); try { while (reader.Read()) { Partners cp = new Partners() { //PartnersID, PartnersName, PartnersUrl, PCreateDate PartnersID = Field.GetInt(reader, "PartnersID"), PartnersName = Field.GetString(reader, "PartnersName"), PartnersUrl = Field.GetString(reader, "PartnersUrl"), PCreateDate = Field.GetDateTime(reader, "PCreateDate"), }; entities.Add(cp); } } catch (Exception ex) { recordCount = -1; } finally { if (reader != null) reader.Close(); } recordCount = Convert.ToInt32(pars[2].Value); return entities; }
类:BLL
public class PartnersBLL { private readonly DLL.PartnersData country = new DLL.PartnersData(); /// <summary> /// 国家房产信息 列表 分页 /// </summary> /// <param name="ECP_countryId"></param> /// <param name="PropertyState"></param> /// <param name="pageSize"></param> /// <param name="pageIndex"></param> /// <param name="recordCount"></param> /// <returns></returns> public List<Partners> GetEDM_CountryPropertyList( int pageSize, int pageIndex, ref int recordCount) { return country.GetEDM_CountryPropertyList( pageSize, pageIndex, ref recordCount); } /// <summary> /// 分页 移民局 /// </summary> /// <param name="?"></param> /// <param name="pageSize"></param> /// <param name="pageIndex"></param> /// <param name="recordCount"></param> /// <returns></returns> public List<Immigration> GetEDM_ImmigrationList(int pageSize, int pageIndex, ref int recordCount) { return country.GetEDM_ImmigrationList(pageSize, pageIndex, ref recordCount); } }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { PageBind(); PageBingUser(); PageBingMess(); PageBindImmigration(); } } protected void PageBind() { int recordCount = 0; List<Partners> list = new List<Partners>(); BLL.PartnersBLL country = new BLL.PartnersBLL(); //this.pagerBarList.PageSize, this.pagerBarList.CurrentPageIndex, ref recordCount list = country.GetEDM_CountryPropertyList( this.pagerBarList.PageSize, this.pagerBarList.CurrentPageIndex, ref recordCount); rptCampaignList.DataSource = list; rptCampaignList.DataBind(); //判断有多少条数据的 this.pagerBarList.RecordCount = recordCount; } protected void pagerBarList_PageChanged(object sender, EventArgs e) { this.PageBind(); } /// <summary> /// 删除或修改 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void lnkBtnOp_Command(object sender, CommandEventArgs e) { string infoID = e.CommandArgument.ToString(); //Dictionary<string, object> dic = new Dictionary<string, object>(); //dic.Add("EMID", infoID); if (e.CommandName.Equals("del")) { Dictionary<string, object> dic = new Dictionary<string, object>(); dic.Add("PartnersID", infoID); if (BLL.BLL.Delete(dic, "Partners")) { Response.Write("<script>alert('操作成功!');window.location.href='/blog_article/PartnersList.html';</script>"); } else { Response.Write("<script>alert('操作失败!');window.location.href='/blog_article/PartnersList.html';</script>"); } } }需配置:Web.config文件
<system.web> <pages controlRenderingCompatibilityVersion="3.5" validateRequest="false" clientIDMode="AutoID" enableEventValidation="false"
JBoss 6.0 + MyEclipse 8.6 + MySQL 5.1 + Struts 2.3 + EJB 3.0
问题
启动JBoss出现如下异常:Unable to load configuration struts-default.xml struts2 :Unable to load configuration. ……struts-default.xml:46:178
解决
Struts JAR包版本问题,换成最新的。
参考资料
http://blog.csdn.net/winer2008/article/details/3882018
@Wentasy 博文仅供参考,欢迎大家来访。如有错误之处,希望批评指正。原创博文如需转载请注明出处,谢谢 :) [CSDN博客]