2012-03-06 244 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