2015-10-13 139 views
-1

我有一個jQuery的函數,通過php文件,從數據庫中檢索經度和緯度。在同一個js文件中,我有一個將標記放置在Google地圖上的函數。我想使用第一個函數返回的json(lat和long),在Google maps中添加標記函數。目前在我的代碼下面,..JSON數據只是顯示在一個空的div。有什麼方法可以在函數之間訪問json數據,或者我可以以某種方式組合這兩個函數嗎?如何將json對象從一個函數傳遞給另一個函數?

 // Google Map 

    var map; 

    // markers for map 
    var markers = []; 

    // initialize the map 
    function initMap() { 
     map = new google.maps.Map(document.getElementById('map'), { 
     center: {lat: 37.09024, lng: -95.712891}, 
     mapTypeId: google.maps.MapTypeId.ROADMAP, 
     zoom: 4 
     }); 
    } 



    // add markers 
    function addMarker(data) {  
     // get lat and long from data(json object)  
     var myLatlng = new google.maps.LatLng(parseFloat(data.latitude), parseFloat(data.longitude)); 
     // custom marker image 
     //var image = "../img/infoblue.png"; 
     // new marker 
     var marker = new MarkerWithLabel({ 
     position: myLatlng, 
     map: map, 
     labelClass: "label", 
     labelContent: data.name, 
     labelAnchor: new google.maps.Point(20,0),  
     }); 

     // add marker to array 
     markers.push(marker); 
    } 

// this function gets json and then displays in a div on an html page 
    $(document).ready(function(){ 
     $('.airport_form').submit(function(){ 

      // show that something is loading 
      $('#response').html("<b>Loading response...</b>"); 

      $.ajax({ 
      type: "post", 
      dataType: "json", 
      url: "response.php", 
      data: $(this).serialize() 
      }) 
      .done(function(data){ 

       // show the response 
       $('#response').html("Name -> " + data.name + "<br>" + " Iata code -> " + data.iata + "<br>" + " Lat. -> " + data.latitude + "<br>" + " Longitude -> " + data.longitude); 

      }) 
      .fail(function() { 

       // just in case posting the form fails 
       alert("Posting failed."); 

      }); 
     // to prevent refreshing the whole page page 
     return false; 
     }); 
    }); 
+0

一旦對象已經從有線格式JSON解析,它不是一個「JSON對象」 - 這是一個普通的舊JavaScript對象。 – Pointy

回答

1

你可以添加你addMarker功能,像這樣你done功能...

  .done(function(data){ 
       // add marker from data 
       addMarker(data); 

       // show the response 
       $('#response').html("Name -> " + data.name + "<br>" + " Iata code -> " + data.iata + "<br>" + " Lat. -> " + data.latitude + "<br>" + " Longitude -> " + data.longitude); 

      }) 
+0

謝謝..一旦你得到答案,答案總是如此簡單! – Ronnie

相關問題