2011-12-28 16 views
0

私のデータベースには緯度と経度がありますが、私はGoogleマップv3に複数のマーカーを表示したいのですが、問題は私の値(緯度、経度)を取得しているときです地図上 Googleマップv3でlong longを表示するApi

...ループやその他の値の取得その最後の値が上書きされるので、私のコードは、この..です

<?php foreach($this->searchResult as $result): ?> 
<ul> 
<li><?php echo $result['user_id']; ?> 

<li><?php echo $result['name']; ?></li> 
<li><?php echo $result['Latitude']; ?></li> 
<li><?php echo $result['Longitude']; ?></li> 


<li><?php if($result['country'] == '1'){echo "America"; }else{ echo "";} ?></li> 
<a href="<?php echo 
$this->url(array('controller'=>'search', 'action'=>'get-Details',   'id'=>$result['id']))?>">Details</a> 
</ul> 
<script type="text/javascript"> 
var berlin = new google.maps.LatLng(40.7144, -74.0061); 

    var lat = new Array(); 
    var lon = new Array(); 
    var lat = <?php echo $result['Latitude']; ?>; 
    var lon = <?php echo $result['Longitude']; ?>; 


var neighborhoods = [ 

    new google.maps.LatLng(lat,lon) 

]; 


var markers = []; 
var iterator = 0; 

var map; 

function initialize() { 
var mapOptions = { 
    zoom: 4, 
    mapTypeId: google.maps.MapTypeId.ROADMAP, 
    center: berlin 
}; 


    map = new google.maps.Map(document.getElementById("map_canvass"), 
     mapOptions); 

}

function drop() { 
for (var i = 0; i < neighborhoods.length; i++) { 
    setTimeout(function() { 
    addMarker(); 
    }, i * 200); 
} 

}

function addMarker() { 
    markers.push(new google.maps.Marker({ 
    position: neighborhoods[iterator], 
    map: map, 
    draggable: false, 
    animation: google.maps.Animation.DROP 
})); 
    iterator++; 
} 
</script> 


<?php endforeach;?> 



<?php echo $this->paginationControl($this->searchResult, 'Sliding', 'pagination.phtml'); ?> 

<div id="map_canvass" style="width:800px; height:300px"></div> 

<button id="drop" onclick="drop()">Drop Markers</button> 

答えて

0

foreachループでスクリプトタグを作成しないでください。より良いアプローチは、データオブジェクトを生成し、それをJS変数としてスクリプトブロックにレンダリングすることです。次に、このデータオブジェクトに対してJS内でループし、マークを追加することができます。

json_encodeは、データオブジェクトを印刷するのに適しています。 http://www.php.net/manual/en/function.json-encode.php

擬似コード:

<script type="text/javascript"> 
    (function() { 
     var neighborhoods = <?php echo json_encode($allHoodsIWantToAdd);?>; 
     ... 
    }()); 
</scritp> 
+0

実際に私はここにすべての緯度、経度の値を格納したい...と、それをフェッチ... が、そのだけ最後の値を保持.. するvar地域= [ new google.maps.LatLng(lat、lon) ]; –

+0

equals演算子は、代入を行い、以前の代入を上書きします。 javascipt配列を拡張するには、push()関数を使用します。 'var neighborhoods = []; neighborhoods.push(firstCoordinate); neighborhoods.push(secondCoordinate); ' –

+0

または、すべての要素を同時に割り当てます。 'var neighborhoods = [firstCoordinate、secondCoordinate];' –

関連する問題