2014-12-14 3 views
0

Я пытаюсь получить маркеры долготы и широты и отображать их на карте, но я не получаю никакого результата, мой файл parser.php работает и извлекает данные из базы данных Мне просто нужно отформатировать его в javascript?отображение данных в цикле с использованием 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"}] 
+0

Это поможет увидеть образец объекта JSON, возвращенный 'parser.php'. – Alfonso

+0

Не нужно ли 'addMarker' принимать' map' в качестве аргумента? – Barmar

+0

@Barmar жаль первый раз, когда я использую $ .getJSON. Я не уверен, правильно ли я использую его, хотя документация по картам google показывает следующее добавление фрагмента маркера, 'var myLatlng = new google.maps.LatLng (33.890537,35.513477); вар маркер = новый google.maps.Marker ({ позиция: myLatlng, карта: карта, название: 'Hello World!' }); ' –

ответ

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 вызовы в замыкание, потому что это не отдельные обратные вызовы.

+0

вы можете сказать мне, что я делаю неправильно, потому что я не могу заставить его работать, 'function addMarker (map, lat, long) { var latlong = google.maps.LatLng (lat, long); return new google.maps.Marker ({ \t позиция: latlong, \t map: map }); } $ .getJSON ('parser.php', функции (элементы) { \t для (вар я = 0; г

+0

Разве это не то, что я написал? Какова ваша позиция? – Barmar

+0

Вы не поместили 'map' в аргументы' addMarker'. – Barmar