书签 分享 收藏 举报 版权申诉 / 15

类型实验报告4地图图形绘制.docx

  • 文档编号:14825864
  • 上传时间:2023-06-27
  • 格式:DOCX
  • 页数:15
  • 大小:423.97KB

varmap=newBMap.Map("allmap");

varpoint=newBMap.Point(118.886575,31.927937);

map.centerAndZoom(point,15);

 

c.创建数据库OverlayDB)(图二),添加Overlays和Position

表(图三),插入覆盖物的坐标数据,如下图所示:

图二:

创建OverlayDB数据库

图三:

添加Overlays表和Position表

 

d.编写MapOverlayDB.aspx.cs后台代码,在Page_Load函数中,

连接数据库,获取数据库的数据,代码如下:

//获取连接数据库的字符串

stringconnectionString=WebConfigurationManager.Conn

ectionStrings["ConnectionString"].ConnectionString;

//创建数据库连接

SqlConnectionconnection=newSqlConnection(connection

String);

//判断数据库库的状态

if(connection.State==ConnectionState.Closed||

connection.State==ConnectionState.Broken)

{

//打开数据库

connection.Open();

}

//创建命令对象

SqlCommandcmd=newSqlCommand();

cmd.Connection=connection;

//执行数据查询的SQL语句

cmd.CommandText="selectlongitude,latitudefromPosTable";

//查询数据

SqlDataAdaptersda=newSqlDataAdapter(cmd);

//创建数据集对象

DataSetds=newDataSet();

//使用数据适配器查到的数据结果,填充数据集对象

sda.Fill(ds);

//获取数据集中的第一张数据表

DataTabledt=ds.Tables[0];

e.对数据库数据进行处理,格式化为一个字符串,存入Session

中,以提供给前台使用,代码如下:

//字符串清空

stringposMsg="";

boolisFirst=true;

stringnumber="";

//遍历数据表,将数据存入到posMsg字符串中

for(inti=0;i

if(isFirst){

number=markerData.Rows[i]["NO"].ToString();

isFirst=!

isFirst;

}

if(number!

=markerData.Rows[i]["NO"].ToString()){

if(posMsg.Length>0)

posMsg=posMsg.Substring(0,posMsg.Length-1);

posMsg+=")";

number=markerData.Rows[i]["NO"].ToString();

}

posMsg+=markerData.Rows[i]["longitude"]+","

+markerData.Rows[i]["latitude"]+"|";

}

if(posMsg.Length>0)//判断字符串中是否存有数据

//将字符串中的最后一个逗号截掉

posMsg=posMsg.Substring(0,posMsg.Length-1);

//将获取的数据存入Session中,便于前台的使用

Session.Add(keyName,posMsg);

connection.Close();//关闭数据口连接

 

f.根据Session中的数据,添加对应的覆盖物到地图上,关键

代码如下:

varmarkerPos="<%=(Session["markerPos"])%>";

if(markerPos.length>0)

addMarkers(markerPos);//添加Marker覆盖物

varpolylinePos="<%=(Session["polylinePos"])%>";

if(polylinePos.length>0)

addPoly(polylinePos,"polyline");//添加polyline覆盖物

varpolygonPos="<%=(Session["polygonPos"])%>";

if(polygonPos.length>0)

addPoly(polygonPos,"polygon");//添加polygon覆盖物

//添加覆盖物函数

functionaddMarkers(positions){

varposList=positions.split(")");

//获得坐标值

for(vari=0;i

//根据坐标,创建标记

varpt=posList[i].split(",");

if(pt.length==2){

varmarker=newBMap.Marker(newBMap.Point(

pt[0],pt[1]));//创建点

marker.addEventListener("click",showMsg);

map.addOverlay(marker);//增加点

}

}

}

 

4、实验原始纪录(源程序、数据结构等)

源代码:

//MapOverlayDB.aspx文件(前台)

//www.w3.org/1999/xhtml">

charset=utf-8"/>

user-scalable=no"/>

body,html,#allmap{width:

100%;height:

100%;overflow:

hidden;margin:

0;font-family:

"微软雅黑";}

#allmap{height:

600px;}

图形绘制实验

varmap=newBMap.Map("allmap");

varpoint=newBMap.Point(118.886575,31.927937);

map.centerAndZoom(point,17);

map.enableScrollWheelZoom(true);

//获取Session中的数据

varmarkerPos="<%=(Session["markerPos"])%>";

//如果数据不为空,调用添加marker的函数

if(markerPos.length>0)

addMarkers(markerPos);

varpolylinePos="<%=(Session["polylinePos"])%>";

//如果数据不为空,调用添加polyline的函数

if(polylinePos.length>0)

addPoly(polylinePos,“polyline”);

 

//获取Session中的数据

varpolygonPos="<%=(Session["polygonPos"])%>";

//如果数据不为空,调用添加polygon的函数

if(polygonPos.length>0)

addPoly(polygonPos,“polygon”);

//定义添加marker的函数

functionaddMarks(positions){

varposList=positions.split(")");

//获得坐标值

for(vari=0;i

//根据坐标,创建标记

varpt=posList[i].split(",");

if(pt.length==2){

varmarker=newBMap.Marker(newBMap.Point(

pt[0],pt[1]));//创建点

map.addOverlay(marker);//增加点

}

}

}

