地图基本控制
本节内容
显示地图:
捕获“插件初始化完毕”事件
只有当地图插件初始化完毕后才可以显示地图。因此首先需要捕获地图插件初始化完成的这个消息。eventHappen()方法提供了捕获插件消息的功能。它返回一个插件当前的状态信息。当此状态信息为“initcomplete”时,表示插件初始化完毕。
用法:
<script language=”javascript” for=”oMapViewer” event=”eventHappen(eventName)”>
//当eventName的值为initcomplete时,即表示插件初始化完毕
if(eventName == “initcomplete”)
//处理打开地图的代码
</script>
当插件初始化完毕后就可以调用oMapViewer类的openDB()方法打开图库,再用oMapViewer类的openMap()方法打开地图了。
用法:
<script language=”javascript” for=”oMapViewer” event=”eventHappen(eventName)”>
if(eventName == “initcomplete”)
{
//打开图库
oMapViewer.openDB(“[http://localhost/MapServer/MapService.asmx]China”);
//打开地图
oMapViewer.openMap(“中国地图”);
}
</script>
由上可知,openDB()方法接受一个地址作为其参数。openMap()方法的参数是要打开地图的名称。
关闭地图
oMapViewer类的closeDB()方法可以实现关闭地图的功能,用法:oMapViewer.closeDB();
地图浏览的基本功能
当地图正确显示后,可以对其添加“放大”,“缩小”,“全图”等操作来丰富webgis的应用。
添加如“放大”和“缩小”等这些功能时使用的是oMapViewer类的setCurrentTool()方法,它接受一个代表操作类型的常量。
用法:
oMapViewer.setCurrentTool(oMapViewer.OPER_ZOOMIN); //放大
oMapViewer.setCurrentTool(oMapViewer.OPER_ZOOMOUT); //缩小
oMapViewer.setCurrentTool(oMapViewer.OPER_PAN); //漫游
oMapViewer.setCurrentTool(oMapViewer.OPER_SELECT); //选择实体
oMapViewer.setCurrentTool(oMapViewer.OPER_ADDENTITY); //添加实体
oMapViewer.setCurrentTool(oMapViewer.OPER_ENITENTITY); //编辑实体
oMapViewer.setCurrentTool(oMapViewer.OPER_MEASURE); //测量长度
oMapViewer.setCurrentTool(oMapViewer.MOVEENTITY); //移动实体操作
oMapViewer.setCurrentTool(oMapViewer.TRACKLINE); //跟踪线操作
oMapViewer.setCurrentTool(oMapViewer.TRACKPOLYGON); //跟踪多边形操作
oMapViewer.setCurrentTool(oMapViewer.TRACKRECT); //矩形跟踪操作
除了上述介绍的对地图进行操作的方法外,还可以使用oMapViewer类提供的whole()方法执行全图操作。
用法:
oMapViewer.whole(); //全图操作
地图显示的配置
可以通过oMapViewer类的maxScale和minScale属性设置地图缩放的比例尺。
用法:
function displaySet()
{
//设置最大比例尺
oMapViewer.maxScale = 100000000;
//设置最小比例尺
oMapViewer.minScale = 1000;
//重绘地图
oMapViewer.redraw();
}
maxScale和minScale都是用来设置地图形式最大或最小比例尺的。如果当前地图比例尺大于或小于此值就不能再进行缩放了。
范例 -- 测距
按照上面讲解的内容,现在在地图上添加一个测量距离的功能。用户可以通过点击鼠标在地图上画出线段,在线段上显示测量结果,双击结束测量距离操作。
实现此功能只需要使用oMapViewer类的setCurrentTool方法,并将用户当前状态设置为oMapViewer.OPER_MEASURE。
用法:
oMapViewer.setCurrentTool(oMapViewer.OPER_MEASURE);
运行效果:
