3 服务器端关键技术的设计与实现
3.1 计算行车路程的方法
系统可以利用Google Maps API计算行车总路程。首先假设地球作为一个完美的球体,半径为常量R=6 378.137 km。计算球面两点间弧长的算法为半径*弧度,而弧度可以从两点间的经纬度算出。此时,可以利用Google Maps API提供的四个类方法推算出行车路程。它们分别为返回角度值纬度Glatlng.lat()函数、返回角度值经度Glatlng.lng()函数、返回弧度值纬度Glatlng.latRadians()函数和返回弧度值精度Glatlng.lngRadians()函数。
通过上述公式可以近似求出相邻两点间行车路程,遍历所有行车点,把相邻两点间的行车路程进行叠加,即可近似求出行车总路程。由于发送数据的时间间隔很短,所以通过这个算法得出的行车路程和车辆实际行驶的路程公里数基本一致。
3.2 轨迹回放的实现思想
系统通过调用数据库中经度和纬度坐标、行驶车速、时间等车辆相关信息,可以实现轨迹回放功能。虽然在设计过程中可以采用直接读取数据库数据的方法进行轨迹回放,但是考虑到其扩展性远远不如XML文档大,所以该系统采用了从XML文件中读取数据并通过绘制Gpolyline折线来回放行车路线。实现该功能必须要预先定义好XML文件结构,这里令polyline为root节点下的一个子节点,在其属性中规定相应的颜色、边线宽度等,Polyline节点的子节点为lat,lon,data,speed等,用于定义每个节点的经度、纬度、行车时间以及速度等。XML文档设计好后,使用PHP语言编写了一个服务器程序动态读取数据库数据和自动更新XML文件。编写一个HTML程序,利用JavaScript解析XML文档,解析整个XML文档就是使用GXmlHttp对象把需要处理的节点取出(创建GXm-lHttp对象非常简单,直接调用GXmlHttp.create()方法即可)。利用函数getElementsByTagName()获取polyline节点,通过函数Node.childNodes[k].node-Name()获取polyline节点的子节点(变量k表示poly-
line节点下子节点的总数),根据两点间确定一条直线的公理,循环读取数据并绘制行车轨迹。
上一页 [1] [2] [3] 下一页