2014-03-28 160 views
0

我有以下JS處理表單,返回結果爲JSON,然後應該在地圖上標記json作爲標記。儘管我確實得到了json響應,但沒有繪製任何內容。我對JavaScript並不是很熟悉,所以有人可以告訴我下面的錯誤是什麼?谷歌地圖:從JSON加載標記

感謝

的JSON:

[ 
    { 
     "lat": "53.598660370500596", 
     "lng": "-113.59166319101564" 
    } 
] 

JavaScript的

$(function() { 
    $('#search').click(function() { 
     var projectNumber = $('#project_number').val(); 
     var setdistance = $('#setdistance').val(); 
     var companyType = $('#company_type').val(); 

     //syntax - $.post('filename', {data}, function(response){}); 
     $.post('business_location_get_map.php', { 
      project_number: projectNumber, 
      setdistance: setdistance, 
      company_type: companyType 
     }, function (ret) { 
      $('#result').html(ret); 
     }); 
    }); 
}); 

function initialize() { 
    var mapOptions = { 
     center: new google.maps.LatLng(53.5435640000, -113.5), 
     zoom: 8 
    }; 
    var map = new google.maps.Map(document.getElementById("map_canvas"), 
    mapOptions); 
} 

google.maps.event.addDomListener(window, 'load', initialize); 

function plot() { 
    $.getJSON('business_location_get_map.php', function (data) { 
     var location; 
     $.each(data, function (key, val) { 
      addMarker(key.lat, key.lng); 
     }); 
    }); 
} 

function addMarker(lat, lng) { 
    marker = new google.maps.Marker({ 
     position: new google.maps.LatLng(lat, lng), 
     map: map, 
     icon: redImage 
    }); 
    markersArray.push(marker); 
} 

google.maps.event.addDomListener('search', 'click', plot); 

編輯:

我已經改變了

(key.lat, key.lng) 

(val.lat, val.lng) 

我仍然有同樣的結果,

回答

1

的問題是關於$.each()

你傳入key.latkey.lngaddMarker(),但是key是數組當前元素的索引。您必須使用val,因爲它是真正的價值:

$.each(data, function (key, val) { 
    addMarker(val.lat, val.lng); 
}); 

關於$.each()使用更多信息:https://api.jquery.com/each/

+0

在你的getJSON一個簡單的console.log會有所幫助;) – MrUpsidown

+0

OK,這是有道理的,我現在已經改變了,但我仍然沒有得到結果。我試圖弄清楚console.log,我從來沒有使用它,就像我說過我沒有使用JavaScript很多 – Owen

+0

仍然沒有,但是當我使用控制檯它說:click方法是未定義的AddDomListner在最後。我有一個按鈕,指出onclick =「plot()」。這會成爲問題嗎? – Owen