//添加折线,多边形覆盖物函数

functionaddPoly(positions,typeName){

if(positions.length>0){

//符号”)”将每个折线,多边形点集分开

varpolys=positions.split(")");

for(varlen=0;len

{

//符号”)”将坐标点分开

varpList=positions.split("|");

varpoints=newArray();

varpt=null;

for(vari=0;i

{

//将点的经度和纬度分开

pt=pList[i].split(",");

//将点存入points的点的集合中

points.push(newBMap.Point(pt[0],pt[1]));

}

 

//根据覆盖物的类型,添加相应的覆盖物

if(typeName=="polyline")

{

//创建折线覆盖物

varpolyline=newBMap.Polyline(points);

polyline.enableEditing();

//将覆盖物添加到地图上

map.addOverlay(polyline);

}

elseif(typeName=="polygon")

{

//创建多边形覆盖物

varpolygon=newBMap.Polygon(points);

polygon.enableEditing();

//将覆盖物添加到地图上

map.addOverlay(polygon);

}

}

}

}

 

//MapDatabase.aspx.cs文件(后台)

protectedvoidPage_Load(objectsender,EventArgse)

{

//查询marker覆盖物的信息

stringsqlString="SELECTp.pidasNO,longitude,latitude

FROMOverlayso,PositionpWHEREo.typename='marker'

andp.pid=o.id";

SelectDB(sqlString,"markerPos");

//查询polyline覆盖物的信息

sqlString="SELECTp.pidasNO,longitude,latitudeFROM

Overlayso,PositionpWHEREo.typename='polyline'and

p.pid=o.id";

SelectDB(sqlString,"polylinePos");

//查询polygon覆盖物的信息

sqlString="SELECTp.pidasNO,longitude,latitudeFROM

Overlayso,PositionpWHEREo.typename='polygon'and

p.pid=o.id";

SelectDB(sqlString,"polygonPos");

}

 

//查询数据库数据,并将数据格式化,存入Session中

privatevoidSelectDB(stringsqlString,stringkeyName)

{

//获取连接数据库的字符串

stringconnectionString=WebConfigurationManager.Conn

ectionStrings["ConnectionString"].ConnectionString;

//创建数据库连接

SqlConnectionconnection=newSqlConnection(connection

String);

//判断数据库库的状态

if(connection.State==ConnectionState.Closed||

connection.State==ConnectionState.Broken)

{

//打开数据库

connection.Open();

}

//创建命令对象

SqlCommandcmd=newSqlCommand();

cmd.Connection=connection;

//执行数据查询的SQL语句

cmd.CommandText="selectlongitude,latitudefromPosTable";

//查询数据

SqlDataAdaptersda=newSqlDataAdapter(cmd);

//创建数据集对象

DataSetds=newDataSet();

//使用数据适配器查到的数据结果,填充数据集对象

sda.Fill(ds);

//获取数据集中的第一张数据表

DataTabledt=ds.Tables[0];

//字符串清空

stringposMsg="";

boolisFirst=true;

stringnumber="";

//遍历数据表,将数据存入到posMsg字符串中

for(inti=0;i

if(isFirst){

number=markerData.Rows[i]["NO"].ToString();

isFirst=!

isFirst;

}

if(number!

=markerData.Rows[i]["NO"].ToString()){

if(posMsg.Length>0)

posMsg=posMsg.Substring(0,posMsg.Length-1);

posMsg+=")";

number=markerData.Rows[i]["NO"].ToString();

}

posMsg+=markerData.Rows[i]["longitude"]+","

+markerData.Rows[i]["latitude"]+"|";

}

if(posMsg.Length>0)//判断字符串中是否存有数据

//将字符串中的最后一个逗号截掉

posMsg=posMsg.Substring(0,posMsg.Length-1);

//将获取的数据存入Session中,便于前台的使用

Session.Add(keyName,posMsg);

connection.Close();//关闭数据口连接

}

//Web.config配置文件

"DataSource=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|

\OverlayDB.mdf;IntegratedSecurity=True;UserInstance=True"

providerName="System.Data.SqlClient"/>

 

五、实验结果及分析(计算过程与结果、数据曲线、图表等)

实验结果:

图四:

显示绘制图形的地图

结果分析:

创建地图实例,引入BaiduMapAPI的链接,通过后台的页面加

载,对数据库进行查询,将数据库中的地物坐标查询出来,将数据库

中的数据格式化,存入到Session中,实现与前台的数据通信,根据

Session中的数据,动态的创建覆盖物,并显示到地图上,图四为显

示marker,polyline和polygon的覆盖物地图,结果正确。

六、实验总结与思考

通过本次地图图形绘制实验,我掌握了ASP.NET,ADO.NET以及

BaiduMapAPI的结和使用的基本方法,使网页实现根据数据库中的

数据,动态的添加覆盖物,这时,只需要管理后台的数据,据可以

添加相应的覆盖,方便了对覆盖物的管理。

教师评语:

配套讲稿:

如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

特殊限制:

部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

关 键  词:
实验 报告 地图 图形 绘制
提示  冰点文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:实验报告4地图图形绘制.docx
链接地址:https://www.bingdoc.com/p-14825864.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2


收起
展开