0

Google지도 자바 스크립트 API를 사용하여지도로 웹 사이트를 만들었습니다. Im는 PHP를 사용하여 Google BigQuery 데이터베이스에서 $ 행을 호출합니다. 맵의 모든 마커에 리스너를 추가하고 싶습니다. 현재 마커가 클릭되면 마지막 마커로 점프합니다. 나머지 마커는 마치 최종 마커로 반복됩니다.루프의 모든 마커에 마커 수신기 추가

foreach ($rows as $row) { 

      ?> 
      var contentString = "<h1><?php echo str_replace('"', "'", $row['f'][2]['v']); ?></h1>"; 
      var infowindow = new google.maps.InfoWindow({ 
       content: contentString 
       }); 

      var geolocate = new google.maps.LatLng(<?php echo $row['f'][0]['v']; ?> , <?php echo $row['f'][1]['v']; ?>); 

      var marker = new google.maps.Marker({ 
       map: map, 
       position: geolocate, 
       icon: '/img/Toilet.png', 
       title: "<?php echo str_replace('"', "'", $row['f'][2]['v']); ?>"      //String Replace 
       }); 

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

marker.addListener는 배열 인덱스에 대한 포인터가 필요하지만 해결할 수 없습니다. 어떻게해야합니까?

+1

[Google지도 JS API를 V3 - 간단한 다중 마커 예]의 중복 가능성 (HTTP : // stackoverflow.com/questions/3059044/google-maps-js-api-v3-simple-multiple-marker-example) – geocodezip

+0

Ive이 수정 프로그램을 시도했지만 foreach 루프를 사용하고 있습니다. while 루프에 대한 색인 생성은 감각. – EJackson

답변

1

IIFE 패턴을 사용할 수 있습니다. 코드가 같은 것이 경우

https://en.wikipedia.org/wiki/Immediately-invoked_function_expression

에서 참조하시기 바랍니다 :

<?php 
foreach ($rows as $row) { 
?> 
    (function() { 
     var contentString = "<h1><?php echo str_replace('"', "'", $row['f'][2]['v']); ?></h1>"; 
     var infowindow = new google.maps.InfoWindow({ 
      content: contentString 
     }); 

     var geolocate = new google.maps.LatLng(<?php echo $row['f'][0]['v']; ?> , <?php echo $row['f'][1]['v']; ?>); 

     var marker = new google.maps.Marker({ 
      map: map, 
      position: geolocate, 
      icon: '/img/Toilet.png', 
      title: "<?php echo str_replace('"', "'", $row['f'][2]['v']); ?>"      //String Replace 
      }); 

     marker.addListener('click', function() { 
      infowindow.open(map, marker); 
     }); 
    })(); 
<?php 
} 
?> 
관련 문제