如何将php中的数据传输到javascript with while循环[复制]

我该如何使用多个标记?此代码仅显示一个标记。


我知道我需要使用循环但是如何?


此代码将标记与数据库中的信息放在Google地图上


我的问题是,一旦你将标记放在屏幕上,数据库中的其他标记就不会出现。


<?php

$connectmaps=$db->prepare("select title,longt,latit,description from pages where onmap = 1");

$connectmaps->execute();

$loadmaps=$connectmaps->fetch(PDO::FETCH_ASSOC);


$loadmap_json = json_encode($loadmaps);

?>


<script>

jQuery(function ($) {

        // Google Maps

        var script = document.createElement('script');

        script.src = "http://maps.googleapis.com/maps/api/js?sensor=false&callback=initialize&key=MY_GOOGLE_MAPS_API_KEY";

        document.body.appendChild(script);

    });

    function initialize() {

        var map;

        var bounds = new google.maps.LatLngBounds();

        var mapOptions = {

            mapTypeId: 'roadmap'

        };

        // Sayfada Haritayı Göster

        map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);

        map.setTilt(45);



        // Multiple Markers

        var phpden = <?php echo $loadmap_json; ?>;

        var longt= parseFloat(phpden.longt)

        var title= phpden.title

        var description = phpden.description

        var boylam = parseFloat(phpden.latit)


        var markers = [ 

            [title, longt, latit],

        ];

        // İnfo Windows

        var infoWindowContent = [

            ['<div class="info_content">' + '<h3>' + title+ '</h3>' + '<p>' + description + '</p>' + '</div>' + ''],

        ];



        // Show multiple markers

        var infoWindow = new google.maps.InfoWindow(), marker, i;

        // İşaretçi Dizisini Döngüye Sok ve Harita Üzerine Yerleştir

        for (i = 0; i < markers.length; i++) {

            var position = new google.maps.LatLng(markers[i][1], markers[i][2]);

            bounds.extend(position);

            marker = new google.maps.Marker({

                position: position,

                map: map,

                title: markers[i][0]

            });





开心每一天1111
浏览 396回答 2
2回答

子衿沉夜

该行$loadmaps=$connectmaps->fetch(PDO::FETCH_ASSOC);本身只会获取结果集的第一条记录,因此,您可能需要遍历结果集并将每个结果附加到数组,例如$mapMarkers&nbsp;=&nbsp;[];while($marker=$connectmaps->fetch(PDO::FETCH_ASSOC)){&nbsp; &nbsp;&nbsp;&nbsp;array_push($mapMarkers,&nbsp;$marker);}$loadmap_json&nbsp;=&nbsp;json_encode($mapMarkers);您还需要修改您的javascript以期望一组标记,因为您当前的代码需要一个结果。您还应该预料到没有结果的可能性(空JSON数组)。for(var&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;phpden.length();&nbsp;i++)&nbsp;{ &nbsp;//Do&nbsp;you&nbsp;process&nbsp;of&nbsp;each&nbsp;marker&nbsp;here...&nbsp;e.g.&nbsp;phpden[i].longt &nbsp;//Or&nbsp;better...&nbsp;create&nbsp;a&nbsp;function&nbsp;that&nbsp;you&nbsp;call&nbsp;for&nbsp;each&nbsp;marker&nbsp;to&nbsp;add&nbsp;them}只是最后的建议,但如上所述,您应该考虑使用更具描述性的变量名称。如果你在团队中工作,不仅仅是为了别人,而是为了你自己。缩写和不相关的命名变量使您的代码更难理解。当你的复杂性增加后再回来时,你或其他人会浪费时间去弄清楚什么是“phpden”和“boylam”。

小唯快跑啊

该fetch()方法仅获取第一条记录。相反,使用该fetchAll()方法。这将为您提供集合中每条记录的多维数组。另请注意,如果您没有将任何变量传递到查询中,PDO确实有一个query()方法; 无需准备和执行。<?php$connectmaps = $db->query(&nbsp; &nbsp; "SELECT title, longt, latit, description FROM pages WHERE onmap = 1");$loadmaps = $connectmaps->fetchAll(\PDO::FETCH_ASSOC);$loadmaps_json = json_encode($loadmaps);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript