首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > ASP >

Asp和JavaScript结合循环、语法等有关问题求解。百度map

2013-05-02 
Asp和JavaScript结合循环、语法等问题求解。。。百度地图本帖最后由 ddzuimei 于 2013-04-25 15:36:33 编辑求

Asp和JavaScript结合循环、语法等问题求解。。。百度地图
本帖最后由 ddzuimei 于 2013-04-25 15:36:33 编辑 求大侠指点迷津:
想利用asp循环使中间的js代码实现如下效果:
(每循环一次,将表中新的point值赋给mypoint数组)
index.asp

var mypoint=new Array();                      
mypoint[i]=new BMap.Point(<%=rs("point")%>);

var marker0=new BMap.Marker(mypoint[0]);  第1次循环
var marker1=new BMap.Marker(mypoint[1]);  第2次循环
var marker2=new BMap.Marker(mypoint[2]);  第3次循环,下面相同

map.addOverlay(mymarker[i]);

var opts0={offset:new BMap.Size(0, -25), title:'<%=rs("name")%></span>'}; 
var opts1={offset:new BMap.Size(0, -25), title:'<%=rs("name")%></span>'}; 
var opts2={offset:new BMap.Size(0, -25), title:'<%=rs("name")%></span>'}; 

infoWindow0 = new BMap.InfoWindow("", opts0);
infoWindow1 = new BMap.InfoWindow("", opts1);
infoWindow2 = new BMap.InfoWindow("", opts2);

mymarker0.addEventListener("mouseover", function(){this.openInfoWindow(infoWindow);}); 
mymarker1.addEventListener("mouseover", function(){this.openInfoWindow(infoWindow);}); 
mymarker2.addEventListener("mouseover", function(){this.openInfoWindow(infoWindow);}); 

function openMyWin(id,p){    map.openInfoWindow(id,p);    }  

现在的方法没能实现,百度地图上可以生成标注,但就是弹不出信息框,如果能实现上面的效果就好了。关键是javascript不能支持类似 var "mymarker"+i=new BMap.Marker(mypoint[i]);的语句,当i为0时,var marker0=new BMap.Marker(mypoint[0]);依此类推。。。

现在的方法是用数组代替。var mypoint=new Array();mypoint[0]=new BMap.Marker(mypoint[i]);但实现不了效果,估计语法错了。部分代码如下:


<script type="text/javascript">
     //创建地图实例
     var map=new BMap.Map("container");    
     //创建点坐标
     var point=new BMap.Point(112.012831,28.186718); 
     //初始化地图,设置中心点坐标和地图级别
     map.centerAndZoom(point, 15);  
     //向地图添加控件
     map.addControl(new BMap.NavigationControl());  //地图平移缩放控件,默认左上角  
     map.addControl(new BMap.OverviewMapControl({isOpen: 1})); //缩略地图控件,默认右下角
     map.enableScrollWheelZoom(true);        //启用鼠标滚动缩放地图
     map.enableKeyboard();        //启用键盘上下左右键移动地图
    </script>   
<%
   ...连接数据库略
    set rs=server.createobject("adodb.recordset") 
    sql="select * from MyPoint"
    rs.open sql,conn,1,1   
allrecorde=rs.recordcount '获取总记录数
dim point()
dim marker()
for i= 1 to allrecorde   '循环显示数据
       if rs.eof then     '显示过程中随着游标下移,一旦记录到最后就立刻退出循环
          exit for
       end if
%>   
<script type="text/javascript">
    for(i=0;i<10;i++){
   var mypoint=new Array();


   var mymarker=new Array();
   var opts=new Array();
   var infoWindow=new Array();      
   mypoint[i]=new BMap.Point(<%=rs("point")%>);
   mymarker[i]=new BMap.Marker(mypoint[i]);
           map.addOverlay(mymarker[i]);
   //调整地图的最佳视野为显示标注point
   //map.setViewport(mypoint[i]);
   //定义opts
  opts[i]={offset:new BMap.Size(0, -25), title:'<span style="font-size:14px;color:#0A8021"><%=rs("name")%></span>'}; 
   // 创建信息窗口对象
          infoWindow[i] = new BMap.InfoWindow("", opts[i]);
//给标注添加鼠标事件,当鼠标滑过标注的时候,打开信息窗口
  mymarker[i].addEventListener("mouseover", function(){this.openInfoWindow(infoWindow);}); 
  }
  function openMyWin(id,p){    map.openInfoWindow(id,p);    }  
</script>
<%
    rs.movenext     '游标下移
    next
%>

另外一个页面page.asp(使用了ajax分页的)有段代码调用function openMyWin(id,p)来显示信息窗口
...
response.write("<li>")
response.write("<span>"&"T"&"</span>")
response.write("<strong>")
response.write("<a href='#' onmouseover='openMyWin(infoWindow[0],mypoint[0])'>"&escape(rs("name"))&"</a>")
response.write("</strong>")
response.write("<p>")
response.write("<a href='#'>"&escape("地址:")&escape(rs("address"))&"</a>")
response.write("</li>")
... JavaScript ASP 百度地图 地图 函数
[解决办法]
循环放到script标签内,js的for循环就不需要了。


<script type="text/javascript">
<%
   ...连接数据库略
    set rs=server.createobject("adodb.recordset") 
    sql="select * from MyPoint"
    rs.open sql,conn,1,1   
allrecorde=rs.recordcount '获取总记录数
dim point()
dim marker()
for i= 1 to allrecorde   '循环显示数据
       if rs.eof then     '显示过程中随着游标下移,一旦记录到最后就立刻退出循环
          exit for
       end if
%>    
   var mypoint=new Array();
   var mymarker=new Array();
   var opts=new Array();
   var infoWindow=new Array();      
   mypoint[<%=i%>]=new BMap.Point(<%=rs("point")%>);
   mymarker[<%=i%>]=new BMap.Marker(mypoint[<%=i%>]);
           map.addOverlay(mymarker[<%=i%>]);
   //调整地图的最佳视野为显示标注point
   //map.setViewport(mypoint[i]);
   //定义opts
  opts[<%=i%>]={offset:new BMap.Size(0, -25), title:'<span style="font-size:14px;color:#0A8021"><%=rs("name")%></span>'}; 


   // 创建信息窗口对象
          infoWindow[i] = new BMap.InfoWindow("", opts[<%=i%>]);
//给标注添加鼠标事件,当鼠标滑过标注的时候,打开信息窗口
  mymarker[<%=i%>].addEventListener("mouseover", function(){this.openInfoWindow(infoWindow);});  

<%
    rs.movenext     '游标下移
    next
%>
  function openMyWin(id,p){    map.openInfoWindow(id,p);    }  
</script>

热点排行