`

使用OpenLayers在google地图上画轨迹

阅读更多
<link href="<%=request.getContextPath()%>/css/default.css" rel="stylesheet" type="text/css"> 
		<link rel="stylesheet" type="text/css"
			href="<%=request.getContextPath()%>/js/openlayers/theme/default/style.css" />
			<script type="text/javascript" src="<%=request.getContextPath()%>/js/dtree/wtree.js"></script>
		<script type="text/javascript" src="<%=request.getContextPath()%>/js/jquery-1.4.2.min.js"></script>
		<script src="<%=request.getContextPath()%>/js/common.js"></script>
		<script src="<%=request.getContextPath()%>/js/datagrid.js"></script>
		<script type="text/javascript"
			src="<%=request.getContextPath()%>/js/My97DatePicker/WdatePicker.js"></script>
		<script type="text/javascript"
			src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAA0tE6QtF1vsojmaotduPfjBRBKcH7-eLuIkbT9iyHxqbO9bzD9xR5EED_3AiWQGcoowRrgrOqEvUWFA"></script>
		<script type="text/javascript"
			src="<%=request.getContextPath()%>/js/openlayers/lib/OpenLayers.js"></script>

 

<script defer="defer" type="text/javascript">
	
		var map;
		var controls;
		var popup;
		var markers;
		var index=0;
		var pgoogle = new OpenLayers.Projection("EPSG:900913");
        var pdis = new OpenLayers.Projection("EPSG:4326");
        var markerArr=new Array();
        var selmarkers;
        var flag=false;
        var timeover;
        var satellite1;
        $(function(){
        	$("#guiji").click(function(){
        		var selids=deptTree.getCheckedNodes();
        		var str="";
        		for(var n=0; n<selids.length; n++){
        			if (selids[n]>1000){
        				str+=(selids[n]-1000)+";";
        			}
        		} 
        		var c=document.getElementById('mobileId');
        		c.value=str; 
        		var beginTime = document.getElementById("strBeginDate").value;
        		var endTime = document.getElementById("strEndDate").value;
        		if(str == ""){
					alert("请选择定位的目标!");
            	}else if(Date.parse(beginTime.replace(/-/g, "/")) > Date.parse(endTime.replace(/-/g, "/"))){
					alert("开始时间不能大于结束时间!");
                }else{
            		var findForm = document.forms['findfoot'];
    		   		findForm.submit();
                }
        		
        	});
        	
        })
        
		function init(){
			var options = {
	                projection: pgoogle,
	                units: "m",
	                maxResolution: 156543.0339,
	                maxExtent: new OpenLayers.Bounds(-20037508.34, -20037508.34,20037508.34, 20037508.34)
	            };
			map = new OpenLayers.Map('map',options);
			var satellite2 = new OpenLayers.Layer.Google( "Google Satellite2" ,{type: G_SATELLITE_MAP, 'maxZoomLevel':18,sphericalMercator:true} );
			var satellite1 = new OpenLayers.Layer.Google( "Google Satellite1" ,{type: G_NORMAL_MAP, 'maxZoomLevel':18,sphericalMercator:true} );
			polygonLayer = new OpenLayers.Layer.Vector("Polygon Layer");
			map.addLayers([satellite1,satellite2,polygonLayer]);
			map.setCenter(new OpenLayers.LonLat(114.062, 22.54).transform(pdis,pgoogle), 12);
			map.addControl(new OpenLayers.Control.MousePosition());
			map.addControl(new OpenLayers.Control.OverviewMap());
			map.addControl( new OpenLayers.Control.PanZoomBar() );
			
		 	markers = new OpenLayers.Layer.Markers( "Markers" );
            map.addLayer(markers);

            <%
            if(locationMap != null){
            for(Iterator<String> iterator = locationMap.keySet().iterator(); iterator.hasNext();) {
            	String key = (String)iterator.next();
            %>
            var pointArr=new Array();
            var fea2;
    		var oLine;
			<%
				List locationList = (List)locationMap.get(key);
	            Iterator iter2 = locationList.iterator();
				while(iter2.hasNext()){
					Location loc = (Location)iter2.next();
            %>
					var lat = <%=loc.getLongitude()%>;
					var lonb = <%=loc.getLatitude()%>;
					var oPoint = new OpenLayers.Geometry.Point(lonb,lat);
					pointArr.push(oPoint);
					var feature = new OpenLayers.Feature(satellite1, new OpenLayers.LonLat(lonb,lat));
		    		feature.popupClass = OpenLayers.Class(OpenLayers.Popup.FramedCloud, {
		                'autoSize': true
		           			 });
		    		marker = feature.createMarker();
		    		markerArr.push(marker);
		    		markers.addMarker(marker);
			<%		
				}
			%>

    		if(pointArr.length>1){
	      		
	      		oLine=new OpenLayers.Geometry.LineString(pointArr);
	      	 	fea2 = new OpenLayers.Feature.Vector(oLine);
	      	 	fea2.style={fillColor:"#ee9900"};
	      		polygonLayer.addFeatures([fea2]);
	      	}
            <%
            }
            }
            %>
		} 
		
		 function mousedown(evt) {
               if (popup == null) {
                popup = feature.createPopup(true);
                	 popup.lonlat=this.lonlat;
                popup.setContentHTML("<div style='background-color:red; width:150;height:100'><a href='http://www.somethingconstructive.net' target='_blank'>click me</a></div>");
                popup.setBackgroundColor("yellow");
                popup.setOpacity(0.7);
                markers.map.addPopup(popup);
            } else {
           	    popup.lonlat=this.lonlat;
                popup.toggle();
               }
            OpenLayers.Event.stop(evt);
        } 
           
          
	</script>

 

<div id="map" style="width: 100%; height: 100%; float: left;"></div>

 

<%
			List employeeList = (List)request.getAttribute("employees"); 
			List departmentList=(List)request.getAttribute("departments");  
			HashMap locationMap = (HashMap)request.getAttribute("location"); 
		%>	

 

分享到:
评论

相关推荐

    Openlayers轨迹回放功能源码

    通过以上步骤,我们可以成功地在OpenLayers地图上实现轨迹回放功能。在实际应用中,可能还需要考虑更多细节,如用户控制播放速度、暂停、回放等功能,以及优化大量轨迹点的渲染性能等。OpenLayers 提供了丰富的API和...

    openlayers动态线

    通过结合以上知识点,你可以在OpenLayers地图上创建出动态的、具有闪烁效果的行进路线,模拟从起点到终点的过程。在实际项目中,`olMoveLine`这样的文件可能包含了实现这一功能的完整JavaScript代码,包括地图初始化...

    openLayers geoserver常见问题

    创建谷歌地图效果,OpenLayers提供了兼容Google Maps的图层类型。 OpenLayers API和类用于画点、线、面,如`OpenLayers.Geometry.Point`, `OpenLayers.Geometry.LineString`, `OpenLayers.Geometry.Polygon`。 ...

    用canvans绘制地图的运动轨迹

    这通常涉及到一个静态的地图图片或使用地图API如Google Maps、Mapbox等。如果使用静态图片,可以简单地将其作为背景设置到Canvas上: ```javascript ctx.drawImage(mapImage, 0, 0, canvas.width, canvas.height); ...

    OpenLayers-2.8

    OpenLayers 是一个强大的开源JavaScript库,专为在Web上创建交互式地图应用而设计。它允许开发者将地理信息数据以地图的形式展示出来,支持多种地图服务,如WMS、WFS、KML等,同时也兼容各种GIS数据格式。OpenLayers...

    OpenLayers-2.12

    它支持多种地图数据源,包括谷歌地图、必应地图、OpenStreetMap等。开发者可以利用这些功能构建出用户友好的地图界面,展示地理数据或进行空间分析。 在"OpenLayers-2.12"压缩包中,很可能会包含以下内容: 1. **...

    openlayers-map

    OpenLayers 是一个开源JavaScript库,专门用于在网页上创建交互式的地图应用。它支持多种地图数据源,包括WMS、WFS、KML等,并且兼容各种浏览器,包括IE、Firefox、Chrome等。OpenLayers的强大之处在于其丰富的功能...

    openlayers 2.9.1最新api文档

    OpenLayers 是一个开源JavaScript库,专门用于在Web上创建交互式的地图应用。它支持多种数据源,包括WMS、WFS、KML等,并且兼容各种浏览器,包括IE6及更高版本。OpenLayers 2.9.1是该库的一个稳定版本,提供了丰富的...

    OpenLayers.2.10.Beginners.Guide

    OpenLayers是一个流行的开源JavaScript库,用于在Web浏览器中展示地图和地理数据。它支持多种数据源,包括WMS、WFS、KML等,使开发者能够轻松构建交互式的地图应用。 本书涵盖了OpenLayers的基础知识,帮助初学者...

    LBS轨迹平滑播放示例

    它支持多种地图源,如谷歌地图、高德地图、OpenStreetMap等,用户可以自定义图层和样式,以适应不同的需求。 3. **时间线控制**:TimeLineLite.min.js是一个轻量级的时间线库,可能用于控制轨迹的播放速度、暂停、...

    基于openlayer的军事动态标绘.7z

    军事动态标绘是通过在地图上实时显示和更新战场信息,如部队位置、行动轨迹、火力覆盖范围等,为指挥决策提供直观依据。OpenLayer通过其矢量图层功能,可以方便地实现这些动态标绘需求。 1. 矢量图层:OpenLayer中...

    太乐地图下载器V4.6破解+步骤

    支持对下载地图的ArcGIS缓存格式,谷歌金字塔切片格式,百度切片格式、我们的自有格式azdb进行本机离线浏览,并支持调用谷歌地图离线API、百度地图离线API进行B/S方式离线浏览 15.影像金字塔构建。更快速的在第三方...

    GIS做的人员轨迹源代码

    - 地图服务如Google Maps API、Bing Maps API或OpenStreetMap提供底图,而JavaScript库则负责在这些底图上叠加轨迹数据,形成图层。 6. **交互式功能** - 通过JavaScript,可以实现用户与地图的交互,比如缩放、...

    太乐地图下载器(40多个地图,还支持坐标纠偏和坐标系转换)

    『太乐地图下载器』支持谷歌、天地图、百度、诺基亚、搜搜、ArcGIS Online、高德、超图云服务、必应、雅虎的街道地图、卫星地图(卫片)、标签/卫星混合地图、地表地形图的高速下载、无缝拼接、无损压缩、地图纠偏、...

    车辆轨迹回放

    车辆轨迹回放是一种重要的地理信息系统(GIS)功能,它允许用户在地图上查看和分析车辆的历史运动路径。这种技术在物流、交通管理、公共交通监控、出租车服务、安全追踪等领域广泛应用。"Flex"是Adobe开发的一种富...

    基于OpenLayers的矿场人员监控系统的研究与设计.pdf

    OpenLayers是一个轻量级的WebGIS开发框架,它提供了一个JavaScript库,使得开发者能够在网页上轻松实现地图的浏览、漫游和缩放等功能。OpenLayers支持多种地图格式,如WMS、WFS、GML等,同时也兼容商业地图服务如...

    多边形圆形矩形等多种图形绘制

    1. Draw.html:这可能是一个示例页面,展示了如何在地图上使用HTML5和Jquery绘制图形。 2. pointInPolygen.html:此文件可能涉及到点在多边形内的检测算法,这是地图应用中常见的功能,例如判断某个点是否位于特定...

    太乐地图4.6+注册器 测试能用

    (将下载地图发布为Web服务(WMTS/WMS),供ArcGIS、SuperMap、Openlayers等客户端直接远程访问,支持Openlayers的离线浏览) 4、支持无缝拼接成单张大图 (支持无损压缩、分块拼接,可在ArcMap、Erdas Imagine中...

Global site tag (gtag.js) - Google Analytics