Monthly Archives: 五月 2017

使用高德地图画飞行轨迹

高德地图提供了很多API来满足我们在其地图上画不同的图形,比如描绘出一段公交的路线,或确定一个建筑的位置等。

下面我以工作中的例子,描绘在高德地图上如何画出一条飞行轨迹。

高德提供了JS的API,需要先引入,后面的key需要你去高德的开发平台去申请

<script type="text/javascript" src="https://webapi.amap.com/maps?v=1.3&key=你的key"></script>

在html中定义一个div,来展示地图

<div id="container" style="text-align:center; margin: 0 auto; margin-top:25px;"></div>

下面就可以开始画图了,首先我要调用接口获取所有的飞行点坐标,一个轨迹就是通过一个个点来显示的

    var data = postRequest();
    //获取地图的中心点坐标
    var centerlat = (data.dep.lat + data.arr.lat)/2
    var centerlon = (data.dep.lon + data.arr.lon)/2
    var centerArr = [centerlat, centerlon];
    var map = new AMap.Map('container', {
        resizeEnable: true,
        center: centerArr,
        zoom: 5
    });

定义一个地图对象map,其中心点通过起/始点经纬度来计算,zoom为地图显示的缩放级别,resizeEnable:true,表示可以调整地图大小

好了就可以在地图上画线段了,获取点集合,格式为:[[40.0618,116.5991],[40.0552,116.6002],[40.0485,116.6013]],下面也设置了线条的一些样式。

strokeDasharray为勾勒形状轮廓的虚线和间隙的样式,此属性在strokeStyle 为dashed 时有效, 此属性在ie9+浏览器有效,用法:

[10,5] 表示10个像素的实线和5个像素的空白(如此反复)组成的虚线

    var lineArr1 = data.pointList1;
    var polyline = new AMap.Polyline({
        path: lineArr1,          //设置线覆盖物路径
        strokeColor: "#3366FF", //线颜色
        strokeOpacity: 1,       //线透明度
        strokeWeight: 2,        //线宽
        strokeStyle: "solid",   //线样式
    });
    polyline.setMap(map);

    var lineArr2 = data.pointList2;
    var planPolyline = new AMap.Polyline({
        path: lineArr2,          //设置线覆盖物路径
        strokeColor: "#3366FF", //线颜色
        strokeOpacity: 0.7,       //线透明度
        strokeWeight: 2,        //线宽
        strokeStyle: "dashed",   //线样式
        strokeDasharray: [10, 5] //补充线样式
    });
    planPolyline.setMap(map);

另外还需要画一个飞行物,更好的展示视觉效果,飞行物即一个点坐标,但这个坐标我用一张图片来表示

    //添加飞行物图标
    var icon = new AMap.Icon({
	    size: new AMap.Size(54, 52), //图标大小
            image: "images/MapPlane.png"
        });
	var marker = new AMap.Marker({
	    map: map,
	    angle: nowPlanePos.course,
	    position: [nowPlanePos.lng,nowPlanePos.lat],
	    offset: new AMap.Pixel(-27, -52),
	    icon: icon       
	});

使用marker方法来描绘一个点,angle表示点标记的旋转角度,即飞行物的朝向,offset函数一定要加上,因为你如果缩放地图后,那么这个飞行物可能在地图上呈现的位置会相差很大,

可以看看没有设置offset和设置了offset的差别,前两幅是设置了offset,后两幅是没有

6A3B1EF7-D539-4EE8-87D6-175B5767883C

C1EC8C8B-02B0-4534-8111-E4C2052C5306

可以看到,地缩放比例飞行物的位置相差很多,但实质,坐标的位置都是一样的,飞行物并没有根据地图来改变自己的偏移量

offset的用法:点标记显示位置偏移量,默认值为Pixel(-10,-34)。Marker指定position后,默认以marker左上角位置为基准点,对准所给定的position位置,若需使marker指定位置对准在position处,需根据marker的尺寸设置一定的偏移量。

以上我的图片宽度是52,只需要设置横线偏移量为宽度一半,向左则为-27。

注意:我的飞行物是不断的移动的,所以我需要实时的请求接口获取最新的点坐标,所以每次需要重新再map上画图,但在画图前,先要清除原来的图标对象,所以delete方法删除即可

比如在画飞行物时,使用:

    if(marker != null) {
		marker.setMap(null);
		delete marker;
	}

另外map对象是不需要重画的,map初始化一次即可。

参考:

官网文档地址:覆盖物-参考手册-JavaScript API | 高德地图API

图形示例:折线、多边形、圆-折线、多边形和圆-示例中心-JavaScript API | 高德地图API

阿米尔·汗《摔跤吧,爸爸》

f9dcd100baa1cd1139763732b312c8fcc2ce2ddb

