簡體   English   中英

谷歌地圖V3未加載(問及答案)

[英]Google Maps V3 not loading (Asked & Answered)

這個問題已經回答了。 我發現了問題所在。 但是,我在這里發布問答,因為其他人可能處於同樣的困境。

我的谷歌地圖代碼來自我在網上找到的樣本。

在“壞”代碼中有一行看起來像這樣:

var latlng= new google.maps.LatLng(results[0].geometry.location.Ua, results[0].geometry.location.Va);

這段代碼一直工作到昨晚。 使用firebug檢查對象,結果表明位置現在的形式為:{Ta:number,Ua:number}

我的立即解決方法是在需要lat和/或lng時使用lat()和lng()方法。

另一個解決方案是以更智能的方式實例化我的地圖。

是的,愚蠢地依賴於使用螢火蟲檢查員在物體深處發現的屬性。 是的,作為一個谷歌地圖菜鳥和依靠復制粘貼很少或沒有知識獲得了它的正義獎勵。

但是,做一個快速谷歌搜索發現許多人(除了我借來的“樣本”)也直接使用.Va屬性。

因此這里的帖子以防這也是他們的問題。

如果您對發生這種情況的原因感興趣,那很簡單:示例使用的是API的未記錄內部,因此當Google更新Maps JS文件時,它就崩潰了。

更具體地說, UaVa是由縮小產生的自動生成的變量名。 看起來谷歌刪除了原始來源中的變量,標簽向上移動( UaVaTaUa )。

我敢打賭,我確切地知道壞樣本的作者如何提出他的代碼。 他在瀏覽器的開發工具中檢查了一個LatLng (在你的例子中location對象的類型),看到那兩個奇怪命名的變量包含他想要的數據,並且隨之而來。 由於latlng方法在LatLngprototype中“隱藏”,他沒有注意到它們。

這里有兩個教訓:

  1. 始終使用文檔化的API方法 ; 其他任何事情都是一個可能會發生變化的實施細節。
  2. 不要相信某個家伙的網站上的代碼是一個很好的甚至是如何做事的能力的例子。 對於谷歌地圖來說尤其如此,那里有大量的文檔和官方示例。

暫無
暫無

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

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