我在我的iOS应用中使用谷歌api V3, 我请求谷歌api方向服务,通过http GET方法,我得到了非常大的json响应,我从原点获得了很多替代路线到目的地,现在我想在地图上显示每种选择的路线,我应该怎么做?是否有任何需要在iOS中集成谷歌SDK,或者我可以只使用WebView,请帮助我,并建议最简单的方法。 在此先感谢在地图上显示谷歌方向api响应
回答
您不需要包含任何Google SDK来绘制地图上的路线。看看下面的课程。
的谷歌地图API服务的方向会给你的双腿(坐标)绘制两个特定点之间的路线。
由于您已经有了来自Direction api的json响应,现在您必须解析json并从json中获取所有的腿点来创建坐标数组。
这些点可能是或大部分encripted。 How to decode the Google Directions API polylines field into lat long points in objective-C for iPhone?
如果你有坐标数组,那么首先你必须创建一个CLLocationCoordinate2D数组像以下:
CLLocationCoordinate2D *pointArr = malloc(sizeof(CLLocationCoordinate2D) * [your_CoordinateArray count]);
for(int i = 0; i < [your_CoordinateArray count]; i++){
pointArr[i] = [your_CoordinateArray objectAtIndex:i];
}
然后,你必须折线添加到地图
MKPolyline *line = [MKPolyline polylineWithCoordinates:pointArr count:[your_CoordinateArray count]];
if (nil != line)
{
[your_Map addOverlay:line];
}
然后,你必须实施以下地图代理:
- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay
{
MKOverlayView* overlayView = nil;
lineView = [[MKPolylineView alloc] initWithPolyline:overlay];// lineView is an ivar, object of MKPolylineView
lineView.fillColor = [UIColor greenColor];
lineView.strokeColor = [UIColor greenColor];
lineView.lineWidth = 10.0;
lineView.alpha = 0.9;
overlayView = lineView;
return overlayView;
}
现在,如果你想在两点之间显示两条不同的路线,那么你必须创建两个不同的坐标阵列,并将上述方法应用于两个阵列。
希望这会对你有所帮助。
没有必要说,整合谷歌SDK,你可以简单地使用WebView,因为我相信WebView给你的替代视图,但用户界面比在线更清洁的SDK。但目前,我不相信SDK允许其他应用程序显示我使用新SDK的替代路线。 maps.google.com中的代码现在与API中的 显着不同,并且可以访问不同的服务。特别是,它有一个很大的外部模块mod_suggest.js,它不存在于API中。但是,您可以通过
1来实现它)扔在maps.google.com的要求,并让它做的建议,即 打开一个新的浏览器窗口,通过它像 http://www.google.com/maps?f=d&source=s_d&saddr=Jurong+West,+Singapore&da DDR =昂的东西+ Mo + Kio +新加坡& hl = en
2)只显示正常路线和避开高速公路路线。
3)尝试猜测合理的航点,以增加他的路线中间, 可能会导致合理的选择。这并不容易,除非你有一个高速公路或高速公路交叉口的数据库,并且可以寻找这样一个位于你的起点和终点之间的交点(对于 的一些近似值“之间”)。
使用纬度/经度坐标作为航点, 可能会出现问题,特别是涉及到双车道时。如果坐标 适用于错误车道上的某一点,则GDirections将驱动一个相当大的距离,以便您访问道路的错误一侧 。但是,即使使用街道名称,你可能会得到奇怪的扭结 航点附近,像这样:
来自:裕廊西,新加坡:亚逸拉惹Expy开行新加坡:宏茂 锦鲤,新加坡
也许唯一真正处理的方法是在双车道的两侧包括 两点,并且清除在下方或头顶上穿过 的道路,然后尝试过滤掉那些很愚蠢的道路。
考虑这些例子
来自:裕廊西,新加坡:1.32558,103.740764到:宏茂桥,新加坡
来自:裕廊西,新加坡:1.32582,103.740764到:宏茂桥, 新加坡
其中一个增加了7分钟的旅行由一个复杂的游览 访问错误的一边的道路。
编写代码来过滤掉愚蠢的路由并不容易。作为第一个近似值,您可以丢弃估计时间为 的路线比初始路线长10%以上。而且,您还可以比较双重对角线上的两对点的持续时间,并始终放弃较慢的一对。
编写丢弃重复路由的代码也不容易。例如, Bukit Timah Expy或Kranji Expy上的某个点可能会创建一条路线,该路线与Google的Seletar Expy建议重复。
但是,这可能不是一个合法的实现,因为API不答应。希望这可以帮助。
- 1. 谷歌地图API响应
- 2. 谷歌地图API不显示地方
- 3. 在谷歌地图上显示风向
- 4. 谷歌地图Api方向
- 5. android:显示谷歌地图的方向
- 6. 谷歌的地方API标记不会显示在地图上
- 7. 谷歌地方API和在地图上显示结果 - 滞后
- 8. 演示显示多个谷歌地图(谷歌地图API v3)
- 9. 谷歌地图API(地图不显示)
- 10. 谷歌方向API没有响应
- 11. Android - 在谷歌地图上显示方向
- 12. 在谷歌地图上显示角度2的方向Agm
- 13. 在谷歌地图上显示方向并画线
- 14. 问题在显示谷歌地图API
- 15. 使用谷歌地图API在谷歌地图上显示功能
- 16. 地图不显示在网页上(谷歌地图/ Places API)
- 17. 谷歌地图api 2如何显示/隐藏谷歌地图?
- 18. 谷歌地图Api不显示图像
- 19. 谷歌地图Android V2和方向API
- 20. 谷歌地图API提取方向
- 21. 谷歌地图API 3方向
- 22. 谷歌地图地方api
- 23. 谷歌地方JS API显示评论
- 24. 谷歌地图直接禁用方向和显示地图
- 25. 显示在谷歌地图
- 26. 显示谷歌地图在反应js
- 27. 为Android生成谷歌地图API上不显示地图
- 28. 谷歌地图API显示当地的地方
- 29. 显示在谷歌地图上的Android
- 30. 在谷歌地图上显示英国
感谢superGokuN,我会尽力实施这个解决方案。 – prabhu
嗨superGokuN,我认为有一个规则从谷歌的方向api,如果我们使用谷歌**的服务,我们必须显示谷歌地图**,所以我们必须在我们的地图集成谷歌API,或者应该尝试在WebView中显示Google地图。你有什么建议? – prabhu