如何防止用户使用 Google 地图绘图管理器创建自相交多边形
How do I prevent a user creating a self-intersecting polygon with the Google Maps Drawing Manager?
我正在使用Google地图绘图管理器来允许用户绘制多边形。
用户可以绘制多边形,但它必须是"简单"多边形,而不是"复杂"多边形,即它不能自相交。
谷歌地图库似乎没有任何内置的检测/防止自相交的支持,所以我计划监听创建每个点的用户,然后我会运行检测算法来检查当前的折线/线串是否是自相交的。
不幸的是,文档中唯一的事件是覆盖完成事件。
我可以等到用户完成绘制他们的多边形,然后再验证它并告诉他们这是不允许的,但如果我可以阻止他们首先放置点,那将是一个更好的体验,这可能会为他们节省大量浪费的时间和精力。
我可以使用我需要的功能构建自己的绘图工具,但是当Google提供非常接近我需求的产品时,我宁愿避免创建和维护这样的东西。
我已经准备好了验证代码,我正在使用类似问题提供的 JSTS 代码 SO,这是我正在询问的绘图管理器功能。
我发现当用户在多边形中放置每个点时,没有记录的事件,只有完成多边形创建时的事件。
所以我只需要使用它,直到我有时间从头开始制作自己的绘图管理器。
此外,JSTS变得非常大(文件大小缩小(,所以我放弃了它。
由于我的多边形的点数总是很低,我采用了一种更简单的方法,我测试了多边形中的每条线,看看它们是否与多边形中的任何其他线相交。这是相当"蛮力",但它仍然足够快,不会被最终用户注意到。
相关文章:
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 如何访问声音管理器2创建的声音对象
- JS编译器/包管理器,用于版本控制
- Modx数据包管理器ext-all.js错误
- 根据单个用户的决定禁用谷歌标签管理器(选择退出)
- jquery在通过谷歌标签管理器交付时点击不工作
- 删除$fromtataLayertotal-google标签管理器
- 谷歌地图API v3绘图管理器-地图不渲染
- 在绘图中更改“绘图模式”谷歌地图v3的管理器
- 如何防止用户使用 Google 地图绘图管理器创建自相交多边形
- 如何在绘图管理器控件的按钮上添加事件侦听器
- 由谷歌地图绘制的矩形 绘图管理器不会触发鼠标移动事件
- 在绘图管理器中显示/隐藏所有图形绘图
- Google Maps API V3 -绘图管理器事件监听器被触发多次
- 添加绘图管理器后丢失绑定事件
- 当绘图管理器为标记激活时,自动单击地图中心
- 谷歌地图绘图管理器在引脚掉落后启动绘图
- 将信息框添加到使用谷歌地图中的绘图管理器绘制的多边形中
- on更改谷歌地图APIv3绘图管理器的事件
- 谷歌地图绘图管理器限制为1个多边形