【问题标题】:how to get Route directions between two points on a map to draw driving directions?如何获取地图上两点之间的路线方向以绘制行车路线?
【发布时间】:2009-10-14 15:08:55
【问题描述】:

有没有办法使用核心位置或谷歌或其他一些 api 在地图上提供两个点并获得路线的纬度/经度对的结果集?

我在本教程Drawing polyines or routes on a MKMapView 中看到如何使用核心图形绘制行车方向...但在示例代码中它有 route.csv,它具有预定义的经度和纬度集.....我该怎么做制作一对经度和纬度,以便我可以绘制行车路线。

【问题讨论】:

    标签: xcode iphone-sdk-3.0 mapkit location map-directions


    【解决方案1】:

    公司在开发路由算法上投入了数百万美元,所以我非常怀疑你是否能够在任何地方免费获得它(不过我很高兴自己错了)。例如,Google Maps JavaScript API 支持路由,所以我想你可以破解它。请注意,结果不会很快漂亮。

    【讨论】:

    • 你看过上面的链接吗?我想通过objective-c来做到这一点
    • 是的,我看到了链接。就像我说的那样,您需要找到一项允许您执行此操作的服务,而我不知道有任何免费服务。 Microsoft Virtual Earth(又名 Bing Maps)有一个网络服务,但据我所知它不是免费的(参见microsoft.com/maps/platform/default.aspx)。我相信这是一个 JSON 服务,所以你必须创建一些东西来与之通信——这超出了这个问题的范围。
    【解决方案2】:

    如果您对路线请求的使用有限(每天少于一定数量)并且始终在 Google 地图上显示结果,那么您确实有资格使用免费的 Google Directions API。

    https://developers.google.com/maps/documentation/directions/

    彻底阅读许可证部分以了解限制。您应该能够轻松地请求一个比 xml 更容易解析的 json 响应(加上 Apple 在 iOS 中添加的 json 解析器)。

    例如

    http://maps.googleapis.com/maps/api/directions/json?origin=Boston,MA&destination=Concord,MA&waypoints=Charlestown,MA|Lexington,MA&sensor=false

    如果您超出限制,您应该查看他们的营业执照。

    【讨论】:

      【解决方案3】:

      老问题,但 MTDirectionsKit 最近开源了,效果很好:

      MTDirectionsKit

      【讨论】:

        【解决方案4】:

        使用 Google API,您可以从两点获取路线,唯一的问题是如果您不付费,您每天只能使用一次。

        搜索如何从google获取key API,youtube上有很多视频都在讨论。

        此外,我有一个库,可以帮助您在点之间画线 this one https://github.com/jd-alexander/Google-Directions-Android

        build.gradle(Module:app)中实现后,在类中实现library,如

        public class LocationMapActivity extends AppCompatActivity implements RoutingListener

        实现方法会出现错误(强制实现它们,但没有必要使用它们)。

        我刚刚这样做了:

         public void route(){
        
               Routing routing = new Routing.Builder()
                            .travelMode(/* Travel Mode */)
                            .withListener(/* Listener that delivers routing results.*/)
                            .waypoints(/*waypoints*/)
                            .key(/*api key for quota management*/)
                            .build();
                routing.execute();
            }
        

        链接中的更多信息。

        【讨论】:

          猜你喜欢
          • 2011-01-02
          • 1970-01-01
          • 2010-11-03
          • 2011-01-08
          • 1970-01-01
          • 2012-01-03
          • 2012-08-05
          • 1970-01-01
          相关资源
          最近更新 更多