天天看点

百度地图——判断用户是否在配送范围内解决方案

在pc端设置商家的配送范围,用户在下单时,根据用户设置的配送地点判断是否在可配送范围内,并给用户相应的提示。

1.用百度地图在PC端设置配送范围,可拖拽选择2.根据用户设置的配送地址判断是否在配送范围内

改动百度地图官网的demo,设置配送范围。

思路:获取多边形的顶点,以json的形式保存到数据库。

百度API关于多边形覆盖物:

实现:

百度地图——判断用户是否在配送范围内解决方案

主要代码:

以上代码主要是监听 <code>lineupdate</code> 事件,每一次拖拽百度地图回调函数将返回的多边形的顶点,然后通过JSON.stringify方法转为string类型存在一个标签里面,以待后续的表单提交操作。

去网上看了一下,判断点是否在配送范围内的方法很多,大概采用的是射线法。

但是有一些方法没有考虑全面,导致有的情况判断不够准确。

在百度地图的GeoUtils里面找到了“判断点是否多边形内”这个方法。

因为我是需要在后端做判断,然后直接把js转化成了java,测试百发百中,欣喜!(后面附上测试方法)

主要是判断和这个方法的可行性。

为此写了个测试方法。

思路:获取一个多边形的顶点,然后随机点一个点

1.调用百度地图的方法,判断该点是否在范围内

2.根据百度地图获取的那个店的经纬度,自己程序判断是否在范围内

调用百度地图的方法: