我在我的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