带有Perl的Javascript Forloop不适用于Google Maps API来创建标记

Javascript Forloop withing Perl Not Working for Google Maps API to create Markers

本文关键字:API Maps 创建 Google 适用于 Perl Javascript Forloop 不适用 带有      更新时间:2023-09-26

我是perl和javascript的新手,正在尝试让javascript for循环通过perl数组运行,以将标记插入谷歌地图实例。创建映射并运行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;
}

Perl是服务器端。它在您的Javascript之前执行。Perl只输出HTML和Javascript,一旦输出,HTML和Javascript就不知道您的Perl变量。

您可以在Perl中生成一个循环,输出适当的add_marker() Javascript代码,也可以输出一个Javascript数组,然后像现在这样使用Javascript循环。您将永远无法从Javascript循环中引用Perl的数组索引。

正如Cbreak所指出的,您正在混淆Perl和Javascript代码。我最近在这篇文章中回答了一个非常相似的问题