Napisałem niestandardowy formularz kontrolny ulotki. Jest to legenda, którą można dodać do każdej warstwy. Samo sterowanie ma przycisk zamykania, aby usunąć go z mapy (jak wyskakujące okienko). Kontrolę można dodać, klikając przycisk. Moim problemem jest to, że użytkownik może dodać tę samą kontrolę do mapy kilka razy. Potrzebuję przetestować, czy ta konkretna kontrola została już dodana do mapy, a jeśli tak, to nie dodawaj jej ponownie.Sprawdź, czy kontrola ulotek została już dodana do mapy
tworzę sterowanie dla każdej warstwy, przechodząc kilka opcji
var control = L.control.customControl(mylayer);
i dodać go do mojego mapie na przycisk kliknij
control.addTo(map);
Teraz wyobraź sterowanie posiada przycisk zamykania i może być zamknięty . Teraz, gdy użytkownik ponownie kliknie przycisk, tylko chcę dodać kontroli, jeśli nie jest już na mapie - coś takiego (hasControl jest pseudokod, istnieje AFAIK nie ma takiej funkcji)
if(!(map.hasControl(control))) {
control.addTo(map);
}
Dla uproszczenia zrobiłem przykład, w którym tworzę kontrolkę powiększenia i dodam ją dwukrotnie: here.
Dzięki użyłem 'własność _map' - działa bez zarzutu! – Krxldfx
Cokolwiek unosi Twoją łódź :) Należy jednak pamiętać, że podczas używania właściwości '_map', prefiks' _' właściwości oznacza, że jest to własność prywatna, której normalnie nie powinno się używać. Można go zmienić lub usunąć w przyszłych wersjach ulotki. Nie będziesz miał do czynienia z tym problemem z drugą metodą. Dodano to do mojej odpowiedzi, aby być kompletnym :) – iH8
Cóż, teraz przyjrzałem się drugiej wersji. Myślę, że może to być problem, jeśli mam więcej niż jedną kontrolkę customControl, czy nie? Coś jak 'var customControl1 = new L.Control.Custom (someOptions); var customControl2 = new L.Control.Custom (otherOptions); '- jeśli teraz dodaję oba i usunę pierwszy,' hasCustomControl' zwróci false. – Krxldfx