电子地图中要素旋转功能实现

    添加到电子地图上的资源点经常需要对其进行旋转操作。本文主要讲解如何基于openlayers2往地图中添加资源点,并实现资源点的旋转操作。

    往地图上面添加资源点图标主要有两种方式,一种是通过markers方式,利用的接口为OpenLayers.Layer.Markers。通过marker方式往地图上添加图标的示例代码如下:

   

var markers = new OpenLayers.Layer.Markers( "Markers" );
map.addLayer(markers);

var size = new OpenLayers.Size(21,25);
var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);
var icon = new OpenLayers.Icon('http://www.openlayers.org/dev/img/marker.png', size, offset);
markers.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(0,0),icon));
markers.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(0,0),icon.clone()));

   第二种方式就是通过vectorlayer的方式,把一个资源点作为一个矢量vector。当需要对资源点图标进行旋转的时候只有通过vectorlayer方式添加资源点才行。通过vectorlayer建立可旋转的图标步骤如下:

   1.新建vectorlayer图标

    

vectorLayer = new OpenLayers.Layer.Vector(
            "inducedScreen",
            {
                styleMap: new OpenLayers.StyleMap({
                    "default": {
                        externalGraphic: basePath +"/marker.png",
                        graphicWidth: 36,
                        graphicHeight: 36,
                        title:"${tooltip}",
//                        label:"${tooltip}",
                        //labelYOffset:-18,
                        fontColor:"#ff0000",
                        graphicXOffset: -18,
                        graphicYOffset: -18,
                        rotation: "${angle}"
                    },
                    "select": {
                        externalGraphic:basePath +"/marker.png",
                        graphicWidth: 36,
                        graphicHeight: 36,
                        title:"${tooltip}",
//                        label:"${tooltip}",
                        //labelYOffset:-18,
                        fontColor:"#ff0000",
                        graphicXOffset: -18,
                        graphicYOffset: -18,
                        rotation: "${angle}"
                    }

                })
//                rendererOptions: {yOrdering: true},
//                renderers: renderer
            }
        );

   2.为该图层注册点击事件,此时图标旋转的机制为用户按住ctrl键的同时点击图标,则图标旋转,图标每次旋转的度数为其上一次旋转度数加90。实现代码为:

		//诱导屏选中事件注册
	vectorLayer.events.on({'featureselected': function(evt){
		if(evt.feature.attributes["resourceId"]==null){
			$.say("诱导屏数据出错!");
			return ;
		}
		//判断用户是否按下shift键盘,按下shift键表示旋转诱导屏图标,否则为管理停车位操作
		if(event.ctrlKey){
			//诱导屏旋转角度增加90度
			var angle = ((evt.feature.attributes["angle"]*1)+90)%360;
			evt.feature.attributes["angle"] = angle;

			featureRotate(evt);
			evt.feature.layer.drawFeature(evt.feature);
		}else{
			//其他操作
		}
		}
	});

   3.把vectorlayer添加到地图上

    map.addLayer(vectorlayer);

   4.这里有些读者可能会以为点击诱导屏的时候诱导屏的resourceId和angle是如何获取的。这两个字段是创建vector对象的时候作为属性添加上去的。具体方式如下:

        featureArray = [];
	featureArray.push(
		            new OpenLayers.Feature.Vector(
		            		geometry, {tooltip:sparams.resource,resourceId:sparams.resourceId,angle:0}
		            )
		        );
		vectorLayer.addFeatures(featureArray);

好了,旋转看看吧

时间: 2025-01-30 04:28:37

电子地图中要素旋转功能实现的相关文章

Android中imageView图片放大缩小及旋转功能示例代码

一.简介 二.方法 1)设置图片放大缩小效果 第一步:将<ImageView>标签中的android:scaleType设置为"fitCenter" android:scaleType="fitCenter" 第二步:获取屏幕的宽度 DisplayMetrics dm=new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); dm.widthPixels 第三

Flash+XML实现电子地图查询及定位功能

xml 上一讲,我们实现了电子地图中如何在线标注地名功能(参阅<Flash+ASP实现电子互动地图在线标注功能>),本例我们一讲中我们学习实现按地名名称查询及定位功能. 本例要实现的功能分成"查询"和"定位"两部分,查询功能通过调用XML文件的数据一一比对实现.定位功能通过将地图进行适当的缩放和移动,将被查询到的地名显示在窗口的中央位置来实现. 制作步骤: 制作如图所示的界面: 图1 查询功能的界面 用input_txt动态文本框接收输入的地名名称.用载

