我有一個地理位置字符串爲25°9'37「N 55°13'28」E。使用JavaScript正則表達式我想從上面的字符串中提取Lat和Lng。 謝謝。從地理位置提取緯度/ Lng字符串
回答
您的第一行可能是「25°9'37」N是緯度的分鐘格式,您可能想要提取它的值並將其轉換爲十進制度表示,這可以對其進行進一步計算。 @Stormwind
根據this博客帖子,轉換公式是
//latitude formula
([LATITUDE_DEG])+([LATITUDE_MIN]/60)+([LATITUDE_SEC]/3600))*
IF [Latitude_Direction]="South" THEN -1 ELSE 1 END
//longitude
([LONGITUDE_DEG]+([LONGITUDE_MIN]/60)+([LONGITUDE_SEC]/3600))*
IF [Longitude_Direction]="West" THEN -1 ELSE 1 END
正則表達式(簡單)
//latitude
25°9'37"N
/(\w+)°(\w+)'(\w+)"(\w+)/
`25`, `9`, `37`, `N`
//regex from @PranavCBalan also works well
/(\d+)°(\d+)'(\d)+"([NEWS])/
`25`, `9`, `37`, `N`
解緯度(簡單) - 通知,該解決方案是很容易出錯,因爲它寫在5分鐘內,所以要小心
var lat_str = "25°9'37\"N"; //escaped string
lat_str = lat_str.replace('\"', '"'); //little trick
var matches = lat_str.match(/(\w+)°(\w+)'(\w+)"(\w+)/); //regexify
var lat_deg = parseInt(matches[1]); //degrees
var lat_min = parseInt(matches[2]); //minutes
var lat_sec = parseInt(matches[3]); //seconds
var lat_dir = matches[4]; //direction
var latitude = (lat_deg+(lat_min/60)+(lat_sec/3600))*(lat_dir === 'N' ? 1 : -1);
//25.160277777777775
解經度
//same as latitude (except direction check), do it as your homework
詳情參閱Converting Latitude/Longitude from Degrees/Minutes/Seconds to Decimal Degrees
這個聲明「25°9'37」N是十進制度的值 - 不是緯度,你必須將其轉換爲緯度「_is非常不穩定,當然這是一個緯度值,有幾分鐘甚至幾秒鐘,你部分回答了問題中沒有提到的問題,即如何將該經緯度分鐘對轉換成十進制度。也許這就是他最終想要的,但它不是這樣表達的,一分鐘經常是dd°mm.mm'(其中m是0 ... 59.99 - 秒不再現代),而十進制經度是dd.dddd ...°要對它進行計算,可以使用十進制度表示 – Stormwind
@Stormwind我認爲OP期望像'23.23232'這樣的常用緯度值_使用JavaScript正則表達式我想額外從上面的字符串中選擇Lat和Lng_OP想要從'25°9'37「N'得到__Lat__,所以他需要從字符串中提取degs/min/secs,然後轉換爲度數來獲得緯度,這是同意的嗎? –
可能是他想要的,所以你的解決方案是可以的。但你應該糾正你的第一句話。這當然是一個緯度,也是「通常」的一個,如果有的話,它不是十進制度數值。他們不會在海上使用十進制經緯度,請放心。您的第一行可能是「25°9'37」N是緯度的分鐘格式,您可能想要提取它的值並將其轉換爲十進制度表示,這可以對其進行進一步計算「,或者類似的。不是那麼容易讓人誤解,因爲這個現在的人在我眼中真的發紅:-)。 – Stormwind
- 1. 從Google地理定位API獲取當前經緯度和lng
- 2. 獲得塔GSM位置經緯度LNG
- 3. Android地理位置打印經緯度
- 4. 從經緯度獲取位置地址
- 5. 從谷歌地圖經緯度獲取位置地址
- 6. Geocoder無法從android中的特定字符串獲取緯度lng?
- 7. 從經緯度獲取位置名稱
- 8. 獲取當前位置經緯度和LNG在地圖上的準備
- 9. 地理位置Null經緯度爲
- 10. 不能提取地理鑰匙,經度/緯度超出範圍
- 11. 地理位置:獲取緯度和經度與距離
- 12. 正則表達式提取緯度和長從GPGGA字符串
- 13. 在JavaScript中,如何從字符串中提取經緯度
- 14. 提取緯度/龍從通過谷歌API(地理編碼)
- 15. 提高緯度/長地理位置的性能
- 16. 從鼠標位置獲取地圖緯度經度
- 17. 獲取緯度,經度從地址
- 18. 使用SAS獲取地址字符串的緯度和經度
- 19. Javascript地理位置 - 無法獲取緯度
- 20. 在iOS中獲取iBeacon的地理位置Long和緯度
- 21. 演繹緯度\ LNG座標上的兩個位置
- 22. 算法找到一個給定的緯度位置LNG
- 23. 設置地理位置的緯度和經度
- 24. Android如何從gps緯度/經度獲取位置時避免字符串中的垃圾字符
- 25. 谷歌地圖 - 地理位置加載之前傳遞經緯度/經度緯度變化
- 26. 地理位置 - 如何從長期獲得城市和緯度
- 27. 驗證地理位置緯度和經度
- 28. 地理位置(緯度/經度)到美國在java狀態
- 29. 谷歌地圖:從地理編碼的郵政編碼獲取緯度/經度
- 30. 如何將位置的緯度與字符串進行比較
'VAR RES = 「25°9'37 \」 N 55°13'28 \ 「E」 .match(/ \ d +° \ d +'\ d +「[NEWS]/g)' –
我在每個值之間看到一個空格。你可以簡單地做一個字符串拆分,並使用正確的值 –
@PranavCBalan你的建議爲我工作。非常感謝完美的解決方案。 –