使用javascript在循环中显示数据

时间:2014-12-14 03:23:01

标签: javascript

我正在尝试获取标记经度和纬度并在地图上显示它们但是我没有得到任何结果,我的parser.php文件正在工作并从数据库中获取数据我只需要将其格式化为javascript有人吗?

<script type="text/javascript">
  function initialize() {
    var mapOptions = {
      center: { lat: -25.363882, lng: 131.044922},
      zoom: 14
    };

    var map = new google.maps.Map(document.getElementById('map-canvas'),
        mapOptions);

    $.getJSON('parser.php', function(items) {
        for (var i = 0; i < items.length; i++) {
            (function(item) {
                addMarker(item.lat, item.lon);
            })(items[i]);
        }
    });

    }
  google.maps.event.addDomListener(window, 'load', initialize);
</script>

parser.php输出

[{"0":"33.880561","lat":"33.880561","1":"35.542831","lon":"35.542831"},{"0":"-25.363882","lat":"131.044922","1":"35.513477","lon":"35.513477"}]

1 个答案:

答案 0 :(得分:1)

addMarker需要将map作为参数。

function addMarker(map, lat, long) {
    var latlong = google.maps.LatLng(lat, long);
    return new google.maps.Marker({
        position: latlong,
        map: map
    });
}

然后你的循环应该是:

for (var i = 0; i < items.length; i++) {
    item = items[i];
    addMarker(map, item.lat, item.lon);
}

您不需要将addMarker调用放入闭包中,因为这些调用不是单独的回调。