2012-03-06 246 views
1

我正在開發一個Web應用程序,其中我有數據庫後端與地理定位對象,並且每個都有它的地理數據存儲在一個kml文件。當在谷歌地圖上顯示對象時,通過谷歌地圖js api v3,我有以下情形: 首先我做了一個json調用,並返回對象數組。每個json對象都有它的地理位置,可以是gmap標記或路由/折線。每個對象都有屬性:id,name,description,kml_url等。Kml_url是kml文件的url,用於通過「new google.maps.KmlLayer(...)」調用在地圖上繪製對象。每個創建的kmlLayer都綁定到它的json對象,因此可以通過js對該對象進行操作(例如顯示/隱藏)。然後,每個kmlLayer用「google.maps.event.addListener(...)」得到它的鼠標點擊事件監聽器,並且該響應是從kml的json對象屬性動態生成的(它抓取id屬性並通過另一個json調用它顯示對象的細節)。谷歌地圖API - 顯示路線/多段線,kmlLayer替代

問題是,當我們假設創建10 kml圖層時,我遇到了「NetworkError:414 Request-URI太大」的問題。我發現我可以通過使用kml網絡鏈接來擺脫錯誤,但AFAIK,在這種情況下,我放棄了通過它的json對象(創建有界kmlLayer)操縱每個對象的能力。

這種類型的應用程序有什麼替代方案,可能根本不使用kml-s? 如果我去使用疊加層,並且自己繪製所有的路由和標記,恐怕我最終會遇到可伸縮性問題,因爲繪製15條路徑,每條路徑有50個多段線節點,以及另外15個標記,會佔用大量的時間在客戶端。

謝謝 埃米爾

回答

1

我已經與GeoXML3處理大量的KML文件,每個文件與許多元素(包括地標,折線和多邊形)大獲成功。我建議你獲得polys branch,這篇文章最具特色。在KMZ branch目前正在進行大量的努力,將處理KMZ(壓縮)文件,但我認爲這還沒有完全準備好生產。

對於我自己的edificaiton,我創建了一個使用Google API v3和Geoxml3的Github project,並顯示了一個側欄和圖層控件。它還使用了一些更高級的功能,如afterParse鉤子和一個額外的我使用triggers a parsed event on the Geoxml3 object

+0

謝謝你!我只是測試GeoXML3,它工作得很好。我測試了一些65 kml的文件,客戶端繪圖和渲染是即時的。大圖書館! – egremyl 2012-03-06 21:02:26