【问题标题】:Remove kml layer dynamically on jquery map plugin在 jquery 地图插件上动态删除 kml 层
【发布时间】:2014-02-17 16:51:29
【问题描述】:

我的应用程序中有一个使用 jquery 地图插件操作的 Google 地图,我已将 kml 图层与:

$('#map_canvas').gmap('loadKML', 'kmlFile', 'http://www.mydomain.com/kmlfiles.kml');

我需要使用复选框控件设置可见和不可见,有什么方法可以使用 jquery 地图插件将可见 false 设置为 kml 图层?

最好的

jquery地图插件参考点击here

这是我的代码

如果(m.checked){ $('#map_canvas').gmap('loadKML', 'railAccess', 'http://www.mydomain.org/propertiesch/js/kmlFile.kml'); }别的{ $('#map_canvas').gmap('get','overlays>kmlFile').setMap(null); }

【问题讨论】:

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


    【解决方案1】:

    欢迎来到另一个记录不良的地图库。

    叠加层存储在overlays-property中:

    必须是:

    $('#map_canvas').gmap('get','overlays>kmlFile').setMap(null);
    

    【讨论】:

    • 谢谢Molle,这个解决方案工作正常,但只是第一次,如果我第二次点击复选框加载kml文件两次没有清除覆盖kml
    • 我一直在包含问题的代码,第一次工作正常,但第二次只再次拍摄了kml,但下次点击时没有删除
    • 这是由 loadKML 的不利实现所强制的。当您将地图设置为 null 时,它不会删除 railAccess 属性。当您使用相同的 uniqueIdentifier(railAccess) 再次调用 loadKML 并且该属性已存在时,它会返回该属性。但是,当它检索属性时,它会创建一个新的 KMLLayer 实例(不应该发生的事情),它无法以任何方式访问。
    • 一种可能的解决方案: 将地图设置为 null 后删除该属性:delete $('#map_canvas').gmap('get','overlays').railAccess; 更好的解决方案: 检查 railAccess 是否已经存在,并且当它只设置KMLLayer的map-option时。
    • 很好的解决方案,谢谢 Dr.Molle 我已将 $('#map_canvas').gmap('get','overlays').railAccess 设置为 null 并且工作正常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-28
    • 2021-09-13
    • 1970-01-01
    • 2016-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多