【问题标题】:How to avoid adding duplicate markers to a Layer Group in Leaflet如何避免向 Leaflet 中的图层组添加重复标记
【发布时间】:2013-06-26 16:12:50
【问题描述】:

我正在构建一个基本的租车搜索应用程序,该应用程序返回来自多个提供商的结果,并通过传单地图显示这些提供商的位置。目前,我正在遍历结果并为每个结果添加一个位置标记到图层组。

但是,每个提供商都会返回许多结果(他们提供的不同汽车类型等等),我正在尝试找出如何为每个提供商只添加一个标记。我猜也许我需要以某种方式使用“hasLayer”,我只是不确定如何......

【问题讨论】:

  • HasLayer 仅在您比较同一对象时才有效。当您有两个包含相同数据的单独对象时,它将不起作用。在添加新层之前,您需要编写一些自定义比较代码 - 检查这些“重复”汽车的层 - 在将新层添加到组之前。

标签: leaflet


【解决方案1】:

Leaflet 仅检查您是否在地图上已有相同的标记。

您需要记住已添加的所有内容并在添加之前检查。

var added = [];

function addShop(shop){

    if(!added.contains(shop.id)) 
        var marker = magicMarkerFactory(shop);
        map.addTo(marker);
        added.push(shop.id);
    }

}

【讨论】:

  • 完美。唯一的问题是本机没有 array.contains 。因此,作为一种解决方法,您可以使用 jQuery.inArray() (stackoverflow.com/a/1473742/3041394 或)或自己编写代码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-07
  • 2018-11-12
  • 1970-01-01
  • 2021-09-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多