将Google地图上的多边形/区域保存到本地数据库和方法,以检查点是否位于多边形

时间:2017-05-30 15:09:36

标签: google-maps-api-3 maps

我正在重新描述这个场景,试图让它更清晰易懂。

我正在设计一款应用,让用户打开谷歌地图,搜索地点/地址。一旦该位置出现在谷歌地图上 - 用户就可以创建多边形(使用鼠标点击创建多边形,一种边界形成闭环/区域)。一旦用户定义/创建了多边形,我需要获得定义多边形的几何/ cooridnates(lat / long),并需要将其保存在我的本地数据库中,例如:oracle。

我一直在玩谷歌地图javascript api,它有一个绘图库,让用户在地图上创建一个圆/矩形/多边形。我有以下查询:

  1. 首先,一切似乎都在UI层内运行,即javascript代码,没有涉及Java代码。我在哪里提出我的业务逻辑。那会是javascript吗?

  2. 用户创建多边形后,应用会提示用户为刚创建的多边形提供名称(例如:我在Myrtle海滩的海滨别墅)。我需要将它保存在本地数据存储中。为此,我从javascript(通过ajax)调用REST Web服务传递多边形的坐标。我正在使用Google Chrome中的CORS(跨源资源共享)策略。 Chrome未调用本地服务器上部署的REST Web服务。

  3. 此外,我将保存创建特定多边形的登录用户名,日期时间,多边形名称等。

  4. 同样,这是为下一阶段计划的事情。一旦用户登录应用程序,它将获取该用户创建的所有多边形并将显示在地图上。这是一种逆向工程,用于绘制从本地数据库中获取纬度/经度的多边形。

  5. 如果还需要指定任何内容,请发表评论。我会尽快做出澄清。

    谢谢!

1 个答案:

答案 0 :(得分:1)

  1. 您可以将业务逻辑放在任何地方。根据您对要完成的内容的描述 - 搜索功能可以使用Google Maps和Places API完全在Javascript中完成。一旦他们选择了多边形,该多边形的顶点以及您收集的任何其他元数据都可以格式化为JSON并提交给您的REST服务进行进一步处理。

  2. 您的REST服务需要设置CORS标头。你如何做到这取决于你正在使用哪个服务器端堆栈(Spring?Flask?Express?)。无论您使用哪种技术,都应该有足够的文档(以及此处的stackoverflow)来启用CORS标头。

  3. 同样,这不是谷歌地图问题,更多是关于您选择的应用服务器中的用户身份验证/会话管理的问题。理想情况下,您的休息服务应进行令牌身份验证,以防止数据被恶意插入。

  4. 您应该有一个REST端点,为给定用户提供已保存的多边形路径。有了这个,很容易重建多边形并在地图上渲染它。

  5. 我认为您已经查看了Google Maps API的相关前端文档

    https://developers.google.com/maps/documentation/javascript/examples/polygon-simple

    其余的是服务器端管道。你描述的项目不是火箭科学,但确实有许多活动部分。尽早获得架构非常重要。祝好运!