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>

原文地址:https://www.cnblogs.com/watsonyin/p/150809.html