2013-02-25 36 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