2012-03-20 11 views
0

私はperlとjavascriptの新機能で、Googleマップインスタンスにマーカーを挿入するためのjavascript forループをperl配列で実行しようとしています。マップが作成され、forループが実行されますが、ループが正しく実行されていないため、同じマーカーの5が挿入されます。 javascriptでこの配列にアクセスするより良い方法はありますか?Javascript Forlop with Perl with Google Maps APIでマーカーが作成されない

@latlongarray = (0,0,20,20); 
$length = @latlongarray; 

{ 
print <<HTML; 
<html> 
<head> 
<script type="text/javascript" 
     src="http://maps.googleapis.com/maps/api/js?&sensor=true"> 
    </script> 

<script type="text/javascript"> 
var map ; 
    function initialize() { 
    var latlng = new google.maps.LatLng(0,0); 
    var myOptions = { 
    zoom: 2, 
     center: latlng, 
     mapTypeId: google.maps.MapTypeId.ROADMAP // can be SATELLITE ,HYBRID,   ROADMAP  or TERRAIN 
    }; 
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 
{ 

var i; 
for (i=0;i<=8;i=i+2) 
{ 
var marker = add_marker($latlongarray[i],$latlongarray[i]); 
marker.setMap(map); 
    } 
    } 

} 
    </script> 
    <script type="text/javascript"> 
    function add_marker(lat,lng,title,box_html) { 

    var infowindow = new google.maps.InfoWindow({ 
     content: box_html 
}); 

var marker = new google.maps.Marker({ 
     position: new google.maps.LatLng(lat,lng), 
     map: map, 
     title: title 
}); 

google.maps.event.addListener(marker, 'click', function() { 
    infowindow.open(map,marker); 
}); 

    return marker; 
} 
</script> 

<title>Reverse IP Lookup & Locate</title> 
</head> 
<body onload="initialize()"> 
    <div id="map_canvas" style="width:80%; height:80%"></div> 
</body> 
HTML 
exit; 
} 
+1

このコードを書いてみると、それがうまくいかないことはありませんでした。常に簡単なコードから始め、その作業を行い、それを追加して少しずつテストしてください。テストされていないコードの大きなブロックは、複数のバグを持つ可能性が高く、そのコードのどこで修正を探すかを知ることは困難です。 – Borodin

答えて

1

Perlはサーバー側です。 Javascriptの前に実行されます。 PerlはHTMLとJavascriptを出力します。一度HTMLとJavascriptがPerl変数を知りません。

適切なadd_marker() Javascriptコードを出力するPerlでループを作ることができます。または、Javascript配列を出力して、現在のようにJavascriptループを使用することができます。 Perlの配列インデックスをJavascriptループから参照することは決してできません。

0

CfreakはあなたのPerlとJavascriptコードを混ぜていると指摘しています。私は最近、これと非常によく似た質問に答えました。post