簡體   English   中英

Javascript 查找從谷歌地圖獲取緯度和經度

[英]Javascript to find get latitude and longitude from Google Maps

我試圖從 API 調用中提取緯度/經度到谷歌地圖。 我正在使用的代碼如下:

var text gMaps = "https://maps.googleapis.com/maps/api/geocode/xml?address=" & URLEncode(SearchAndReplace([Related Staff - Address]," ","+")) & "&key=xxxxxxxxxxxxxxxxxxxx";

var text lat = URLRoot() & "db/" & Dbid() & "?act=API_EditRecord" & "&rid=" & [Record ID#] & "&apptoken=xxxxxxxxxxxxx" & "&_fid_113=";    

    "javascript: {" &
   
         "$.get('" & $gMaps & "',function(data,success) {" &
            "console.log(data);" &
            "var geo = data.getElementsByTagName('geometry')[0].getAttribute('lat');"  &
            "console.log(geo);" & 
            "$.get('" & $lat & "'+geo);" &
            "window.location.reload();" &
        "});" &
"}"

這是 Quickbase 中用於將信息放入 2 個字段的按鈕。 上面的例子現在只處理緯度。 這段代碼給了我一個 null 結果,我熟悉 javascript,但仍然需要大量學習。

這是我從中提取的 xml 響應。

XML

感謝您提供的任何幫助。

達納

您可以使用 Javascript 的DOMParserXPath功能從 XML 字符串中提取latlng

let xmlString = `
    <GeocodeResponse>
     <status>OK</status>
     <result>
      <type>sample</type>
      <name>Sample XML</name>
      <location>
       <lat>37.4217550</lat>
       <lng>-122.0846330</lng>
      </location>
     </result>
     <result>
      <message>The secret message</message>
     </result>
    </GeocodeResponse>
`

var parser = new DOMParser();
var xmlDoc = parser.parseFromString(xmlString, "text/xml"); //important to use "text/xml"

var nsResolver = xmlDoc.createNSResolver( xmlDoc.ownerDocument == null ? xmlDoc.documentElement : xmlDoc.ownerDocument.documentElement);

var lat = xmlDoc.evaluate('//lat', xmlDoc, nsResolver, XPathResult.STRING_TYPE, null ).stringValue;
var lng = xmlDoc.evaluate('//lng', xmlDoc, nsResolver, XPathResult.STRING_TYPE, null ).stringValue;

console.log(lat, lng) // 37.4217550 -122.0846330

另請參閱在 Google 地圖上使用 JavaScript 和 plot 解析 XML 文件

看起來您並沒有完成您的 lat 查詢字符串變量。 您的變量最終是 "yourdomain.quickbase.com/db/yourdbid?act=API_EditRecord&apptoken=&rid=&_fid_113=" 因此 fid 113 從未真正分配過值。 即使您在下面運行 JavaScript,也沒有人告訴它分配給 fid 113。此外,JavaScript 注入很快將在 Quick Base 中成為過去,因此這可能是您想要的。改為放入代碼頁,這無論如何都會更容易,因為這樣您就可以使用谷歌地圖 API 提供的地理編碼器 object。

我建議在 Quick Base 中使用代碼頁而不是此解決方案的公式字段。 使用代碼頁,您可以使用 XML 解析器庫來處理響應,然后使用緯度和經度值對 Quick Base 進行下一個 API 調用。 那將是最佳做法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM