在Google地图上动态加载KML地标

时间:2011-11-10 21:36:56

标签: asp.net google-maps kml

我有一个静态的.csv类型文件,其中列出了4000多个地址,每个地址都有一个唯一的ID,以及它们相关的纬度和经度。我想查询一个数据库,该数据库包含为每个场地ID存储的事件,然后在Google地图上显示只有那些具有与查询匹配的事件的地址。

如果不是谷歌的查询限制(当它上线时,每天可能有数十万到数百万的查询),这将是一回事。 KML文件的限制是足够的(但我相信它只是计算文件大小,我错了?)我只是将.csv类型文件转换为.kml文件,如果不是因为我不知道我不希望每次都在地图上加载所有4000多个地址,只有那些与搜索查询相对应的地址。

必须有一种方法可以从单个.kml文件中有选择地加载某些地标,对吧?如果可能的话,我不想使用服务器端方法(ASP.Net),但如果绝对必要的话,我会这样做。

~~~~~

我想我会使用服务器端方法。我仍然想使用kml,因为我遇到了尝试纯JavaScript的查询限制(虽然我可能做错了然后就像我刚刚学习如何使用Google maps API一样)。 kml由场地及其相关位置组成,可能需要购买门票。搜索词可能是“邪恶的纽约”或“音乐会FL”。数据库将返回场地ID,其与kml文件中的地标ID相关。我想要做的是使用由搜索查询返回的场地ID数组,然后扫描kml文件并仅返回与数组中的场地ID匹配的那些地标ID。然后我想将kml地标加载到同一页面上的div标签中,然后将其用于将指针放在地图上。有没有办法使用#name anchors而不是完整的URL来将kml加载到Google地图中(var kmlVar = new google.maps.KmlLayer('#kmlDivTagOnSamePage'); 这不起作用)?这样就很容易编写服务器端ASP部分。

1 个答案:

答案 0 :(得分:0)

如果您只是使用2D地图,则可能不需要使用KML。而且由于您不需要同时显示所有4k位置,您可能不需要使用Google的服务器端渲染(您只需在javascript中渲染标记),因此尽管Fusion Tables可以工作,但我建议使用这些替代方案:    - 将所有数据作为JSON字典加载,并将id作为关键字,并在运行搜索时找到匹配项并只显示这些数据    - 最初不要在客户端上加载任何内容:只需查询服务器并让它返回每次搜索所需的所有数据

如果这些建议似乎没有意义,或许尝试提供某人可能会问的确切类型的查询,以及您希望从数据库中获得什么类型的响应,是否控制该数据库等等。