本文介绍了如何在微信小程序WePY框架中使用async/await语法来简化异步API调用。文章首先对比了回调函数、Promise和Generator三种异步写法,阐述了async/await的优势。随后详细提供了在WePY项目中配置和启用async/await的具体步骤,包括安装依赖、修改配置文件及API Promise化,并附带了完整的代码示例。
📅 2019-03-06
毕业设计思路篇(一)之交通图的构建

2019-01-13 10-50-54屏幕截图.png

1. 导入道路地图

道路地图来自网络数据,已预处理为xml格式。


<?xml version='1.0' encoding='UTF-8'?>

<Roads>

  <road m_ID="71283896--1" len="620.98">

    <from lon="113.9205606" lat="22.9317667" id="848388981"/>

    <to lon="113.9260573" lat="22.9341232" id="2522072722"/>

  </road>

  <road m_ID="553852656--2" len="322.34">

    <from lon="113.9529339" lat="22.9448978" id="5345735265"/>

    <to lon="113.9516926" lat="22.9475618" id="5345735267"/>

  </road>

</Roads>

解析:一个road节点代表一条道路,len代表道路抽象长度,from,to子节点分别表示道路两端端点。

2. 解析道路数据

a. 构建交通图

赋值道路端点.


/**

*  路口类,记录着该路口的点坐标,以及其相连的方向道路节点组

 *               |           |

 *               |     |     |

 *               |  1     2  |

 *               |     |     |

 *        --------           --------

 *           3                  5

 *        - - - -            - - - -

 *           4                  6

 *        --------           --------

 *               |     |     |

 *               |  7     8  |

 *               |     |     |

 *               |           |

 *    如上图(1,2), (3,4), (5,6), (7,8)在同一个方向,我将其称为四组方向道路节点Node.

 *    其中,Node.inRoadID=1, Node.outRoadID=2;

 *         Node.inRoadID=4, Node.outRoadID=3;

 *         ...

 *         根据车辆靠右行原则以此类推.

*/

class CrossRoad {

public:

    CrossRoad(float fLon,float fLat) : m_fLat(fLat),m_fLon(fLon){};

    /**

     * 重载运算符 (==) 判断两个路口是否为同一个

     */

    bool operator==(CrossRoad &crossRoad);

    /**

     * 添加道路节点ID

     * @param in 入度

     * @param out 出度

     * @param atan2 该点与方向道路的atan2值

     */

    void addNode(int in,int out,double atan2);

public:

    //唯一标示符

    int m_nID;

    //经纬度的定义

    float m_fLon, m_fLat;

    vector<Node> JunctionRoad;

    //该路口的交通灯

    TrafficLight m_CTrafficLight_Light;

};

CrossRoad A,B

📅 2019-02-17