Javascript 谷歌地图。以高效的方式使用PHP变量创建大量infoWindow

Javascript 谷歌地图。以高效的方式使用PHP变量创建大量infoWindow,javascript,php,google-maps,Javascript,Php,Google Maps,我有很多联系方式 es: 我想用Javascript传递这些变量,并以一种高效的方式创建它们的相对信息窗口。现在我的代码是: <script type="text/javascript"> var initialize = function() { var latlng = new google.maps.LatLng(45.0000, 9.0000); var marker1pos = new google.maps.LatLng(45

我有很多联系方式

es:


我想用Javascript传递这些变量,并以一种高效的方式创建它们的相对信息窗口。现在我的代码是:

  <script type="text/javascript">
      var initialize = function() {

      var latlng = new google.maps.LatLng(45.0000, 9.0000);
      var marker1pos = new google.maps.LatLng(45.1111, 9.1111);
      var marker2pos = new google.maps.LatLng(46.2222, 9.2222);

      var map = new google.maps.Map(document.getElementById('mappa'), options);
      map.setOptions({styles: stylesArray });

      var marker1 = new google.maps.Marker({position: marker1pos, map: map, flat: true});
      var marker2 = new google.maps.Marker({position: marker2pos, map: map, flat: true});

      var content1 = '<div class="infoMap"><h2><?php echo $contactName1; ?></h2></div>';
      var infowindow1 = new google.maps.InfoWindow({content: content1});
      google.maps.event.addListener(marker1, 'click', function() { infowindow1.open(map,marker1); });

      var content2 = '<div class="infoMap"><h2><?php echo $contactName2; ?></h2></div>';
      var infowindow2 = new google.maps.InfoWindow({content: content2});
      google.maps.event.addListener(marker2, 'click', function() { infowindow2.open(map,marker2); });

      }
      window.onload = initialize;
  </script>

var initialize=函数(){
var latlng=新的google.maps.latlng(45.0000,9.0000);
var marker1pos=newgoogle.maps.LatLng(45.1111,9.1111);
var marker2pos=新的google.maps.LatLng(46.2222,9.2222);
var map=new google.maps.map(document.getElementById('mappa'),options);
setOptions({style:stylesArray});
var marker1=new google.maps.Marker({position:marker1pos,map:map,flat:true});
var marker2=new google.maps.Marker({position:marker2pos,map:map,flat:true});
var content1='';
var infowindow1=new google.maps.InfoWindow({content:content1});
google.maps.event.addListener(marker1,'click',function(){infowindow1.open(map,marker1);});
var content2='';
var infowindow2=新的google.maps.InfoWindow({content:content2});
google.maps.event.addListener(marker2,'click',function(){infowindow2.open(map,marker2);});
}
window.onload=初始化;
当联系人数量很大时,编写和维护代码变得很困难

你知道有什么有效的方法吗?也许用一些像PHP中的foreach这样的语句

提前谢谢大家


Alessandro

您可以使用JSON实现。 一旦将jSON数据传递给javascript,就可以轻松访问它

<script type="text/javascript">
      var initialize = function() {

      <?php  
           //generate json object
           $jsonObj = ...
           echo "var javascript_json_object=".jsonObj;
      ?>
      //use javascript to access the javascript_json_object variable

      window.onload = initialize;
  </script>

var initialize=函数(){
//使用javascript访问javascript\u json\u对象变量
window.onload=初始化;

使用数组而不是单个变量:

$contactName1
$contactName2

范例

<?php foreach ($contactNames as $index => $contactName): ?>
var marker<?php echo $index; ?>pos = new google.maps.LatLng(45.1111, 9.1111);
var marker<?php echo $index; ?> = new google.maps.Marker({position: marker<?php echo $index; ?>pos, map: map, flat: true});
<!-------->
<?php endforeach; ?>

var-markerpos=newgoogle.maps.LatLng(45.1111,9.1111);
var marker=new google.maps.marker({position:markerpos,map:map,flat:true});

从php循环数据库或json获取联系人

 for($i=1;$i<12;$i++){ 
 $map_contactdetails.="var content1 = '<div class='infoMap'><h2>".$contactName1."</h2></div>';
    var infowindow1 = new google.maps.InfoWindow({content: content1});
    google.maps.event.addListener(marker1, 'click', function() { infowindow1.open(map,marker1); });";    


      }

关于($i=1;$iUse数组。请参阅@DanFromGermany的回答
echo“var javascript_json_object=”。$jsonObj;
:-)@DanFromGermany已经很久了,我没有编写php:P..thx..hehehehe
<?php foreach ($contactNames as $index => $contactName): ?>
var marker<?php echo $index; ?>pos = new google.maps.LatLng(45.1111, 9.1111);
var marker<?php echo $index; ?> = new google.maps.Marker({position: marker<?php echo $index; ?>pos, map: map, flat: true});
<!-------->
<?php endforeach; ?>
 for($i=1;$i<12;$i++){ 
 $map_contactdetails.="var content1 = '<div class='infoMap'><h2>".$contactName1."</h2></div>';
    var infowindow1 = new google.maps.InfoWindow({content: content1});
    google.maps.event.addListener(marker1, 'click', function() { infowindow1.open(map,marker1); });";    


      }
<script type="text/javascript"> 
<?php echo $map_contactdetails; ?>
</script>