vs2010下开发的网页地图
实现:从SQL数据库读取全部经纬度信息,然后都标注在地图上
我想实现从数据库读取经纬度,然后把三个点都标注在地图上
已经纠结好长时间了,大家做过的来指导下
用DataReader从数据库读取经纬度传串成一个字符串然后赋值给一个全局变量,使用服务器端标签<%%>给aspx页面的js变量,然后js依据这个js变量生成Marker
while(dr.Read())
{
s+=",{lng:"+dr["longitude"].ToString()+",lat:"+dr["latitude"].ToString()+"}";//假设s为全局变量
}
s="["+s.Trim(',')+"]";
<script>
var Markers=<%=s%>///////////////////
</script>
<script>
var map = new BMap.Map("xxxx");
for(var i=0;i<Markers.length;i++)
map.addOverlay(new BMap.Marker(new BMap.Point(Markers[i].lng ,Markers[i].lat)));
</script>
我想实现点击每个标注,都能从数据库读出对应的信息,这样该怎么办啊?
while(dr.Read())
{
//tl为信息窗口标题,多有个列信息组合自己+起来然将单引号替换为实体防止字符串不闭合,同时换行\r\n也要去掉
//msg存储弹出窗口需要显示的信息,也需要做替换,和tl一样
s+=",{lng:"+dr["longitude"].ToString()+",lat:"+dr["latitude"].ToString()+",tl:'"+(dr["xxx"].ToString()+dr["xxxx"].ToString()).Replace("'","'").Replace("\n","").Replace("\r","")+"'',msg:'"+(dr["xxx"].ToString()+dr["xxxx"].ToString()).Replace("'","'").Replace("\n","").Replace("\r","")+"'}";//假设s为全局变量
}
s="["+s.Trim(',')+"]";
<script>
var Markers=<%=s%>///////////////////
</script>
<script>
function createOpenEvent(tl,msg,marker) {//marker点击事件,需要做闭包
return function () {
var opts = {
width: 250, // 信息窗口宽度
height: 100, // 信息窗口高度
title:tl // 信息窗口标题
}
var infoWindow = new BMap.InfoWindow(msg, opts); // 创建信息窗口对象
map.openInfoWindow(infoWindow, marker.getPosition()); // 打开信息窗口
}
}
// 百度地图API功能
var map = new BMap.Map("allmap");
var point = new BMap.Point(116.417854,39.921988);
map.centerAndZoom(point, 15);
for (var i = 0; i < Markers.length; i++) {
var Marker = new BMap.Marker(new BMap.Point(Markers[i].lng, Markers[i].lat));
Marker.addEventListener('click', createOpenEvent(Markers[i].tl, Markers[i].msg, Marker));
map.addOverlay(Marker);
}
</script>