Javascript Forloop с Perl не работает для API Карт Google для создания маркеров - PullRequest
0 голосов
/ 20 марта 2012

Я новичок в perl и javascript и пытаюсь получить цикл javascript for для запуска через массив perl для вставки маркеров в экземпляр Google Maps.Карта создана, и цикл for запускается, но 5 одинаковых маркеров вставляются, потому что цикл не работает правильно.Есть ли лучший способ получить доступ к этому массиву в JavaScript?

@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;
}

Ответы [ 2 ]

1 голос
/ 20 марта 2012

Perl на стороне сервера.Он выполняется ДО вашего Javascript.Perl просто выводит HTML и Javascript, как только он делает это, HTML и Javascript не знают ваших переменных Perl.

Вы можете создать цикл в Perl, который выведет соответствующий код add_marker() Javascript, или вы можете вывести Javascriptмассив, а затем использовать цикл Javascript, как вы сейчас.Вы никогда не сможете ссылаться на индекс массива Perl из цикла Javascript.

0 голосов
/ 20 марта 2012

Как указал Cfreak, вы смешиваете свой Perl и Javascript код.Я недавно ответил на очень похожий вопрос в этом сообщении

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...