动态加载谷歌地图上的KML位置标记



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

如果没有Google的查询限制(当它上线时,每天可能会有数十万到数百万的查询),这将是一件事。KML文件的限制是足够的,然而(我相信这只是文件大小被计算,我错了吗?),我只是将。csv类型的文件转换为。KML文件,如果不是因为我不希望所有4000+地址每次都加载在地图上,只有那些对应于搜索查询。

必须有一种从单个。kml文件中选择性加载某些位置标记的方法,对吗?如果可能的话,我希望不需要使用服务器端方法(ASP.Net),但如果绝对必要的话,我将使用。

~ ~ ~ ~ ~

我想我会使用服务器端方法。我仍然想使用kml,因为我正在尝试纯JavaScript的查询限制(尽管我可能已经做了一些错误的事情,因为那是当我刚刚学习如何使用谷歌地图API)。kml由场馆及其相关位置组成,人们可能需要购买门票。搜索词可能是"邪恶的纽约"或"音乐会FL"。数据库将返回场地id,它与kml文件中的placemark id相关。我想做的是使用由搜索查询返回的场地id数组,然后扫描kml文件,只返回那些与数组中的场地id匹配的placemark id。然后我想有kml的位置标记被加载到同一页面上的div标签,然后有这是什么谷歌用来把指针放在地图上。是否有一种方法使用#命名锚而不是完整的URL加载kml到谷歌地图(var kmlVar = new google.maps.KmlLayer('#kmlDivTagOnSamePage'); 这不起作用)?这样就很容易编写服务器端ASP部分了。

如果您只是使用2D地图,则可能不需要使用KML。因为你不需要一次显示所有4k的位置,你可能不需要使用谷歌的服务器端渲染(你可以在javascript中渲染标记),所以尽管Fusion Tables可以工作,我还是推荐以下替代方案之一:-加载所有的数据作为一个JSON字典与id作为你的关键,当搜索是运行,找到匹配,只是显示那些-最初不要在客户端加载任何东西:只查询你的服务器,并让它返回你需要显示的所有数据为每个搜索

如果这些建议似乎没有意义,也许试着提供别人可能会问的查询的确切类型,以及您期望从数据库得到的响应类型,您是否控制该数据库,等等。

最新更新