2013-12-10 66 views
0

我寫了下面的代碼來顯示標記,並有相應的信息窗口顯示警察的名字。 警察課有名稱,經度和緯度。如何在JSP循環中定義動態變量?

<script> 
     function initialize() 
     { 
      var iconBase = 'https://maps.google.com/mapfiles/kml/shapes/'; 
      var myCenter = new google.maps.LatLng(28.6523605,77.0910645); 
      var map = new google.maps.Map(document.getElementById("googleMap"), mapProp); 

      var mapProp = { 
       center: myCenter, 
       zoom: 10, 
       mapTypeId: google.maps.MapTypeId.ROADMAP, 
       scaleControl: true 
      }; 


      var map = new google.maps.Map(document.getElementById("googleMap"), mapProp); 
      var marker = []; 
      var info= []; 

      <% 
      ArrayList<PoliceStation> stationList = new PoliceStation().loadclass(); 
      for (int i=0 ; i < stationList.size() ; i++) { 
      %> 

       var pos = new google.maps.LatLng(
          <%= stationList.get(i).getLatitude()%>, 
          <%= stationList.get(i).getLongitude()%> 
          ); 

       marker = new google.maps.Marker({ 
        position: pos, 
        map: map 
       }); 

       marker.setMap(map); 
       var MarkerContent = "<div class=\"marker\">" + 
            "<h2>"+ "<%=stationList.get(i).getstationName()%>" 
            +"</h2>"+ 
            "</div>"; 


       info=new google.maps.InfoWindow(); 
       info.setOptions({ 
       content: MarkerContent, 
       size: new google.maps.Size(50, 50), 
       position: pos 
      }); 

      google.maps.event.addListener(marker, 'click', function() { 
       info.setOptions({ 
       content: MarkerContent 
      }); 
       info.open(map, marker); 
      }); 


     <% 
     } 
     %> 

所有標記都按預期設置。然而,單擊任何標記都會導致僅打開繪製的最後一個標記的infowindow。

我知道這是因爲所有標記,infoWindow名稱是多餘的,最後只有最後一個infoWindow被保存到最後一個標記。

我所遇到的封裝與

(function() {var marker = ...; google.maps.event.addListener...;})(); 

但是裏面的內容for循環的解決方案,我正在尋找一個解決方案,動態明顯定義每個變量名。例如像在每次迭代時增加計數器的值到每個標記和信息變量。 請不要提供JSTP解決方案。尋找特定的JSP解決方案

回答

0

令人驚訝的是,它真的很容易... JSP基本上用於動態地打印HTML。 這樣,而不是使用標記變量作爲

var marker = new google.maps.Marker({ 
        position: pos, 
        map: map 
       }); 

使用 -

var <%out.print("marker"+i);%> = new google.maps.Marker({ 
        position: pos, 
        map: map 
       }); 

是覺得─

var <%out.print("marker["+i+"]");%> = new google.maps.Marker({ 
        position: pos, 
        map: map 
       }); 

要注意,我沒有工作。

正確的代碼上面值MARKER1,MARKER2創造了新的變量...等

也不是必需的事件裏面的內容更新功能listener-

info.setOptions({ 
      content: MarkerContent 
     });