最近使用高德地图JavaScript API开发地图应用,提炼了不少心得,故写点博文,做个系列总结一下,希望能帮助到LBS开发同胞们。
开发之初便遇见一个问题,项目中需要在城市区县范围内能够自由划分新的区域,但是高德地图并未提供自定义区域的实现方法,所以只能借助API自造轮子。
经过讨论得出一个实现方法,初始加载城市区县区域后,自定义折线对象,然后在区域内通过鼠标点击画出折线,再将该折线对象和已有区域边界的路径值一起保存进数据库,便能够构成划分后的两个新区域了。关于自定义区域划分的详细说明请见待写。
研究出自定义区域划分的方法后,便遇见了第一个难题:
- 画起点和终点时必须在原有区域线上,否则无法形成新的封闭空间。故需要判断鼠标点击的点是否在原有折线上,在就让其成为起点或终点,不在则让其重新点击。
- 但是用户点击时无法保证完全点击在原有折线上,故需要允许一定的误差,在误差内则判断为点在折线上,误差外让其重新点击。
- 判断为在误差内后,鼠标点终究不在折线上,此时需要在原折线上生成一个新的点(离该鼠标点最近的点)