WebGIS的书签 MapXtreme VS2008(C#) Sql Server2005
来源:互联网 发布:6x6摇头矩阵灯 编辑:程序博客网 时间:2024/05/01 19:35
1.功能概述
(1)初始化打开网页,加载书签
(2)双击书签,地图跳转到选择的书签
(3)添加书签
(4)删除书签
2.基本思路
(1)数据库中建表BookMark(ID、Name、MapX、MapY、Zoom)
(2)书签界面
<div>
<form id="form1" name="form1" method="post" action="">
<div style="font-size:9pt">名称:</div>
<input id = "BookMarkName" name="Name" type="text"/>
<input name="AddBookMark" type="button" value="添加" onclick="AddBookMarkToSql();"/>
<input name="DeleteBookMark" type="button" value="删除"
onclick="DeleteBookMarkFromSql();" />
</form>
<form id="form2" name="form2" method="post" action="">
<select id="BookMarkList" name="BookMarkList" size="27" style="width:90%"
ondblclick = "GoToBookMark()">
</select>
</form>
</div>
(3)各个功能的实现:
//定义书签的操作
//书签操作
function BookMark(Name,MapX,MapY,Zoom) {
this.Name = Name;
this.MapX = MapX;
this.MapY = MapY;
this.Zoom = Zoom;
}
function BookMarkData() {
this.BookMarks = new Array();
}
BookMarkData.prototype.AddBookMarkData = function(Name, MapX, MapY, Zoom) {
this.BookMarks[this.BookMarks.length] = new BookMark(Name, MapX, MapY, Zoom);
}
BookMarkData.prototype.DeleteBookMarkData = function(index) {
this.BookMarks.splice(index, 1);
}
BookMarkData.prototype.GetBookMarkData = function(index)
{
return this.BookMarks[index];
}
//书签
var MyBookMarks = new BookMarkData();
a.初始化打开网页,加载书签
JS代码:
function InitialBookMarkList() {
var MapImage = FindElement("MainMap_Image");
var url = "MapController.ashx?Command=GetBookMarks" + "&Ran=" + Math.random();
if (MapImage.mapAlias) {
url += "&MapAlias=" + MapImage.mapAlias;
}
var xmlHttp = CreateXMLHttp();
xmlHttp.open("GET", url, false);
xmlHttp.send(null);
var result = xmlHttp.responseText;
var BookMarkList = FindElement("BookMarkList");
if (result.indexOf("!") != -1) {
var BookMarks = result.split("!");
for (var i = 1; i < BookMarks.length; i++) {
var BookMark = BookMarks[i].split(",");
var Name = BookMark[0];
var MapX = BookMark[1];
var MapY = BookMark[2];
var Zoom = BookMark[3];
BookMarkList.options.add(new Option(Name));
MyBookMarks.AddBookMarkData(Name, MapX, MapY, Zoom);
}
}
}
C#代码:
[Serializable]
public class GetBookMarks : MapInfo.WebControls.MapBaseCommand
{
public GetBookMarks()
{
Name = "GetBookMarks";
}
public override void Process()
{
var BookMarks = "";
MapInfo.Data.Table BookMark = MapInfo.Engine.Session.Current.Catalog.GetTable
("BookMark");
if (BookMark == null)
{
MapInfo.Data.TableInfoServer ti = new MapInfo.Data.TableInfoServer
("BookMark", "Driver={SQL Server};Server=192.168.1.4;Database=MapXtreme;
Uid=sa;Pwd=68620154;DLG=0", "select * from BookMark",
MapInfo.Data.ServerToolkit.Odbc);
ti.CacheSettings.CacheType = CacheOption.Off;
BookMark = MapInfo.Engine.Session.Current.Catalog.OpenTable(ti);
}
MIConnection con = new MIConnection();
MICommand tc = con.CreateCommand();
tc.CommandText = "select * from " + BookMark.Alias;
con.Open();
MIDataReader tr = tc.ExecuteReader();
while (tr.Read())
{
var Name = tr.GetString("Name");
var MapX = tr.GetString("MapX");
var MapY = tr.GetString("MapY");
var Zoom = tr.GetString("Zoom");
BookMarks +="!" + (Name + "," + MapX + "," + MapY + "," + Zoom);
}
tr.Close();
tc.Cancel();
tc.Dispose();
con.Close();
HttpContext.Current.Response.Output.Write(BookMarks);
}
}
b.双击书签,地图跳转到选择的书签
JS代码:
function GoToBookMark() {
var BookMarkList = FindElement("BookMarkList");
var index = BookMarkList.selectedIndex;
var CurrentBookMark = MyBookMarks.GetBookMarkData(index);
var Name = CurrentBookMark.Name;
var MapX = CurrentBookMark.MapX;
var MapY = CurrentBookMark.MapY;
var Zoom = CurrentBookMark.Zoom;
var MapImage = FindElement("MainMap_Image");
var url = "MapController.ashx?Command=GoToBookMark&Width=" + MapImage.width +
"&Height=" + MapImage.height +
"&ExportFormat=" + MapImage.exportFormat + "&Ran=" + Math.random();
if (MapImage.mapAlias) {
url += "&MapAlias=" + MapImage.mapAlias;
}
url += "&MapX=" + MapX;
url += "&MapY=" + MapY;
url += "&Zoom=" + Zoom;
var xmlHttp = CreateXMLHttp();
xmlHttp.open("GET", url, false);
xmlHttp.send(null);
try {
MapImage.src = url;
}
catch (e) {
}
}
C#代码:
[Serializable]
public class GoToBookMark : MapInfo.WebControls.MapBaseCommand
{
public GoToBookMark()
{
Name = "GoToBookMark";
}
public override void Process()
{
double MapX = System.Convert.ToDouble(HttpContext.Current.Request["MapX"]);
double MapY = System.Convert.ToDouble(HttpContext.Current.Request["MapY"]);
double Zoom = System.Convert.ToDouble(HttpContext.Current.Request["Zoom"]);
MapControlModel model = MapControlModel.GetModelFromSession();
MapInfo.Mapping.Map map = model.GetMapObj(MapAlias);
map.Zoom = new MapInfo.Geometry.Distance(Zoom, map.Zoom.Unit);
MapInfo.Geometry.DPoint center = new MapInfo.Geometry.DPoint(MapX, MapY);
map.Center = center;
MemoryStream ms = model.GetMap(MapAlias, MapWidth, MapHeight, ExportFormat);
StreamImageToClient(ms);
}
}
c.添加书签
JS代码:
function AddBookMarkToSql() {
var MapImage = FindElement("MainMap_Image");
var url = "MapController.ashx?Command=AddBookMarkToSql&Ran=" + Math.random();
if (MapImage.mapAlias) {
url += "&MapAlias=" + MapImage.mapAlias;
}
var BookMarkName = FindElement("BookMarkName");
if (BookMarkName.value == "") {
alert("请输入书签名称!");
return
}
url += "&BookMarkName=" + BookMarkName.value;
var xmlHttp = CreateXMLHttp();
xmlHttp.open("GET", url, false);
xmlHttp.send(null);
var result = xmlHttp.responseText;
var BookMarkValue = result.split(",");
var Name = BookMarkValue[0];
var MapX = BookMarkValue[1];
var MapY = BookMarkValue[2];
var Zoom = BookMarkValue[3];
var BookMarkList = FindElement("BookMarkList");
BookMarkList.options.add(new Option(Name));
MyBookMarks.AddBookMarkData(Name, MapX, MapY, Zoom);
BookMarkName.value = "";
}
C#代码:
[Serializable]
public class AddBookMarkToSql : MapInfo.WebControls.MapBaseCommand
{
public AddBookMarkToSql()
{
Name = "AddBookMarkToSql";
}
public override void Process()
{
MapControlModel model = MapControlModel.GetModelFromSession();
MapInfo.Mapping.Map map = model.GetMapObj(MapAlias);
//书签的名称、中心点经纬度、比例
var BookMarkName = HttpContext.Current.Request["BookMarkName"];
var MapX = map.Center.x;
var MapY = map.Center.y;
var Zoom = map.Zoom.Value;
//书签插入SQl数据库
MapInfo.Data.Table BookMark = MapInfo.Engine.Session.Current.Catalog.GetTable
("BookMark");
if (BookMark == null)
{
MapInfo.Data.TableInfoServer ti = new MapInfo.Data.TableInfoServer
("BookMark", "Driver={SQL Server};Server=192.168.1.4;Database=MapXtreme;
Uid=sa;Pwd=68620154;DLG=0", "select * from BookMark",
MapInfo.Data.ServerToolkit.Odbc);
ti.CacheSettings.CacheType = CacheOption.Off;
BookMark = MapInfo.Engine.Session.Current.Catalog.OpenTable(ti);
}
MIConnection con = new MIConnection();
MICommand tc = con.CreateCommand();
tc.CommandText = "insert into BookMark(Name,MapX,MapY,Zoom)values(
'"+BookMarkName+"','"+MapX+"','"+MapY+"','"+Zoom+"')";
con.Open();
tc.ExecuteNonQuery();
tc.Cancel();
tc.Dispose();
con.Close();
//返回客户端书签的名称、中心点经纬度、比例
HttpContext.Current.Response.Output.Write
(BookMarkName + "," + MapX + "," + MapY + "," + Zoom);
}
}
d.删除书签
JS代码:
function DeleteBookMarkFromSql() {
var MapImage = FindElement("MainMap_Image");
var url = "MapController.ashx?Command=DeleteBookMarkFromSql&Ran=" + Math.random();
if (MapImage.mapAlias) {
url += "&MapAlias=" + MapImage.mapAlias;
}
var BookMarkList = FindElement("BookMarkList");
var index = BookMarkList.selectedIndex;
if (index == -1) {
alert("请选择要删除的书签!");
return
}
var CurrentBookMark = MyBookMarks.GetBookMarkData(index);
url += "&BookMarkName=" + CurrentBookMark.Name;
var xmlHttp = CreateXMLHttp();
xmlHttp.open("GET", url, false);
xmlHttp.send(null);
MyBookMarks.DeleteBookMarkData(index);
BookMarkList.options.remove(index);
}
C#代码:
[Serializable]
public class DeleteBookMarkFromSql : MapInfo.WebControls.MapBaseCommand
{
public DeleteBookMarkFromSql()
{
Name = "DeleteBookMarkFromSql";
}
public override void Process()
{
var BookMarkName = HttpContext.Current.Request["BookMarkName"];
//删除SQL数据库的书签
MapInfo.Data.Table BookMark = MapInfo.Engine.Session.Current.Catalog.GetTable
("BookMark");
if (BookMark == null)
{
MapInfo.Data.TableInfoServer ti = new
("BookMark", "Driver={SQL Server};Server=192.168.1.4;
MapInfo.Data.TableInfoServer Database=MapXtreme;Uid=sa;Pwd=68620154;DLG=0",
"select * from BookMark", MapInfo.Data.ServerToolkit.Odbc);
ti.CacheSettings.CacheType = CacheOption.Off;
BookMark = MapInfo.Engine.Session.Current.Catalog.OpenTable(ti);
}
MIConnection con = new MIConnection();
MICommand tc = con.CreateCommand();
tc.CommandText = "delete from BookMark where Name = '" + BookMarkName + "'";
con.Open();
tc.ExecuteNonQuery();
tc.Cancel();
tc.Dispose();
con.Close();
}
}
- WebGIS的书签 MapXtreme VS2008(C#) Sql Server2005
- 基于MapXtreme的WebGIS解决方案-
- VS2008连接SQL Server2005必读
- VS2008安装时默认安装SQL SERVER2005
- 使用VS2008怎么连接自带的SQL Server2005的Express版本数据库
- Windows xp中搭建DotNet开发环境(IIS+Sql Server2005+VS2008)的问题记录
- win7下vs2008单步高度SQL server2005的存储过程
- Eclipse+Mapxtreme java开发WebGIS之HelloWorld
- vs2008 连接SQL Server2005 express 或ACCESS数据库
- 删除流氓的SQL Server2005
- sql server2005 express的使用
- SQL Server2005的安装问题
- SQL Server2005的版本区别
- 查看Sql server2005的版本。。
- sql server2005的基本操作
- SQL Server2005 Synonym的使用
- 装SQL server2005的烦恼
- SQL Server2005 Synonym的使用
- Extjs、ASP.net前后台Grid分页 数据库多表交互
- 『phphot』【SD2.0大会】胡百师从项目管理看SOA 称SOA并非新观念
- Answer to Chapter 3 of O'Reilly Learning Sql on SQL Server 2005
- ArcMap的书签操作
- 学习管道
- WebGIS的书签 MapXtreme VS2008(C#) Sql Server2005
- Knowing makefile in linux
- insert all
- 『phphot』【SD2.0大会】技术:为Tomcat配置SSL功能的实验步骤
- 我的电脑学习历程.第二章.电脑技术的第一次飞跃
- 『phphot』【SD2.0大会】讲师范路:我技术不行,用RoR搭建一个网站用两天
- 快速测试一条Select SQL语句是否合法
- Struts2标签介绍
- 『phphot』【SD2.0大会】蒋涛:CSDN为什么举办SD2C大会