2010-06-19 72 views
7

我想開始開發一個基於地圖的網站。 起初我爲了測試網站訂購了一款regulat Gps設備,後來我想使用Iphone的gps和其他手機設備。 所以我需要一些非常通用的東西。開發位置/地圖的網站

我在網上搜索了基於地圖的開發框架,並提出了太多: 地理服務器,地圖服務器,Open層,Geoext,谷歌地圖的API等。

我不是一個經驗豐富的網絡developr(更多的是C++的那種人),所以我需要的東西很簡單,但強大的同時。此外,我需要一個免費的,並且不會有許可問題。

起初,我只需要基本的能力,在實時我的網站顯示的GPS數據。

有人可以推薦一個嗎?

謝謝

回答

5

客戶

我會去的OpenLayers - 這是一個開源的JavaScript客戶端庫,類似於谷歌地圖API或Bing API。然而,OpenLayers將免費解決您的任何許可問題或更改API,因爲源代碼可用並且可以修改 - Google/Bing/Yahoo API的情況並非如此。但是,您可以將來自這些服務的數據作爲OpenLayers中的圖層使用,並在突然變得廣告充滿或有商業限制時放棄。

看一看的例子,看看是否有一個你可以用它讓你的第一個測試應用程序 - http://openlayers.org/dev/examples/

GeoExtJS是額外的工具和部件與的OpenLayers工作,建立在另一個JavaScript的頂部集合框架ExtJS - 也是開源的。 ExtJS主要用於構建用戶界面 - 使用JavaScript的數據輸入表單,網格等,以在瀏覽器中顯示。

如果您正在尋找樹形結構以打開和關閉等更先進的UI組件層,然後GeoExtJS是值得研究的。

服務器

如果你只顯示點,那麼你可以在你的Web服務器和參考的OpenLayers這對創建動態KML或GeoJSON的。您可以使用所有語言的庫。 Python已經成爲地理空間技術中的關鍵語言,並且可以編寫GeoJSON庫。

GeoServer和MapServer都是服務器端程序,它允許您使用符號系統,標籤等從數據庫提供空間數據。如果您有很多不同的數據集,那麼值得花費時間來設置它。

MapServer是用C++編寫的,因此您可能會更容易嘗試 - 但是您可能無需任何專業服務器端軟件即可離開,特別是如果您的數據由X,Y/Lon,Lat值組成這可以很容易地繪製爲點。

1

我使用Bing Maps for mobile。主要是因爲它的速度很快,並且爲英國提供比谷歌地圖更好看的地圖,3D模型和衛星視圖。

我也有過與谷歌改變自己的服務提供一些增強功能,它打破了我的應用程序,其中至少與必應API那裏有認爲現有應用的更多的兼容性問題。不是說我不喜歡Google地圖。它給我一個備份服務..

我產生來自供應商的地圖,Bing作爲主要,次要古爾......這意味着,如果那些沒有工作,這恰好的下線,我的用戶仍然可以使用我的應用程序。

Heres a link to Bing Maps Dev on a WIndows Phone for example

1

我想看看Cloudmade。他們有許多API,免費選項,付費選項,並使用OpenStreetMap,在許多地方它是最精確的地圖繪製解決方案之一。

5

一開始(你說你需要實時顯示GPS位置)我認爲Google Maps是不錯的選擇。這個解決方案有非常簡單的API和社區支持,這裏也是一個優勢(我從來沒有和別的東西比較過,但我對GMaps及其教程/資源有很好的體驗)。這對於客戶端來說,對於服務器端來說,任何Web框架都應該做這項工作(我使用Django並且它也支持一些地理事物 - 稍後在這個答案中提到)。

你可能需要構建的應用程序,遵循以下規則:

  1. 您的GPS設備將數據發送到服務器(Web應用程序)週期性,數據存儲在一個數據庫。
  2. 用戶使用瀏覽器在地圖上顯示數據(例如Google Map),該地圖在某個計劃時間間隔(例如,ajax調用服務器以獲取最新位置)上更新位置。每次接收地圖都需要更新。

我不知道這個案例是否有更多專門的解決方案。

如果您需要改進應用程序並添加一些功能,您需要考慮一些更復雜的地理框架。我聽說GeoDjango有一些積極的意見,主要是因爲它可以很容易地與Django(這是非常容易學習的Web框架,它有很多功能)合併。

我在這裏提到的所有技術都是免費的。

0

雖然其仍處於草稿形式,HTML5將支持Geolocation API。大多數主流瀏覽器和手持設備應該在不久的將來支持它,並且對於希望獨立於服務的解決方案的開發人員來說,應該讓生活變得更容易。但是,如果您需要顯示位置,您仍然需要Google地圖等地圖服務。

function showMap(position) { 
    // Show a map centered at (position.coords.latitude, position.coords.longitude) 
} 

// One-shot position request. 
navigator.geolocation.getCurrentPosition(showMap); 

編輯:

它已經支持在幾個主要的瀏覽器:

  • Mozilla Firefox瀏覽器:在Firefox 3.5 和更高版本支持。
  • 瀏覽器:支持直通谷歌齒輪 地理位置API
  • 歌劇:支持在 每晚構建
  • Safari瀏覽器:支持是 在IPhone的Safari瀏覽器 即將推出。
  • Internet Explorer: 實驗性支持可從 IE8。