Проблемы с маркером листовки и событием onclick - PullRequest
0 голосов
/ 18 октября 2019

Я использую PHP 7, буклет 1.5.1, и я собираюсь вызвать AJAX при нажатии маркера для отображения содержимого в другом DIV, чем на карте.

Проблема заключается в том, что функция выполняетне дожидается «щелчка» и автоматически активируется при загрузке страницы и показывает в DIV, что она прослушивает параметр последнего маркера.

А потом, когда я нажимаю на маркер, ничего не происходит, конечно,

Идеи?

СКРИПТ

<script src='https://code.jquery.com/jquery-3.4.1.js' integrity='sha256-WpOohJOqMqqyKL9FccASB9O0KwACQJpFTUBLTYOVvVU=' crossorigin='anonymous'></script>
    <script>
     function mostrar2(id){
     var parametro = {id : id};
     $.ajax({
       data: parametro,
       url: 'elphp.php',
       type: 'post',
       beforeSend: function(){$("#panel").html("Thinking...");},
       success: function(response){$("#panel").html(response)}
       });        
     }
    </script>

DIV THAT LISTENS

<div class="col-lg-3" id="panel">

MAP DIV

<div class="col-lg-9 map" id="map" style="width: 400px; height: 400px;">
 <script>
  var mymap = L.map('map').setView([51.505, -0.09], 13);
  L.tileLayer('https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token=pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4NXVycTA2emYycXBndHRqcmZ3N3gifQ.rJcFIG214AriISLbB6B5aw', {
     maxZoom: 18,
     attribution: 'Map data &copy; <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors, ' +
                '<a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, ' +
                'Imagery © <a href="https://www.mapbox.com/">Mapbox</a>',
     id: 'mapbox.streets'
}).addTo(mymap);

L.marker([51.5, -0.09]).addTo(mymap).on('click', mostrar2(15741));
L.marker([51.5, -0.99]).addTo(mymap).on('click', mostrar2('11'));

</script>
</div>

И PHP

<?php
    $trajo = $_POST['id'];
    echo "YOU SENT : " . $trajo;
?>

Вот как это выглядит

1 Ответ

0 голосов
/ 18 октября 2019

Друг решил это с помощью этого простого изменения.

Проблема: mostrar2 Функция была выполнена сразу же, и поскольку mostrar2 ничего не возвращает ( undefined неявно), никаких обработчиков событий щелчка, когда-либо зарегистрированных на маркерах

Оборачивая вызовы в mostrar2 с предопределенным id внутри анонимной функции и передавая эту функцию в качестве обработчика события щелчка для каждого маркера, mostrar2 вызовы теперь происходят только тогда, когда события щелчказапускаются на маркерах и с соответствующим идентификатором.

L.marker([51.5, -0.39]).addTo(mymap)
   .on('click', function () {
       mostrar2('15');
   }
);
...