2013-02-25 73 views
0

真的需要幫助在這裏。我使用json_encode轉換數組,以便能夠在下面的谷歌地圖中遍歷searchresult的lats/longs。地圖加載罰款,如果我只是使用普通的標誌,如果我呼應JSON編碼陣列我得到:循環谷歌地圖標記與JSON編碼陣列

["55.7171, 13.2354","55.6411, 13.2122"] 

下面(的PHP代碼忽略大部分除了標記的一部分,只是給你的想法它如何使用)。

<?php 
    if (isset($search_result)) { 

     $markers = array(); 

     // Looping through the results and displaying appropriate data. 
     foreach ($search_result as $result) { 
      ?> 
      <li><?= $result['first_name']; ?></li> 
      <li><?= $result['last_name']; ?></li> 
      <li><?= $result['address']; ?></li> 
      <li><img width="80" height="80" src="<?php echo file_exists($result['profile_picture'])? $result['profile_picture'] : $img_profile_def; ?>"></li> 
      <li><a href="profile.php?userid=<?= $result['id']; ?>">View This User</a></li><br><br> 
    <?php 
     $markers[] = $result['latitude'] . ', ' . $result['longitude']; 
     } 
    } 
?> 

的JavaScript的腳本初始化地圖等我得到這個代碼,但沒有標記的地圖的底部。

<script type="text/javascript"> 
function initialize() { 
    var markers = <?php echo json_encode($markers); ?>; 

    var myLatLng = new google.maps.LatLng(<?php echo $area_coords; ?>); 

    var mapOptions = { 
     center:myLatLng, 
     zoom:15, 
     mapTypeId:google.maps.MapTypeId.ROADMAP 
    }; 
    var map = new google.maps.Map(document.getElementById("map_canvas"), 
      mapOptions); 

    for (i = 0; i < markers.length; i++) { 

    var position = new google.maps.LatLng(markers[i]); 

    var marker = new google.maps.Marker({ 

     map:map, 
     position:position 

    }); 
    } 
} 

initialize(); 

回答

2

我想這是因爲你傳遞一個字符串作爲經緯度參數,而不是兩個浮點數......也許你可以改變你的JSON,以便它: [緯度,經度] [緯度,經度] ...]像這樣:

$markers[] = [$result['latitude'],$result['longitude']]; 

然後

var position = new google.maps.LatLng(markers[i][0],markers[i][1]); 
+0

不容嘗試它,直到大約15個小時,但會看它是否工作那麼。希望這只是字符串問題,至少意味着代碼的其餘部分沒問題。 – HolyMackerel 2013-02-25 20:03:58

+0

其餘的看起來很標準。我還建議您在創建標記時將其添加到數組中,它可以幫助您清除地圖以及管理標記上的點擊事件......請參閱https://developers.google.com/圖/文檔/ JavaScript的/覆蓋#RemovingOverlays – 2013-02-25 20:33:14