2013-06-26 2 views
2

Я создаю базовое приложение для поиска автомобилей, которое возвращает результаты от ряда поставщиков, и показывает местоположения этих поставщиков через карту листов. На данный момент я просматриваю результаты и добавляю маркер местоположения в группу слоев для каждого результата.Как избежать добавления повторяющихся маркеров в группу слоев в листовке

Однако каждый поставщик возвращает ряд результатов (разные типы автомобилей, которые они предлагают и т. Д.), И я пытаюсь выяснить, как добавить один маркер для каждого провайдера. Я предполагаю, что, возможно, мне нужно каким-то образом использовать «hasLayer», я просто не уверен, как ...

+1

'HasLayer' работает только в том случае, если вы сравниваете один и тот же объект. Он не будет работать, если у вас есть два отдельных объекта, которые содержат одни и те же данные. Вам нужно будет написать какой-то пользовательский код сравнения, прежде чем добавлять новый слой - тот, который проверяет эти «дублирующие» автомобили - перед добавлением нового слоя в группу. –

ответ

4

Листовка проверяет, есть ли у вас уже тот же маркер на карте.

Вам необходимо запомнить все, что вы добавили и проверить, прежде чем добавлять его.

var added = []; 

function addShop(shop){ 

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

} 
+1

Perfect. Единственное, что нет array.contains изначально. Таким образом, вы можете использовать jQuery.inArray() (http://stackoverflow.com/a/1473742/3041394 или) или запрограммировать его самим – schlenger