一直很喜欢阿米尔·汗主演的电影,他的电影总是给给予人一些力量,并引发深入思考,看完这个电影,流了好几次泪,有下面几个体会:

1,当过去一直自己带来荣誉或好成绩的技能(或者叫思想更为贴切),当有人让你放弃它,或者告诉你那是错的,一定要持有一种怀疑的态度,若这个人毫无成就,那就更不要相信了。

2,要在任何一个领域取得成功,必定是要话费比其他人更多的练习,适当舍弃一些东西才会收获的更多。

3,即使准备的很好了,在第一次尝试中也不可能一次获胜,获胜了那算是运气,每一次都是一次吸取经验的机会,失败了还想不断尝试就一定会获胜。

4,每个人在自己行动中都会是一个“迷茫者”,因为看不到自己,所以希望有人能在旁给予一些指点;在关键的时刻以旁观者看看自己,便会对自己身处的环境有更好的认识,从而做出正确的选择。

谈注意力

 C5E52D0E-82BB-4021-B8CB-CD119E5702DA

我一直认为注意力是决定人成败的关键因素,也是最重要的因素,你把注意力放在哪,哪一点就会更突出

在谈注意力之前我先先说说健身

一直以来我还是一个比较喜欢锻炼的,由于一直是坐着办公,所以有时间一般就会发时间去锻炼下身体。最初是是想练就更强壮的肌肉,买过哑铃,等各种健身器材,也办过健身卡,请教练训练,教练指导的基本方式就是,今天炼胸,明天炼背,后天练手臂… 总之每一次要让练的地方受伤。之后又喜欢上了跑步,因为跑步相对于去练肌肉时间显的比较自由,不管是早上,还是晚上,也不至于损伤肌肉,关节

我想喜欢或健身的,应该知道这两种健身方式的不同,前者是爆发力练习,后者则是耐力练习。

先说说爆力练习吧,那是在教练指导练习时,我有时总找不到感觉,比如今天教练是指导练胸的,我推了几组哑铃后,教练就问,感觉胸部怎么样,我说没感觉啊!这时他就会对我说:你没练到位,你肯定是其它地方借力了,你要练胸,比如是上胸部,就应该把注意力放在那里,用它来发力。果然按照他的建议,的确有效果。这就是我所理解的集中注意力带来的效果,当把自己所有力量放在胸部上时,它就被激活了,迫使它要发动所有的力量去工作,当然前几次是会受伤的,因为之前没经历过,只能举几次,并因此产生了疼痛,但如果是下次再使用同样重量来练习,我们就可以举的更多了

相反跑步,跑步是一件很枯燥的事情,一般跑步我都会带上耳机,听听音乐。

跑步,没有人会对你说,你要把注意力要放在身体的哪个部位上,今年我参加了一次马拉松,回想起来,我全程根本没有去想我正在跑步,我的两个腿要怎么运动,手要怎么摆,我一直想的是能让我提高热情,能再坚持一会的事,比如:旁边有人给我鼓掌加油,我可不能停下脚步啊;看下路牌,还有1公里就到15公里了,1公里多简单啊,在路程还很远时,我会想,前面有一个目标,我要先跑到那个目标点,不会把注意力放在剩余的路程上,时刻让自己能保持热情持续去跑!

两种运动,通过转移你的注意力就能锻炼爆发力或耐力。

结合我们的工作,生活,当我决心去学习一门新技术时,这显然是跑步这项运动,而且是长跑,最初学习是枯燥的,所以开始划分一个小的目标点,再转移注意力到这个小目标上,这是就会实现起来容易的多。在实现目标中,每一个小难题,或遇到的障碍就相当于健身中的小创伤,通过集中注意力,思考和反思,下次如果再遇到就可以比先前做的更好了。

再说注意力的一个好处,他可以让大脑更省力,如果把人脑比作一台电脑,我们都知道,当电脑只执行一个进程时,速度是很快的,如果频繁切换任务,这中间是很消耗CPU资源的,大脑也是,在大脑正处于高速运转时,突然被迫停止,如果再要重新启动起来,是要花费时间成本恢复到先前的状态的。所以你看到一个人再深入思考时,尽量少去打扰别人,因为你浪费的不是这一点点时间,还有别人恢复到之前状态的时间。

说了这么多注意力带来的好处,那如何能训练提高自己的注意力,我觉得最好的办法是把自己要当前重要的时间和计划写下来,反复的去看,当有些其它事情进入我们的视线,引起我们关注时,想一想,我目前要做的事情是什么,我的计划实现了多少,这样一些无关紧要的事情,就会主动去放弃,把注意力转移到要做的重要事情上。

引用古人的一句话:精诚所至,金石为开,当一件事情,高度集中的去做,即时像金石顽固的障碍都可以攻克!