解决了网页提交servlet后,百度地图标记被覆盖问题。

这一段时间,在做一个起重机的网页管理系统。调用了百度地图API后,发现jsp页面提交给servlet后,可以得到起重机坐标的经纬度,但不能显示地图标记! 原来以为是页面的css样式和百度传过来的css样式产生冲突,经过测试(把提交给servlet的动作取消)发现,css样式并无问题。后经过仔细一想,原来是这样的:

   一个提交按钮上有包含了两个动作  1:执行js代码,百度地图标记的标定2:提交给servlet,获取数据库的信息。然后,问题出现了,servlet处理后整个页面刷新,把原来的js执行的结果给覆盖了,标记消失。

 

解决方法:使用AJAX方法,异步刷新数据,获得数据库的坐标信息后,不对整个页面进行刷新,成功解决问题!

JS代码如下:
1
$("#showPosition").click(function() 2 { 3 4 function addMarker(point) //增加一个标注 5 { 6 var marker = new BMap.Marker(point); 7 map.addOverlay(marker); 8 marker.setAnimation(BMAP_ANIMATION_BOUNCE);//设置弹跳动画 9 } 10 $.ajax({ 11 type: "post", 12 url: "ShowCranePosition", 13 success: function(data) 14 { 15 //alert(data); 16 map.clearOverlays(); 17 var coordinate = data.split("|"); 18 for(var i = 0;i<coordinate.length;i=i+2) 19 { 20 var elng = 120.14; 21 var nlat = 30.9; 22 elng = coordinate[i]; 23 nlat = coordinate[i+1]; 24 var point = new BMap.Point(elng, nlat); 25 //map.panTo(point,15); 26 addMarker(point); 27 } 28 29 } 30 });
 1 Servlet代码如下:
 2 public void doGet(HttpServletRequest request, HttpServletResponse response)
 3             throws ServletException, IOException 
 4             {
 5                 List<String[]> result = null;
 6                 String[] element = new String[4];
 7                 String  str = "";
 8                 PrintWriter pw = response.getWriter();
 9                 try {
10                      result = DAOFactory.getIUserDAOInstance().showTable();
11                     if(result != null)
12                     {
13                      Iterator<String[]> iter = result.iterator();
14                      while(iter.hasNext())
15                      {
16                          element=iter.next(); 
17                          str = str+element[1]+"|"+element[2]+"|";
18                      }
19                     
20                      pw.print(str);
21                      pw.close();
22                      }else
23                      {
24                          //默认的地图坐标
25                      }
26                 } catch (Exception e) {
27                     // TODO Auto-generated catch block
28                     e.printStackTrace();
29                 }

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。