【问题标题】:Problems with leaflet marker and the 'onclick' event传单标记和“onclick”事件的问题
【发布时间】:2020-02-15 17:34:45
【问题描述】:

我正在使用 PHP 7,传单 1.5.1,我希望在单击标记以在与地图不同的 DIV 中显示内容时调用 AJAX。

问题在于该函数不等待“点击”,而是在页面加载时自动激活,并在 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

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

地图分区

<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;
?>

This is how it looks

【问题讨论】:

    标签: javascript callback onclick leaflet marker


    【解决方案1】:

    一位朋友通过这个简单的更改解决了这个问题。

    问题:mostrar2 function 被立即执行,并且因为 mostrar2 没有返回任何内容(undefined 隐式),所以没有在标记上注册的点击事件处理程序。

    通过在匿名函数中使用预定义的 id 包装对 mostrar2 的调用并将该函数作为每个标记的单击事件处理程序传递,mostrar2 调用现在仅在触发单击事件时发生在标记上并具有适当的 id。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-07
      • 1970-01-01
      • 1970-01-01
      • 2013-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多