小叶地图不会在模态上重新加载新坐标

时间:2019-02-15 02:52:41

标签: javascript ajax leaflet

我创建了一个应用程序,该应用程序将在表中显示一些数据,该表中有一个按钮,用于使用modal_bootstrap在该行上显示数据的详细信息。 下图显示了表格视图,每行中都有模式按钮: enter image description here 以下是modal_bootstrap视图的图片: enter image description here 在modal_bootstrap上,我在选项卡中显示地图

问题是每次我关闭模态并尝试对其他数据打开模态时,modal_bootstrap上的传单地图仍显示先前的地图,该地图应根据打开的数据行调出地图坐标

这是我查看的代码

    <script type="text/javascript">
        var lat;
        var lon;
        var base_url = '<?php echo base_url();?>';

        $(document).ready(function() {
            $('#rj-table').DataTable({
                "ajax": {
                    url : "<?php echo site_url("main/rj_page") ?>",
                    type : 'GET'
                },
            });
        });

function view_detail(id){
        //Ajax Load data from ajax
        $.ajax({
            url : "<?php echo site_url('main/ajax_view')?>/" + id,
            type: "GET",
            dataType: "JSON",
            success: function(data){
                $('#modal_form').modal('show'); // show bootstrap modal when complete loaded
                show_tab();
                lat = data.latitude;
                lon = data.longitude;
                $('#idrj').html(data.idrumahjaga);
                $('#di').html(data.namaDI);
                $('#jupeng').html(data.namaJP);
                $('#nmrj').html(data.namarumahjaga);
                //$('#petugas').html(lng);
                $('#kec').html(data.kecamatan);
                $('#des').html(data.desa);
                $('#dus').html(data.dusun);
                $('#thp').html(data.tahunpembuatan);
                $('#thr').html(data.th_akhir_renov);

                $('#photo-preview').show(); // show photo preview modal
                if(data.photo){
                    $('#label-photo').text('Change Photo'); // label photo upload
                    $('#tes').html('<img src="'+base_url+'assets/img/'+data.photo+'" class="img-responsive">'); // show photo
                }
                else{
                    $('#label-photo').text('Upload Photo'); // label photo upload
                    $('#photo-preview div').text('(No photo)');
                }
                show_map(lat, lon);
            },
            error: function (jqXHR, textStatus, errorThrown){
                alert('Error get data from ajax');
            }
        });
    }
    function show_map(lat, lon){
        //---map------
        var mymap = new L.map('mapid');
        $('#myTab').on('shown.bs.tab', function (e){
            mymap.invalidateSize();
        });
        mymap.setView([lat, lon], 13);
        L.tileLayer('https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token=pk.eyJ1IjoicmlndW4iLCJhIjoiY2pydzY4ZjYxMDhwZzQ0bTFnbXdldGE2NyJ9.5GY9VdDlGJwr1FUWveAqpA', {
            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([lat, lon]).addTo(mymap);
        var popup = L.popup();
        function onMapClick(e) {
            popup
            .setLatLng(e.latlng)
            .setContent("You clicked the map at " + e.latlng.toString())
            .openOn(mymap);
        }
        mymap.on('click', onMapClick);
        //---------script map--------
    }
    //---- tab on modal----
    function show_tab(){
        $('#myTab a').click(function (e) {
            e.preventDefault();
            $(this).tab('show');
        });
        $(function () {
            $('#myTab a:first').tab('show');
        });
    }
    //---- end tab on modal----
</script>

1 个答案:

答案 0 :(得分:0)

我得到了答案here

解决方案是:

Spell

以及ajax成功函数:

<div id="pre_map"></div>