MO作為B/S客戶端控件的開發
開發GIS與OA一體化系統時,OA中經常需要使用圖形的瀏覽、查詢等功能,這在OA系統采用C/S模式的情況下,并不困難,但在采用B/S架構時,卻往往不知從何下手。一般的做法時采用ArcIMS等軟件作為服務器端軟件進行開發,但這些軟件需要額外購買,很不劃算。其實我們將MO作為一個ActiveX控件插入到網頁中,用JavaScript進行控制,也可以實現非常強大的功能。
下面舉一個例子,可以實現加載圖層,放大,縮小和平移功能。
<html>
<head>
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>New Page 1</title>
</head>
<body>
<SCRIPT language=JavaScript>
var MapState = 0;
function LoadLayers()
{
Map1.ScrollBars = false;
var dc = new ActiveXObject("MapObjects2.DataConnection")
dc.Server = "sde81:server";
dc.DataBase = "esri_sde";
dc.User="sa";
dc.Password = "sa";
if (dc.connect() == false)
{
return;
}
var gs;
gs = dc.FindGeoDataset("sde.dbo.zd#1.shape.polygons");
if (gs == null) return;
var ly = new ActiveXObject("MapObjects2.MapLayer");
ly.GeoDataset = gs;
Map1.Layers.Add(ly);
Map1.Refresh();
}
</script>
<script language = "JavaScript" for = "Map1" event = "MouseDown(Button,Shift,X,Y)">
if (MapState == 0)
{
Map1.Extent = Map1.TrackRectangle();
}
else if(MapState ==1)
{
var rect;
rect=Map1.Extent();
rect.ScaleRectangle(1.3);
Map1.Extent = rect;
}
else if(MapState == 2)
{
Map1.Pan();
}
</script>
<script language = "JavaScript" for = "Map1" event = "MouseMove(Button,Shift,X,Y)">
if (MapState == 0)
{
Map1.MousePointer = 51;
}
else if(MapState ==1)
{
Map1.MousePointer = 52;
}
else if(MapState == 2)
{
Map1.MousePointer = 53;
}
</script>
<p>
<object classid="clsid:9BD6A64B-CE75-11D1-AF04-204C4F4F5020" id="Map1" width="572" height="452">
<param name="_Version" value="131072">
<param name="_ExtentX" value="15134">
<param name="_ExtentY" value="11959">
<param name="_StockProps" value="225">
<param name="BackColor" value="16777215">
<param name="BorderStyle" value="1">
<param name="Enabled" value="1">
<param name="Appearance" value="0">
<param name="ScrollBars" value="1">
<param name="RefreshCount" value="10000">
<param name="CancelAction" value="1">
<param name="WindowMode" value="0">
<param name="MinWidth" value="0">
<param name="MousePointer" value="0">
<param name="BorderStyle" value="1">
<param name="BackColor" value="16777215">
<param name="FullRedrawOnPan" value="0">
</object>
</p>
<p>
<input type="button" value="LoadLayer" name="B3" onclick = "LoadLayers()">
<input type="button" value="Zoom In" name="B5" onclick = "javscript:MapState=0">
<input type="button" value="Zoom Out" name="B6" onclick = "javscript:MapState=1">
<input type="button" value="Pan" name="B4" onclick = "javscript:MapState=2">
</p>
<p>
</body>
</html>
浙公網安備 33010602011771號