日期:2014-05-16  浏览次数:20906 次

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/ja