2014-01-09 16 views
0

我得到從一個教程這個代碼,它是全功能:更改for循環以適應json數組?

var sites = [ 
    ['Mount Evans', 39.58108, -105.63535, 4, 'This is Mount Evans.'], 
    ['Irving Homestead', 40.315939, -105.440630, 2, 'This is the Irving Homestead.'], 
    ['Badlands National Park', 43.785890, -101.90175, 1, 'This is Badlands National Park'], 
    ['Flatirons in the Spring', 39.99948, -105.28370, 3, 'These are the Flatirons in the spring.'] 
]; 



    function setMarkers(map, markers) { 

     for (var i = 0; i < markers.length; i++) { 
      var sites = markers[i]; 
      var siteLatLng = new google.maps.LatLng(sites[1], sites[2]); 
      var marker = new google.maps.Marker({ 
       position: siteLatLng, 
       map: map, 
       title: sites[0], 
       html: sites[4] 



    }); 

     var contentString = "Some content"; 

     google.maps.event.addListener(marker, "click", function() { 
      infowindow.setContent(this.html); 
      infowindow.open(map, this); 
     }); 
    } 
} 

它顯示與從陣列中的信息的地圖上的標記。

我想更改for循環,以便它適合我的數組。因爲當我嘗試這與我的陣列,地圖甚至不露面..

<?php 

include_once'config/connect.php'; 

$search= $_POST['search']; 
$search = stripslashes($search); 

$search = mysql_real_escape_string($search); 

$sql= "select * from venue where vID in (select vID from sv where sID in (select sID from sports where sN = '$search'));"; 

$result=mysql_query($sql)or die(mysql_error()); 

$data1 = mysql_fetch_array($result); 
$array = array($data1['latitude'], $data1['longitude'], $data1['venue']); 

echo json_encode($array); 
?> 


    var sites = <?php echo json_encode($array); ?>; 

此打印正是因爲它應該

sites[0] = 57.7865 //latitude 
sites[1] = 11.7986 //longitude 
sites[2] = fjaderborgen //venue 

但它不與地圖代碼工作。

我需要改變循環莫名其妙,我該怎麼做?

回答

1

實際上,您根本不需要循環,因爲您只定義了一個站點(儘管變量名稱爲「sites」)。

var siteLatLng = new google.maps.LatLng(sites[0], sites[1]); 
var marker = new google.maps.Marker({ 
    position: siteLatLng, 
    map: map, 
    title: sites[2], 
    html: "This is " + sites[2] 
}); 

google.maps.event.addListener(marker, "click", function() { 
    infowindow.setContent(this.html); 
    infowindow.open(map, this); 
}); 
+0

對不起,我不清楚。我陣列的例子只有1個經緯度的地方。我得到的結果取決於我從搜索中得到多少結果。所以我需要一個循環,否則我只會得到1標記嗎? –

+0

沒錯,但沒有看到你如何構建這個列表(你的PHP代碼肯定不會這樣做),我會猶豫不決。 –