使用Perl的Javascript Forloop不适用于Google Maps API来创建标记
我是perl和javascript的新手,正在尝试通过perl数组运行javascript for循环,以便将标记插入GoogleMaps实例。创建映射并运行for循环,但插入了5个相同的标记,因为循环似乎没有正确运行。有没有更好的方法在javascript中访问此数组使用Perl的Javascript Forloop不适用于Google Maps API来创建标记,javascript,perl,google-maps-api-3,Javascript,Perl,Google Maps Api 3,我是perl和javascript的新手,正在尝试通过perl数组运行javascript for循环,以便将标记插入GoogleMaps实例。创建映射并运行for循环,但插入了5个相同的标记,因为循环似乎没有正确运行。有没有更好的方法在javascript中访问此数组 @latlongarray = (0,0,20,20); $length = @latlongarray; { print <<HTML; <html> <head> <script
@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;
}
@latlongarray=(0,0,20,20);
$length=@latlongarray;
{
打印Perl是服务器端。它在Javascript之前执行。Perl只输出HTML和Javascript,一旦输出HTML和Javascript,Javascript就不知道Perl变量
您可以在Perl中创建一个循环,输出适当的add_marker()
Javascript代码,或者您可以输出一个Javascript数组,然后像现在这样使用Javascript循环。您将永远无法从Javascript循环中引用Perl的数组索引。正如Cfreak指出的那样,您将Perl和Javascript代码混在一起。我最近在这篇文章中回答了一个非常类似的问题。您不应该得到在你发现它不起作用之前,你几乎要写这么多的代码了。总是从一些简单的代码开始,让它起作用,然后添加到代码中,一点一点地测试它。大量未测试的代码可能有多个bug,很难知道在代码中的什么地方可以找到修复方法。