2011-11-27 48 views
1

我想用Google Maps(或其他)的地圖解決方案標記全球各地的歷史「興趣點」。如何讓Android用戶在Google地圖上搜索由我創建的最近興趣點?

我將獲得一個Android應用程序,我希望能夠爲用戶提供在其當前位置周圍搜索和查找最近這種「興趣點」的能力。

  1. 我應該使用Google Maps還是其他類似OSM?

  2. 我應該如何在Google或其他地方標記它們?

    (一)我希望能夠標記以及這些地方跟圖片和

    (B)我想將它們存儲在我身後的通用格式結束爲好,以防萬一!

  3. Android應用程序應該如何搜索最近的這樣的點?

  4. 據我所知,當我提供KML文件(http://code.google.com/apis/kml/documentation/kmlSearch.html)時,Google地圖可以顯示自己的地圖與我的數據重疊。可以顯示「在Android應用程序內」嗎? (即,我知道它可以在網頁上顯示,但它可以在本機應用程序中顯示?)

+0

根據應用程序的流行程度,Google地圖可能不是一個好選擇,因爲它們會限制API密鑰生成地圖的次數。 – MrZander

回答

0

好了,對於一個應用程序,我建了一個客戶,我們也有類似的要求。基本上,我需要顯示目前位置200英里的感興趣的位置。這對我的工作方式是,我把我當前的位置,並進行Web服務調用到他們的服務器,他們做了地理計算,並返回一個結果列表給我。

我會讓Android應用程序只使用MapView,然後用戶Overlays在地圖上顯示圖標。使用kml顯示項目的問題是它們不會被用戶點擊,所以它們將不會互動。如果你選擇使用KML做到這一點,有位於該項目的一些示例代碼:https://github.com/sunlightlabs/congress

+0

嗨 - 對於遲到的回覆抱歉 - 你能幫我理解Overlays是如何工作的嗎? – Steve

2
  1. 我會建議谷歌地圖。原因是谷歌地圖經常更新和部分 來自osm的地圖不是最新的。

  2. 可能將此標記存儲在您自己的數據存儲中,稱爲point_of_interest。 信息窗口也是一種特殊的疊加層,用於在給定的 位置的地圖頂部的彈出氣球內顯示內容 (通常爲文本或圖像)。請閱讀here瞭解更多信息。

  3. 您的android應用程序應該檢測當前用戶的位置併發送信息 如緯度和經度到您的服務器。因此,搜索 以查找興趣點的查詢由服務器完成,並處理數據並將 發送回用戶的android應用程序。例如,查詢將類似 select * from point_of_interest where distance < 10km limit 5;

  4. 是,閱讀本link

+0

如果我們使用Google Maps API搜索POI,它可以返回多少個POI?免費和企業API? – usman

0
  1. 我喜歡谷歌地圖。谷歌地圖SDK看起來不錯,SDK表現不錯。我不知道有一個類似OSMMapView的SDK可以提供像Google地圖一樣的性能和功能(請糾正我)。但是,OSM可以像谷歌地圖一樣具有視覺吸引力。 Cloudmade對於OSM數據有很多不同的樣式。

  2. 如果要通過google顯示地圖,必須使用隨Android SDK一起提供的Maps Library

    1. 您可以在谷歌地圖上顯示任何視圖。即在github上使用mapviewballoons

    2. 如果您有很多想要顯示的POI,您應該堅持使用空間索引來存儲數據。所以最近的鄰居搜索速度很快。一種解決方案是使用sqlite R*Trees。我沒有在android上使用它們,並且它們不是開箱即用,你必須自己構建sqlite-android(請參閱this question)。或者使用Perst或...

      如果您的數據很少,可以使用Quadtree。這在搜索時會比db快。你會發現很多例子,當你谷歌它。您可以將數據存儲爲xml,json,甚至可以使用java Serializable接口對整個四叉樹進行序列化。

  3. 有很多可能性,這個問題太廣泛了。一些隨機想法:

    1. 創建一個響應HTTP上的邊界框搜索並將這些POI存儲在一個四叉樹中的服務器。

    2. 交付所有您的POI與應用程序。作爲數據庫,xml,json或序列化的Quadtree。

  4. 我在Android上沒有使用kml的經驗。