2014-02-22 54 views
0

我創建的應用程序允許用戶使用在線和離線地圖,在線地圖我使用Google地圖API,離線我使用開放式街道地圖(因爲Google地圖無法下載或緩存根據他們的政策),我該如何部分下載地圖?部分下載android中的開放式街道地圖

例如,現在我有一個座標x,y的命運,我該如何下載圍繞此座標的地圖區域並保存在我的設備上供以後使用,以後我如何加載它?

目前我只能顯示和放大地圖視圖。

回答

0

您是否在談論由tiles或矢量地圖組成的柵格地圖?從官方OSM服務器下載大量磁貼違反了它們的tile usage policy,因爲這些服務器運行在資金資源上。但是,您可以使用render your own tiles,例如TileMillMaperitive

如果您不想使用矢量地圖,只需轉至OSM wiki並按照首頁上的Download鏈接。

對於非常小的地區,比如說一些街道,您可以使用regular API。對於較大的地區,說一個城市,你應該嘗試Overpass API。而對於更大的最好的是使用area or country extract。之後,您可以使用諸如osmosis,pbftoosmosmconvert之類的工具來進一步處理數據。

請注意,您仍然需要將此原始地圖數據渲染到矢量地圖。

0

您應該(深入)瞭解openstreetmap.org的wiki並在網上搜索「tiles offline osm」。

還有一個項目叫做osmdroid。它具有一個包含Google地圖窗口小部件大部分功能的窗口小部件。有一個離線磁貼提供程序可以利用下載的磁貼(使用特殊工具創建的緩存和zip文件)。

在這方面最大的問題之一是,大多數瓷磚服務器不允許下載大面積的瓷磚離線使用。如果您使用像Mobile Atlas Creator這樣的工具,您將被tiles服務器阻止,並且只下載告訴你「你被阻止」的圖片。

因此,如果您想爲具有更高縮放級別(> 14)的應用程序用戶提供非常大的區域,則會出現問題。但是,如果你只是提供一個小城市的地圖,你可以嘗試使用其中一個開放的磁貼服務器(AFAIK MapQuest是一個更自由的下載策略)或從商業提供商那裏購買一定數量的磁貼(參見wiki ,我不想在這裏做廣告)。

這將是很好,如果有某種對等文件共享當前的地圖。因爲OSM的許可證(至少我是怎麼理解的)說,可以根據OSM數據銷售地圖,但這些地圖可以以任何方式共享和發佈。

如果有人發現共享地圖的解決方案(沒有太多的AWS/provider/cloudfront /的成本),這對於許多Android應用程序員來說會很有趣。 osmdroid的優點是所有安裝的應用程序都可以重複使用相同的地圖。

+0

我現在正在使用osmaroid lib,我現在堆上幾個問題:1.如何下載特定區域的地圖(區域大小贏得了關注,但縮放級別最好是街道級別),我應該存儲什麼樣的格式,以及2.如何在我想使用時加載它,以及如何在其上放置標記? – user1452954

2

我建議mapsforge,你可以爲Android甚至桌面做離線地圖。與具有高縮放級別的貼圖相比,它需要更少的帶寬。缺點是你必須在你自己的服務器上爲每個區域創建一個地圖,就像我爲graphhopper創建的那樣。

+0

感謝您的建議,你有沒有關於如何使用下載和創建地圖的任何詳細步驟? – user1452954

+0

題外話:我看了一下http://graphhopper.com/ - 很酷的項目! – hgoebl

+0

@ user1452954您可以使用mapsforge地圖編寫器創建地圖,並通過API將其加載到android上。應該很簡單。只需詢問他們的郵件列表。 http://code.google.com/p/mapsforge/wiki/GettingStartedMapWriter重要:確保使用正確版本的滲透。我認爲只有0.40.1會起作用! – Karussell

相關問題