开源WebGIS-OpenScales

文章分类:Flash编程
    最近对开源WebGIS很感兴趣,由于之前一直基于ArcGIS Server的Flex API和Mobile API做二次开发,所以自然对新发布的OpenScales(http://www.openscales.org)很关注。OpenScales旨在提供一个用户友好的、响应迅速的工具来操作空间数据,例如地理栅格视图、向量数据编辑,管理缩放和定位之间的平滑转换等等,作为一个用AS3写的开源工具,Openscales设计目的是为了易于在Flex/AIR应用中使用,它虽然小但是是GIS的有力核心。OpenScales当前最新版本是1.1。
    OpenScales是客户端的组件库,要想使OpenScales真正发挥其威力,自然还要为其配备数据库和地图服务器。开源社区中,GeoServer和PostGIS可以算是一对不错的搭档。经过一番搜索和学习,暂定GeoServer+PostGIS+OpenScales作为我了解开源WebGIS的第一站。现在研究GeoServer和PostGIS的文章已经不胜枚举,所以在我的博客中打算更多的涉及OpenScales方面的内容。
    闲言少叙,下面开始OpenScales应用的第一个例子。首先下载OpenScales压缩包,解压缩后,将bin中的四个swc为后缀的库文件添加到Flex项目的类路径中。代码如下(效果图见附件):

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:os="http://openscales.org" creationComplete="initMap();">

	<!--Flex Map Component-->
	<os:Map id="fxmap" height="100%" width="100%">
		<!--Flex WMS Layer-->
		<os:WMS name="China"
				url="http://localhost:8080/geoserver/wms"
				layers="smartropp:province"
				format="image/jpeg"
				isBaseLayer="true"
				projection="EPSG:4326"/>
		<!-- define max extent for map -->
		<os:MaxExtent left="73.447" bottom="18.319" right="135.079" top="53.555"/>
		<!-- drag handler to make map dragble -->
		<os:DragHandler/>
		<!-- mouse postion to display coordinate of cursor -->
		<os:MousePosition/>
		<!-- wheel handler to make map zooming in or out when mouse wheel rolling -->
		<os:WheelHandler/>
	</os:Map>

	<mx:Script>
		<![CDATA[
			import org.openscales.core.Map;
			import org.openscales.core.Trace;

			[Bindable]
			private var map:Map=null;
			[Bindable]
			public var displayTrace:Boolean=false;
			[Bindable]
			public var displayFirebugTrace:Boolean=false;

			private function initMap():void
			{
				Trace.useFireBugConsole=displayFirebugTrace;
				map=fxmap.map;
			}
		]]>
	</mx:Script>

</mx:Application>

 
        运行后效果图如附件中图片所示,可以对地图进行漫游(DragHandler)、通过滚动鼠标轮轴进行放大缩小(WheelHandler),在左上角显示鼠标坐标(MousePosition)。

        OpenScales中提供了IHandler接口,以及实现了该接口的Handler类,该类可作为所有与地图操作有关的类的父类。OpenScales提供了很多实用类,用来实现用户与地图的交互。比如在例子中用到得DragHandler、WheelHandler等。我们也可以根据自己的需要继承Handler类,实现OpenScales没有提供的功能。

你可能感兴趣的:(编程,应用服务器,Flex,mobile,AIR)