0

我正在尝试从 db mysql 显示标记。没有显示数据。

http://www.nexusmultimedia.it/gis7.html

    <script>
    var cloudmadeUrl = 'http://{s}.tile.cloudmade.com/BC9A493B41014CAABB98F0471D759707/997/256/{z}/{x}/{y}.png',
        cloudmadeAttribution = 'Map data &copy; 2011 OpenStreetMap contributors, Imagery &copy; 2011 CloudMade, Points &copy 2012 LINZ',
        cloudmade = L.tileLayer(cloudmadeUrl, {maxZoom: 17, attribution: cloudmadeAttribution}),
        latlng = L.latLng(45.4404,12.3768);

    var map = L.map('map', {center: latlng, zoom: 11, layers: [cloudmade]});

    var markers = L.markerClusterGroup(); 

    function getUsers() { 
    $.getJSON("get_info.php", function (data) { 

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

        var location = new L.LatLng(data[i].lat, data[i].lng); 

        // var 
        var name = data[i].nome; 

        var marker = new L.Marker(location); 
        marker.bindPopup("<div style='text-align: center; margin- left: auto; margin-right: auto;'>"+ name +"</div>", 
        {
        maxWidth: '400'
        }); 
        users.addLayer(marker); 
      } 
    })
    };

</script>

从 www.nexusmultimedia.it/get_info.php 我可以看到:

[{"cf_id":"1","nome":"Cofano","lat":"45.475281","lng":"12.26436"}]

浏览器 chrome 没有错误,但没有显示标记。任何想法?

谢谢

尼古拉

4

1 回答 1

0

似乎有两个问题。首先,来自服务器的响应似乎是无效的,因为它没有被发送回正确的标头(应用程序/JSON)。我看到的响应只是您的 PHP 文件的内容:

<?php
$db = new PDO('mysql:host=62.149.150.181;dbname=##your db name omitted##', '##omitted##', '##omitted##');
$sql = "SELECT cf_id, nome, lat, lng FROM form_data_MIT;";

$rs = $db->query($sql);
if (!$rs) {
    echo "SQL error\n";
    exit;
}

$rows = array();
while($r = $rs->fetch(PDO::FETCH_ASSOC)) {
    $rows[] = $r;
}

print json_encode($rows);
$db = NULL;

?>

其次,您不会在控制台中收到任何错误,因为您将标记添加到不存在的图层 - users。我认为您打算将每个标记添加到 layer markers

希望有帮助!

于 2013-09-18T00:54:12.033 回答