From 5d658209e937c3cea77f676cdc37781d04566cc6 Mon Sep 17 00:00:00 2001 From: lh_wang Date: Sun, 9 Aug 2015 19:20:44 +0800 Subject: [PATCH] add car run --- meitu/js/home/events.js | 199 +++++++++++++++++++++++++++------------- 1 file changed, 134 insertions(+), 65 deletions(-) diff --git a/meitu/js/home/events.js b/meitu/js/home/events.js index 93d981f..27663a9 100644 --- a/meitu/js/home/events.js +++ b/meitu/js/home/events.js @@ -1,6 +1,5 @@ - //全局事件 -define('home/events', function(require, exports, module){ +define('home/events', function(require, exports, module) { var Events = require('lib/events'); //全局事件对象 var events = new Events(); @@ -20,121 +19,191 @@ define('home/events', function(require, exports, module){ events.set('wayPoints', []); //采集数据 events.set('disTime', []); - + //所有点集合 + events.set('allPoints', []); + //汽车点 + events.set('carMarker', null); + //获取途经点 - events.on('getWayPoints', function(){ + events.on('getWayPoints', function() { var router = events.get('router'); var wayPoints = { points: [], contents: [] }; - for(var i in router){ - if(i > 0 && i < router.length - 1){ + for (var i in router) { + if (i > 0 && i < router.length - 1) { wayPoints.points.push(new AMap.LngLat(router[i].x, router[i].y)); - wayPoints.contents.push(router[i].content); + wayPoints.contents.push(router[i].content); } } events.set('wayPoints', wayPoints); }); - + //绘制线路 - events.on('drawRouter', function(){ + events.on('drawRouter', function() { var wayPoints = events.get('wayPoints'); var router = events.get('router'); var map = events.get('map'); //绘制途径点marker - for(var i in wayPoints.points){ - var content = '
'; - var marker = new AMap.Marker({map: map, position: wayPoints.points[i], content: content}); + var marker = new AMap.Marker({ + map: map, + position: wayPoints.points[i], + content: content + }); } - + //绘制各段路程 - AMap.service(['AMap.Driving'], function(){ - for(var k = 0; k < router.length - 1; k++){ + AMap.service(['AMap.Driving'], function() { + for (var k = 0; k < router.length - 1; k++) { var sp = new AMap.LngLat(router[k].x, router[k].y); var ep = new AMap.LngLat(router[k + 1].x, router[k + 1].y); driving(sp, ep); } }); }); - + //绘制起点和终点 - events.on('drawOriginDestination', function(){ + events.on('drawOriginDestination', function() { var map = events.get('map'); var origin = events.get('origin'); var destination = events.get('destination'); - + var aIcon = new AMap.Icon({ image: "http://cache.amap.com/lbs/static/jsdemo002.png", - size:new AMap.Size(44,44), + size: new AMap.Size(44, 44), imageOffset: new AMap.Pixel(-334, -180) }); var bIcon = new AMap.Icon({ image: "http://cache.amap.com/lbs/static/jsdemo002.png", - size:new AMap.Size(44,44), + size: new AMap.Size(44, 44), imageOffset: new AMap.Pixel(-334, -134) }); + + new AMap.Marker({ + map: map, + position: origin, + icon: aIcon + }); + new AMap.Marker({ + map: map, + position: destination, + icon: bIcon + }); + }); + + + //汽车运动 + events.on('carRun', function() { + var map = events.get('map'); + var origin = events.get('origin'); + var destination = events.get('destination'); + var wayPoints = events.get('wayPoints'); - new AMap.Marker({map: map, position: origin, icon: aIcon}); - new AMap.Marker({map: map, position: destination, icon: bIcon}); + var Car = new AMap.Icon({ + image: "img/car.png", + size:new AMap.Size(100,100) + }); + var carMarker = new AMap.Marker({ + map: map, + position: origin, + icon: Car, + autoRotation: true, + offset:new AMap.Pixel(-26,-10), + zIndex: 10000, + }); + + events.set('carMarker', carMarker); + + AMap.service(['AMap.Driving'], function(){ + var driving = new AMap.Driving({ + extensions: 'base', + policy: AMap.DrivingPolicy.REAL_TRAFFIC + }); + driving.search(origin, destination, {waypoints: wayPoints.points},function(status, result){ + if(status === 'complete' && result.info === 'OK'){ + //绘制驾车路线 + var paths = []; + if(result.routes.length){ + var route = result.routes[0]; + var steps = route.steps; + for(var i = 0; i < steps.length; i++){ + var path = steps[i].path; + for(var j in path){ + paths.push(path[j]); + } + } + } + + carMarker.moveAlong(paths, 500 * 1000); + } + }); + }); }); + //汽车追踪 + + + //默认操作 events.trigger('drawOriginDestination'); events.trigger('getWayPoints'); events.trigger('drawRouter'); + events.trigger('carRun'); +// setTimeout(function(){ +// +// }, 2000); - setTimeout(function(){ - console.log(events.get('disTime')); - }, 2000); + //绘制两点间路线 - function driving(origin, destination){ + function driving(origin, destination) { var map = events.get('map'); var driving = new AMap.Driving({ extensions: 'base', - policy: AMap.DrivingPolicy.REAL_TRAFFIC + policy: AMap.DrivingPolicy.REAL_TRAFFIC }); - driving.search(origin, destination, function(status, result){ - if(status === 'complete' && result.info === 'OK'){ - //绘制驾车路线 - map.setZoom(9); - var polyline = new AMap.Polyline({ - map: map, - strokeColor: '#E30078', - strokeWeight: 3 - }); - var paths = []; - if(result.routes.length){ - var route = result.routes[0]; - var steps = route.steps; - var time = 0; - var distance = 0; - for(var i = 0; i < steps.length; i++){ - var path = steps[i].path; - time += steps[i].time; - distance += steps[i].distance; - for(var j in path){ - paths.push(path[j]); - } - } - - var disTime = events.get('disTime'); - disTime.push({ - time: Math.ceil(time/60), - distance: (distance/1000).toFixed(2), - speed: ((distance/1000) / (time/60/60)).toFixed(2) - }); - events.set('disTime', disTime); - - } - polyline.setPath(paths); - - } + driving.search(origin, destination, function(status, result) { + if (status === 'complete' && result.info === 'OK') { + //绘制驾车路线 + map.setZoom(9); + var polyline = new AMap.Polyline({ + map: map, + strokeColor: '#E30078', + strokeWeight: 3 + }); + var paths = []; + if (result.routes.length) { + var route = result.routes[0]; + var steps = route.steps; + var time = 0; + var distance = 0; + for (var i = 0; i < steps.length; i++) { + var path = steps[i].path; + time += steps[i].time; + distance += steps[i].distance; + for (var j in path) { + paths.push(path[j]); + } + } + var disTime = events.get('disTime'); + disTime.push({ + time: Math.ceil(time / 60), + distance: (distance / 1000).toFixed(2), + speed: ((distance / 1000) / (time / 60 / 60)).toFixed(2) + }); + events.set('disTime', disTime); + + } + polyline.setPath(paths); + + } }); } - -}); + +}); \ No newline at end of file