2011-06-14 9 views
1

내가 PHP를 루프로 여러 맵을 DISPALY하려고하지만 난 그것을 여기에 일하러 가야 질수는여러 구글지도

<!doctype html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/> 
    <title>Google Maps JavaScript API Example</title> 
    <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=true&amp;key=ABQIAAAA5iXFaQoABBiRl7JNx5HFuxSa5RD4FXABRIVtLveK1-E6gmai7BR1Y63hhzwAO9ZPoNDgLDBQ_Z6B4Q" type="text/javascript"></script> 


    </head> 
    <body onload="load()" onunload="GUnload()"> 


    <?php 

    if($_POST['select'] == "place"){ 

    $posts = $facebook->api("https://stackoverflow.com/search?q=".urlencode($_POST['search'])."&type=".urlencode($_POST['select'])."&center=".urlencode($_POST['center'])."&distance=".urlencode($_POST['distance']).""); 

    //print_r($posts); 
    $num = "1"; 
    $num2 = "1"; 
    foreach($posts as $v) { 

     foreach($v as $v2) { ?> 

     <div> 
     <script type="text/javascript"> 

    //<![CDATA[ 
    function load() { 
     if (GBrowserIsCompatible()) { 
     var map = new GMap2(document.getElementById("map-<?php echo $num++; ?>")); 
     map.setCenter(new GLatLng(<?php echo $v2['location']['latitude']; ?>, <?php echo $v2['location']['longitude']; ?>), 13); 
     } 
    } 
    //]]> 
     <div id="map-<?php echo $num2++; ?>" style="width: 500px; height: 300px"></div> 
     <p><?php echo $v2['location']['latitude']; ?></p> 
     <p><?php echo $v2['location']['longitude']; ?></p> 
     </div> 
     <?php 

     } 

    } 


    } 

    } 

    ?> 



    </body> 
</html> 

내가 자바 스크립트를 넣어 시도 ... 벗었 코드입니다 루프 내에서하지만이 나던 작동하지 않습니다.

아무도 현재 루프 내 마지막지도 만 표시하는 순간 제안이 있습니까 ???

감사합니다.

답변

2

나는 그것이 작동하지 않는 이유를 말할 수 있습니다. 루프를 통해 매번 동일한 load() 함수를 재정의하고 있습니다. 따라서 문서가로드되고 load()가 호출되면 마지막지도 만 표시됩니다. 그런데도 V2 대신 Google지도 V3 API를 사용해야합니다.하지만 이는 다른 주제입니다.

이와 같이 수정해야합니다.

<script type="text/javascript"> 
var loaders = []; 
function load() { 
    for (var i = 1; i < loaders.length; i++) { 
     loaders[i](); 
    } 
} 
</script> 

그런 다음이로 루프를 변경 :

foreach($posts as $v) { 

    foreach($v as $v2) { ?> 

    <div> 
    <script type="text/javascript"> 

//<![CDATA[ 

loaders[<?php echo $num; ?>] = function() { 
    if (GBrowserIsCompatible()) { 
    var map = new GMap2(document.getElementById("map-<?php echo $num++; ?>")); 
    map.setCenter(new GLatLng(<?php echo $v2['location']['latitude']; ?>, <?php echo $v2['location']['longitude']; ?>), 13); 
    } 
}; 
//]]> 
    <div id="map-<?php echo $num2++; ?>" style="width: 500px; height: 300px"></div> 
    <p><?php echo $v2['location']['latitude']; ?></p> 
    <p><?php echo $v2['location']['longitude']; ?></p> 
    </div> 
    <?php 

    } 

} 
첫째, < 머리 > 섹션에 넣고