test.html 10.8 KB
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>GPS点测试</title>
<meta name=”renderer” content=”webkit”>
<meta http-equiv=”X-UA-Compatible” content=”IE=Edge,chrome=1″>

<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-control" content="no-cache">
<meta http-equiv="Cache" content="no-cache">
<head>
<!-- select2 下拉框插件 -->
<link href="/metronic_v4.5.4/plugins/select2/css/select2.min.css"
	rel="stylesheet" type="text/css" />
<style type="text/css">
html,body {
	height: 100%;
	overflow: hidden;
}

#mapContainer {
	width: 100%;
	height: calc(100% -   93px);
}

form {
	padding: 25px;
}

form .item {
	display: inline-block;
}

form .item input {
	height: 26px;
	width: 110px;
}

form .item select {
	height: 32px;
}
</style>
</head>
<body>
	<form action="">
		<div class="item">
			线路: <select name="xl" style="width: 150px;">
			</select>
		</div>
		<div class="item">
			方向: <select name="directions" style="width: 70px;">
				<option value="0">上行</option>
				<option value="1">下行</option>
			</select>
		</div>
		<div class="item">
			设备号: <input name="device" value="059L0903" />
		</div>
		<div class="item">
			开始时间戳: <input type="number" name="startTime" value="1461380940000" />
		</div>
		<div class="item">
			结束时间戳: <input type="number" name="endTime" value="1461381960000" />
		</div>
		<div class="item">
			<input type="button" value="查询GPS轨迹" onclick="searchGps()">
		</div>
		<div class="item">
			<input type="button" value="开启测距" onclick="myDis.open();"
				style="width: 75px" /> <input type="button" value="关闭测距"
				onclick="myDis.close()" style="width: 75px" />

		</div>

		<div class="item">
			<a target="_blank" href="http://tool.chinaz.com/Tools/unixtime.aspx"
				style="font-size: 12px; color: red;">毫秒时间戳转换</a>
		</div>
	</form>

	<div id="mapContainer"></div>
	<script src="/assets/plugins/pinyin.js"></script>
	<script src="/metronic_v4.5.4/plugins/jquery.min.js"></script>
	<script src="/assets/plugins/jquery.serializejson.js"></script>
	<script
		src="//api.map.baidu.com/api?v=2.0&ak=1TgEKvYqohJyeGXnN6yHSSTb4psOarQw"></script>
	<script type="text/javascript"
		src="//api.map.baidu.com/library/DistanceTool/1.2/src/DistanceTool_min.js"></script>
	<!-- moment.js 日期处理类库 -->
	<script src="/assets/plugins/moment-with-locales.js"></script>
	<!-- select2 下拉框 -->
	<script src="/metronic_v4.5.4/plugins/select2/js/select2.full.min.js"></script>
	<script>

	var inMark = 'data:image/png;base64,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AAAldEVYdGRhdGU6bW9kaWZ5ADIwMTMtMTEtMjBUMjI6NDc6MTErMDg6MDAou1syAAAATnRFWHRzb2Z0d2FyZQBJbWFnZU1hZ2ljayA2LjguOC0xMCBRMTYgeDg2XzY0IDIwMTUtMDctMTkgaHR0cDovL3d3dy5pbWFnZW1hZ2ljay5vcmcFDJw1AAAAGHRFWHRUaHVtYjo6RG9jdW1lbnQ6OlBhZ2VzADGn/7svAAAAF3RFWHRUaHVtYjo6SW1hZ2U6OkhlaWdodAA1Mwmpb+QAAAAWdEVYdFRodW1iOjpJbWFnZTo6V2lkdGgAMjgpleAmAAAAGXRFWHRUaHVtYjo6TWltZXR5cGUAaW1hZ2UvcG5nP7JWTgAAABd0RVh0VGh1bWI6Ok1UaW1lADEzODQ5NTg4MzEXUMEwAAAAE3RFWHRUaHVtYjo6U2l6ZQA0LjUzS0JC/AyPiAAAAFp0RVh0VGh1bWI6OlVSSQBmaWxlOi8vL2hvbWUvd3d3cm9vdC93d3cuZWFzeWljb24ubmV0L2Nkbi1pbWcuZWFzeWljb24uY24vc3JjLzExMjk3LzExMjk3NzIucG5nqXNeUQAAAABJRU5ErkJggg==';
	var outMark = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAvCAMAAAC18jgTAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAABO1BMVEUAAAAiu4ggv40gvowgvowgvosgvowfvo0jv44hv40gvosgvowcxo4fvowgvowdvYogv4whvo0gvowhvYwrqoAhv4wnxIkgv4wA//8gvIshvosgvowhvIshvowgvowrv5Ugv4ohvosgvowhv4wgv4whvYwXuYsgvowgvowiu4gfvo0zzJkhvowktpIgvowgv40hvo0gv4wgvowAqqogvosgvowjv4sgvowivIskv4khvowgvYsiu44hvosfvI0hv4sgvYofvowgvowgv40gv4wjuYsgvowhvowfvIsgvYsgvo0hvoxAv4Agv4wgvowgvoshvo0mv4whvowgvowfwo8gv4wgv40duokAAAAfvYsgvYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAYjGUYj2kAAAAAAAAAAAAgvoz///9v2GMAAAAAZ3RSTlMAD1eZyOr4miSc950Jivoj0i/pfAarDaoBWH3JLuv5DDDL0ZunbQvu/h6CBbQO5jhOkNwDtfAsz0Qc42EtdUGLYKKOwsYW7/s5f7nMBCj9N40U8/YZh48aAaOmAggNERMWF0lLGBkanzLKGQAAAAFiS0dEaMts9CIAAAGZSURBVDjLfZRnW8IwFIUvyN6FUlCx4AZxKw7cA/eeKKNUwfz/f2ChZNAmnC+U+54m9548KQCRwznicns8bpfX6QC7fP4AIgoEfRYcCkfQgCLhEMujMWRTLEq55EYcuSXyPpcbjv4aoRgSKGb2EUZChXvzRcSGSHfaIP0fT0iyLCXitOI38qP5JBWzKSVFE3OAk/I0HiudJMVR8JL1FRqMQgb3ggs/Jthox3B1HIg3wxoyuDoBKn6UWYOMqyp4uIYsNfC3yNEtJoc3OQXT3DFJmDNMUCkaFI1yFubmqcMedb4AsMAeVqaYzbGHtWj4l5bFx51f6a64mhca/OaeayK+3m9qY5PPS1tk7G0eV3doMLtlToN7bLT7JZvhYPByHqoWfmS93ceD/CRtNcApy89kG4fiOeXlCucLAoULzC+vgCvSxjUIdGPy2zuR4b53jx8eQagn5gi5en5B6PVtiAHeEfoYxqHiUT9FrNrT17f5a8O1eqOptXT951fXW1qzUa9ZXtfanU7nry/jsa1VuSsYtjZ3BdIDFin/A1AVNdoKDyAYAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE1LTA3LTI1VDIxOjUwOjQzKzA4OjAw6BLjdwAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxMy0xMS0yMFQyMjo0NzoxMyswODowML8kShsAAABOdEVYdHNvZnR3YXJlAEltYWdlTWFnaWNrIDYuOC44LTEwIFExNiB4ODZfNjQgMjAxNS0wNy0xOSBodHRwOi8vd3d3LmltYWdlbWFnaWNrLm9yZwUMnDUAAAAYdEVYdFRodW1iOjpEb2N1bWVudDo6UGFnZXMAMaf/uy8AAAAXdEVYdFRodW1iOjpJbWFnZTo6SGVpZ2h0ADQ3F9+avAAAABZ0RVh0VGh1bWI6OkltYWdlOjpXaWR0aAAzMtBbOHkAAAAZdEVYdFRodW1iOjpNaW1ldHlwZQBpbWFnZS9wbmc/slZOAAAAF3RFWHRUaHVtYjo6TVRpbWUAMTM4NDk1ODgzM/leoBwAAAATdEVYdFRodW1iOjpTaXplADQuMDFLQkKe5chzAAAAWnRFWHRUaHVtYjo6VVJJAGZpbGU6Ly8vaG9tZS93d3dyb290L3d3dy5lYXN5aWNvbi5uZXQvY2RuLWltZy5lYXN5aWNvbi5jbi9zcmMvMTEyOTcvMTEyOTc4Ni5wbmetpUpEAAAAAElFTkSuQmCC';

	var inOuts = [outMark, inMark];
	
	var stationCodeMap = {};
	
	var map = new BMap.Map("mapContainer");
	map.centerAndZoom(new BMap.Point(121.544336, 31.221315), 15);
	map.enableScrollWheelZoom();
	//中心点和缩放级别
	map.setCurrentCity("上海");  
	var myDis = new BMapLib.DistanceTool(map);

	
	$.get('/line/all', function(rs){
		var data = [];
		$.each(rs, function(){
			data.push({id: this.id, text: this.name});
		});
		
		initPinYinSelect2('select[name=xl]', data);
	});
	
	function searchGps(){
		var params = $('form').serializeJSON();
		//查询线路路由站点
		$.get('/test/gps/route', params, function(rs){
			var array = rs[0].children[0].children
				,coords,circle, cdsArray, points, polygon;
			//画出站点
			console.log(array);
			$.each(array, function(){
				stationCodeMap[this.stationStationCod] = this.name;
				if(this.stationShapesType === 'r'){
					//画圆
					coords = this.stationBJwpoints.split(' ');
					circle = new BMap.Circle(new BMap.Point(coords[0], coords[1]),this.stationRadius);
					circle.setStrokeColor('red');
					circle.setStrokeWeight(2)
					map.addOverlay(circle);
				}
				else if(this.stationShapesType === 'd'){
					//画多边形
					coords = this.stationBPolygonGrid.substring(9, this.stationBPolygonGrid.length - 2);
					cdsArray = coords.split(',');
					points = [];
					$.each(cdsArray, function(){
						coords = this.split(' ');
						points.push(new BMap.Point(coords[0], coords[1]));
					});
					
					polygon = new BMap.Polygon(points, {strokeColor:"red", strokeWeight:2, strokeOpacity:0.5});
					map.addOverlay(polygon);
				}
			});
			coords = array[array.length / 2].stationBJwpoints.split(' ');
			map.setCenter(new BMap.Point(coords[0], coords[1]))
		});
		
		//查询gps点
		$.get('/gps/history/' + params.device, params, function(gpsArray){
			console.log(stationCodeMap);
			var marker, label, point, state, text;
			$.each(gpsArray, function(){
				point = new BMap.Point(this.lon, this.lat);
				marker = new BMap.Marker(point);
				state = this.inout_stop;
				
				if(state == 0 || state == 1){
					text = state == 0?'出':'进';
					
					console.log(stationCodeMap[this.stopNo], this);
					marker.setIcon(new BMap.Icon(inOuts[this.inout_stop], new BMap.Size(25,25)));
					label = new BMap.Label(
							stationCodeMap[this.stopNo] + '/' +moment(this.ts).format('HH:mm.ss') + ' -'+text
							, {position: point, offset: new BMap.Size(-25,-18)});
					marker.setLabel(label);
				}
				else{
					label = new BMap.Label(moment(this.ts).format('HH:mm.ss')
							, {position: point, offset: new BMap.Size(-25,-18)});
					marker.setLabel(label);
				}
				
				map.addOverlay(marker);
			});
		});
	}
	
	
	/**
	 * 支持拼音搜索的select2
	 * @param selector
	 * @param data
	 */
	function initPinYinSelect2(selector, data, cb){
		
		$.each(data, function(){
			this.fullChars = pinyin.getFullChars(this.text).toUpperCase();
			this.camelChars = pinyin.getCamelChars(this.text);
		});
		
		$.fn.select2.amd.require(['select2/compat/matcher'], function (oldMatcher) {
			$(selector).select2({
				data: data,
			    matcher: oldMatcher(function(term, text, item){
			    	var upTerm = term.toUpperCase();
					if(item.fullChars.indexOf(upTerm) != -1
							|| item.camelChars.indexOf(upTerm) != -1)
						return true;
					
					return text.indexOf(term) != -1;
			    })
			});
			
			cb && cb();
		});
		
		return $(selector);
	}
</script>
</body>
</html>