【问题标题】:How to find the length of all roads inside a polygon in google map?如何在谷歌地图中找到多边形内所有道路的长度?
【发布时间】:2018-06-20 02:59:50
【问题描述】:

我正在尝试开发一个使用“谷歌地图”(JavaScript API)的网络应用程序。

用户应该能够在地图上绘制一个多边形,然后系统会计算该多边形上所有道路的长度。

我可以在地图上绘制多边形,但我不知道如何计算多边形内的道路长度。

我该怎么做?

我正在使用“ASP.Net MVC”,如果在 C# 中更容易计算,我可以将多边形数据发送到服务器。

【问题讨论】:

    标签: javascript c# google-maps google-maps-api-3


    【解决方案1】:

    如果您要计算多边形边的长度,那就容易多了,因为边是从一个角到另一个角的直线。您需要声明一个原点 (0,0),然后找到每个角的结束位置,然后使用距离公式计算多边形单边的长度,(中学的那个平方根公式我们都非常喜欢):http://www.mathwarehouse.com/algebra/distance_formula/index.php

    如果相反,您尝试计算位于多边形内的各个道路的长度。这将更加棘手,因为没有多少道路是完全笔直的。您需要使用拱形长度公式:http://tutorial.math.lamar.edu/Classes/CalcII/ArcLength.aspx

    这两个公式都很容易使用,但困难的部分是为每条线设置方程式。曲线将更加困难,因为您需要使用方程式以某种方式绘制道路。这取决于 Google Map 的 API 的工作方式,您可能需要在数学逻辑方面发挥创造力。

    我有兴趣与您一起编写此代码。你有 GitHub 存储库吗?

    【讨论】:

    • 我正在寻找多边形内所有道路的长度,而不是多边形边的大小。假设用户绘制了一个覆盖伦敦市中心的多边形,我想计算长度该多边形内的所有道路。
    • 哇。好的。那可能我有点难以重建轮子。您是否将所有社区细分都视为道路?土路呢?如果您找到一种方法来操作距离矩阵 API 以您只需总结信息的方式返回信息,那将会更容易。我建议您尝试从 API 获取落在该多边形内的所有道路的列表,以及它们各自的长度。然后将它们加在一起。此逻辑适用于在多边形内开始和结束的任何道路。但是,例如,从 FL 到 NY 的 85 号高速公路。
    • 如果道路确实在多边形之外开始和结束,例如,想象一个生意大利面放在一杯水的顶部。 (意大利面是道路,玻璃的边缘是隐喻的多边形。)你需要修剪意大利面的两端,在两边,正好是玻璃与它接触的地方。在这种情况下,您可以通过设置地图方向的起点和终点来操纵距离矩阵 API 以“修剪”道路,以匹配多边形参数。
    • 哪个 api 调用给了我位于多边形内的道路列表?
    • 你能得到多边形的所有角的经度或纬度吗?如果是这样,您可以使用简单的线性代数推导出一个方程,以根据纬度和经度找到落在多边形周长上的每个点。然后,如果任何一条道路拦截了周边,您就有办法检查这是否属实。
    猜你喜欢
    • 2012-10-30
    • 2016-10-23
    • 2019-05-19
    • 1970-01-01
    • 2019-07-01
    • 1970-01-01
    • 2016-08-10
    • 2014-03-24
    • 2012-07-01
    相关资源
    最近更新 更多