2013-03-08 34 views
2

是否有JavaScript庫可以幫助解析由用戶提供的各種格式的座標?用戶提供的座標的通用JavaScript解析器

我有一個地圖網站,可以用來搜索地名,但通過統計查看我看到很多人試圖直接使用各種格式的座標,很像他們能夠在Google地圖上做。

緯度和經度我看到的典型的變化是:

-43 02 42.845 S 172 38 33.790 E 
n 19°49'2.30e 41°51'29.20 
41°46'57.90"S 
172° 1'20.39"E 43 02 42.845 S 
42.897S 172.720E 
42.31.303 172.23.379 
19.817306°, 41.858111° 

這是一個很大的變化,這只是一個示例。然後有用戶嘗試基於NZTM和NZMG的各種新西蘭格式。

理想情況下,我想找一個圖書館,某人可能已經開始了一些基本的緯度和經度,然後擴展功能以支持其他格式,我看到通過。

任何人都知道任何東西已經在那裏?

+0

您是否在屏幕上顯示「請輸入緯度和經度,格式爲+/- ddd mm ss.s」或單獨的緯度和經度字段?否則,你會有非常複雜的邏輯來解決混亂。最後兩個是完全不明確的,儘管你可能會猜測第一個數字是緯度,因爲這是慣例。 – RobG 2013-03-08 02:30:14

+0

我沒有提供所需的緯度格式。事實上,功能從來就不是爲此而設計的 - 我只是對一些用戶試圖使用功能(可能來自他們對Google Maps的體驗)做出反應。我實際上希望儘可能靈活,允許支持儘可能多的格式。我想我可以想出一些通用搜索提供程序庫,它使用正則表達式來查看格式是否符合該特定提供程序的標準。應該很容易地擴展和增加對格式的支持,而不會變得太複雜。 – Gavin 2013-03-08 03:30:27

回答

0

的一般形式應該是:

var m; 
if(m = input.match(/format regex here/)) { /* do stuff with m */ } 
else if(m = input.match(/another format/)) { /* do stuff with m */ } 
... 
else {throw new Error("Format not recognised!");} 

這將是由你來打造你所需要的正則表達式,但他們應該不會太難,因爲他們是比較簡單的格式。

+0

我正在考慮更通用的東西,我可以根據需要插入更多格式解析器,但基本上你已經接受了正確的想法。我認爲我的問題是之前可能已經解決的問題,那麼爲什麼重新發明輪子,如果有一個庫/解決方案已經在那裏,可能處理比我迄今爲止所遇到的更多格式,我可以繼續。 – Gavin 2013-03-08 03:33:32

1

我剛剛發佈了一個名爲Magellan的JavaScript庫,它處理上面列出的緯度/經度座標的格式和驗證。看看它是否是你要找的東西。

鏈接在這裏:http://dbarbalato.github.com/magellan/

作爲一個快速的注意,它不會處理你上面列出的每個格式,但我願意擴展功能,如果有足夠的興趣。

+0

嗨戴夫,看起來很有希望!我可能不得不進行遊戲,看看我是否可以重新考慮它,以允許格式插入。感謝分享!我會讓你知道我如何繼續。 – Gavin 2013-03-12 06:53:19