谷歌地图API - 显示路线/折线,kmlLayer替代

时间:2012-03-06 13:17:52

标签: google-maps google-maps-api-3 kml

我正在开发一个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调用它显示对象的详情)。

问题是,当超过让我们说10 kml层被创建时,我点击了“NetworkError:414 Request-URI Too Large”。我发现我可以通过以下方式解决错误使用kml网络链接,但是AFAIK,在这种情况下,我失去了通过它的json对象操纵每个对象的能力(创建了有界的kmlLayer)。

这种应用的替代方案是什么,可能根本不使用kml-s? 如果我去使用叠加层,并自己绘制所有路径和标记,我恐怕最终会出现可扩展性问题,因为绘制15条路线,每条路线有50条折线节点,另外还有15条标记,需要花费大量时间客户。

谢谢你, 埃米尔

1 个答案:

答案 0 :(得分:1)

我在GeoXML3处理大量KML文件方面取得了巨大成功,每个文件都包含许多元素(包括地标,折线和多边形)。我建议您获取polys branch,这篇帖子的功能最多。 KMZ branch目前正在努力处理KMZ(压缩)文件,但在我看来,这还没有为生产做好准备。

对于我自己的编辑,我创建了一个Github project,它使用Google API v3,Geoxml3,并显示侧边栏和图层控件。它还使用了一些更高级的功能,例如afterParse钩子和我使用triggers a parsed event on the Geoxml3 object的附加功能。