Как я могу настроить таргетинг на индекс в этом массиве?

Я пытаюсь добавить на свою карту функции переименования и удаления, но до сих пор мне не удалось настроить таргетинг на одно значение в массиве маркеров. Я пробовал использовать markers.indexOf (marker), как показано ниже:

L.DomEvent.on(deleteBtn, 'click', function(ev) {
        var index =  markers.indexOf(marker);
          console.info(marker.indexOf(index));
           console.info('Delete button clicked!');
        }, this);
        });

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

 // Creates the custom markers added by the user and stores them to localStorage
    var markers = [];
    var customLayer = new L.layerGroup();
    myMap.on('contextmenu', function(e) {
          var marker = L.marker(e.latlng,
          {icon : flagIcon}).addTo(customLayer).addTo(myMap);
          marker.bindTooltip("<b>Custom</b>", {permanent: true, offset: [0, 0],direction: "bottom"});
          customLayer.addTo(myMap);
          markers.push({ coords: e.latlng, name: "<b>Custom</b>" });

          marker.on('click', function(e) {

            renameDeleteChoice(e);
            L.DomEvent.on(renameBtn, 'click', function(ev) {

                console.info('Rename button clicked!');
            }, this);

            L.DomEvent.on(deleteBtn, 'click', function(ev) {
           // I have been trying code here
               console.info('Delete button clicked!');
            }, this);
            });

    // Save marker Coords to localStorage

          markers.forEach(function() {
            window.localStorage.setItem('customData', JSON.stringify(markers));

       });
    });

Я просто неправильно это настроил? Должен ли мой массив, в который я помещаю новые значения, иметь такое поведение? Вот документация к листовке на случай, если она кому-то понадобится. Буду рад ответить на любые вопросы для уточнения.

https://leafletjs.com/reference-1.3.4.html

Заранее благодарим за любые рекомендации, которые вы предоставляете.

Фактически вы не добавляете переменную marker в массив markers, вы добавляете в настраиваемый объект { coords: e.latlng, name: "<b>Custom</b>" }

Heather Roberts 04.10.2018 06:58

Да, в конце концов я понял это. Как мне найти индекс события клика? Спасибо что нашли время ответить.

Decipher Me Please 04.10.2018 20:06
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
419
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете добавить уникальный идентификатор к переменной-маркеру, на которую также есть ссылка в настраиваемом объекте, а затем найти элемент на основе этого. Если значение latlng уникально, вы можете сделать что-то вроде:

myMap.on('contextmenu', function(e) {
    var marker = ...;
    marker.id = e.latlng; 
    markers.push({ coords: e.latlng, name: "<b>Custom</b>" });

    marker.on('click', function(e) {
        L.DomEvent.on(deleteBtn, 'click', function(ev) {
            var markerId = marker.id;
            var markerItem = markers.find(function(m) {
                return m.coords === markerId;
            });
            // update markerItem in some way
            // alternatively, use findIndex if you really just want the index
        }, this);
    });
 });

Эй, спасибо за ответ. В итоге я использовал index Of, но похоже, что это тоже сработает. Я ценю поддержку.

Decipher Me Please 06.10.2018 04:45

Другие вопросы по теме