计算路线长度
Posted
技术标签:
【中文标题】计算路线长度【英文标题】:Calculation route length 【发布时间】:2010-04-20 07:49:29 【问题描述】:我有一张包含大约 80 个注释的地图。我想做三件事。
1) 从我当前的位置,我想知道到那个位置的实际路线距离。不是直线距离。
2) 我希望能够显示所有注释的列表,但对于每个注释(具有经度/纬度),我想知道从我的位置到该位置的实际路线距离。
3) 我想知道使用路线距离最接近我的位置的注释。不是直线距离。
我认为这三点的答案都是一样的。但请记住,我不想创建路线,我只想知道到注释的距离。
我希望有人可以帮助我。
最好的问候, 保罗·皮伦
【问题讨论】:
【参考方案1】:根据我对您帖子的了解,我相信您寻求的是Haversine formula。幸运的是,有许多 Objective-C implementations,尽管一旦公式出现在您面前,编写自己的代码就变得微不足道了。
我最初删除了这个,因为我一开始没有注意到你不想要线性距离,但我把它带回来,以防你认为在那个特定点的近似值足够好用户交互。
【讨论】:
【参考方案2】:我认为如前所述,如果您完全按照您所说的执行,您的查询对于 google maps API 来说会非常繁重。您是否需要一次获得所有这些信息?也许首先根据一些启发式或用户需求查询一些距离就足够了。
要获取距离,您可以使用 Google Maps GDirections
对象...正如 here 指出的那样(在页面底部有“Routes and Steps”部分,其中一个advanced example。
“The GDirections object also supports multi-point directions, which can be constructed using the GDirections.loadFromWaypoints() method. This method takes an array of textual input addresses or textual lat/lon points. Each separate waypoint is computed as a separate route and returned in a separate GRoute object, each of which contains a series of GStep objects.
”
在 iPhone 中使用 Google Maps API 应该不会太难,我认为您的问题并未涵盖这一点,但如果您需要一些基本示例,您可以查看this 问题,然后滚动到回答。
祝你好运!
【讨论】:
感谢您的信息,我刚刚将我的应用程序调整到 iPad,并将根据用户的要求实施直接路由。您的链接非常有用!谢谢! 没问题,保罗,很高兴我帮助了你。【参考方案3】:计算到大约 80 个位置的路线距离对于 Google 来说肯定是计算密集型的,我无法想象您能够向 Google Maps API 发出这些请求,如果可以在移动设备上这样做的话,而不受电话连接或服务器上的速率限制的严格限制。
不幸的是,计算路线距离而不是几何距离是一项非常昂贵的计算,涉及有关该区域的大量数据——您几乎肯定没有这些数据。不幸的是,这意味着 Core Location 或 MapKit 无法为您提供帮助。
您到底想解决什么问题?除了路线距离之外,您还可以使用其他启发式方法来近似某种距离排名。
【讨论】:
以上是关于计算路线长度的主要内容,如果未能解决你的问题,请参考以下文章