读书人

Asp和JavaScript结合循环、语法等有关

发布时间: 2013-05-02 09:39:29 作者: rapoo

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>

读书人网 >ASP

热点推荐