Win8系统平板电脑怎么设置屏幕自动旋转功能

  Win8系统平板电脑怎么设置屏幕自动旋转功能           一般在右侧工具栏(CharmBar)中进行屏幕旋转设置; 但发现侧边栏中没有自动转屏功能,只有调节亮度和其他选项 开启方法: 1.在平板win8系统右侧边栏中搜索"Services"并打开Services设置; 2.打开Services设置窗口后,并找到"Sensor Monitoring Service"选项并鼠标右键菜单选择启动类型为"自动"状态; 3.再次打开右侧工具栏(

在PowerPoint 2007中制作旋转风车

"风车"大家小时候都玩过.微风吹过,风车便轻轻地旋转,风车的色彩也便随之流动起来,为我们的童年增添不少快乐的回忆.除了实体的风车之外,E时代的我们其实还可以在我们的演示文稿中制作旋转的风车,既可以帮我们重拾童年的快乐,也可以为我们的演示文稿作品增光添彩的. 一.单个扇形的制作 风车可以看成不同颜色的扇形面组成的.我们可以利用自选图形来制作它.比如简单一点的,用六个圆心角为60度半径相同的扇形,每个扇形填充不同的颜色,这样就可以得到一个简单的风车图形了. 点击功能区"插入&qu

怎样用好Win7系统屏幕旋转功能

Win7系统有一个非常酷炫的功能,就是能让屏幕旋转,相信很多用户都不知道吧.这个旋转功能主要用于使用投影仪或外输设备时,有时候进行多屏游戏时也会用到旋转,让整个画面能显示的更加全面.下面就来教大家如何使用Win7屏幕的旋转功能. 操作方法: 1.点击操作系统的开始菜单,在开始菜单之中点击控制面板栏目. 2.在弹出的控制面板对话框之中的中部可以寻找到外观和个性化项目,点击其下方的调整屏幕分辨率子项目. 3.在弹出的新窗口中部,点击方向右边的小三角形,弹出了如下图下拉列表.在这里点击横向翻转.多数外

ArcGIS API for Silverlight 使用GP服务实现要素裁剪功能

原文:ArcGIS API for Silverlight 使用GP服务实现要素裁剪功能      昨天一QQ好友问了一个关于裁剪的问题,感觉自己也没有帮上什么忙,之后自己做了一个裁剪的例子,不过在做这个例子的时候还遇到了不少的问题,在此和大家分享一下. 1.裁剪功能的实现过程 这里的裁剪功能很简单,只需要一个Clip(裁剪)工具即可. 但是这里需要注意的问题是裁剪工具的参数: 裁剪工具有两个输入参数: a.输入要素:这里指的是你用什么来裁剪目标要素,也就是你用什么裁剪 b.裁剪要素:这里指的被

Android单点触控实现图片平移、缩放、旋转功能_Android

相信大家使用多点对图片进行缩放,平移的操作很熟悉了,大部分大图的浏览都具有此功能,有些app还可以对图片进行旋转操作,QQ的大图浏览就可以对图片进行旋转操作,大家都知道对图片进行缩放,平移,旋转等操作可以使用Matrix来实现,Matrix就是一个3X3的矩阵,对图片的处理可分为四个基础变换操作,Translate(平移变换).Rotate(旋转变换).Scale (缩放变换).Skew(错切变换),如果大家对Matrix不太了解的话可以看看这篇文章(点击查看),作者对每一种Matrix的变换写

Android单点触控实现图片平移、缩放、旋转功能

相信大家使用多点对图片进行缩放,平移的操作很熟悉了,大部分大图的浏览都具有此功能,有些app还可以对图片进行旋转操作,QQ的大图浏览就可以对图片进行旋转操作,大家都知道对图片进行缩放,平移,旋转等操作可以使用Matrix来实现,Matrix就是一个3X3的矩阵,对图片的处理可分为四个基础变换操作,Translate(平移变换).Rotate(旋转变换).Scale (缩放变换).Skew(错切变换),如果大家对Matrix不太了解的话可以看看这篇文章(点击查看),作者对每一种Matrix的变换写

Android开发之图片旋转功能实现方法【基于Matrix】

本文实例讲述了Android开发之图片旋转功能实现方法.分享给大家供大家参考,具体如下: 在Android中进行图像旋转需要使用Matrix,它包含了一个3*3的矩阵,专门用于进行图像变换匹配.Matrix ,中文里叫矩阵,高等数学里有介绍,在图像处理方面,主要是用于平面的缩放.平移.旋转等操作.Matrix没有机构体,它必须初始化,然后通过reset方法和set方法来实现. 首先介绍一下矩阵运算.加法和减法就不用说了,太简单了,对应位相加就好.图像处理,主要用到的是乘法 .下面是一个乘法的公式