1 Dim strFileName As String
2 Dim img As Bitmap
3 Dim l, t, r, b As Double
4
5 strFileName = _map.GetMap(t, l, r, b, _path)
6 Me.lblImg.Text = strFileName
7 img = New Bitmap(strFileName)
8 Me.picMap.Image = CType(img, Image)
9
10
运行结果如下:
下面,我们就可以在使用ASP.net创建使用此远程服务的控件,在Web上使用GIS地图服务,实现WebGIS。
Map Control的创建和测试
现在,我们已经可以在ASP.net开发中直接使用上面实现的Map Service,我们可以通过控制GetMap的参数,来实现移动、大小缩放等基本功能。
为了文章的完整性,我们来封装一个简单的Map Control控件。
该控件在New事件内初始化 _map 调用远程的Remoting服务(Map Service),和前面的测试一样,可以使用如下方法初始化:
_map = CType(Activator.GetObject(GetType(IMapRender.MarsWebGIS.IMapRender), "tcp://localhost:8085/MapService"), IMapRender.MarsWebGIS.IMapRender)
然后在Render事件内调用GetMap。我们可以在此控件内通过GetMap参数封装移动、大小缩放等基本功能。
下面我们测试一下此控件。新建一个ASP.net页,增加以下引用:
<%@ Register Assembly="MapControlLibrary" Namespace="MapControlLibrary" TagPrefix="MapControlLibrary" %>
然后就可以使用控件:
<MapControlLibrary:MapControl id="Map1" runat="server">
</MapControlLibrary:MapControl>
运行结果如下:
这样,我们就完成了一个简单的WebGIS框架。
总结
该框架可以算作WebGIS的一个简单的纵剖面,由此我们可以明白WebGIS系统的架构,需要的技术,设计和设计模式的应用。
由于笔者对于Remoting和ASP.net控件技术不太熟悉,文中难免有所疏漏,存在不少错误和问题,还欢迎大家一起讨论。最后希望所有做GIS的同行可以更多关注架构和模式,提高我们的设计能力。
|