title: Google maps v3 open infowindow from a link outside of map
body: <p>I'm trying to open the info window when a user clicks on a link from outside the map. Not sure what I'm missing here. Basically, I have a list of cities with an id for each (var ids loops over the ids). When the user clicks on that link (on click="myclick('1')" id like the infowindow for that city(1 = london etc) to open up.</p>
  
  <p>Any help would be appreciated.</p>
  
  <pre><code>var url = "my json link";
  var gmarkers = [];
  
  function initialize() {
  
  var myLatlng = new google.maps.LatLng(0, 0);
  var myOptions = {
      zoomControl: true,
      disableDefaultUI: true,
      center: myLatlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
      };
  
  var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
  
  downloadUrl(url, function(data) {
  
  var j = eval('(' + data.responseText + ')');
  var jlength = j.data.cities.length;
  
  var bounds = new google.maps.LatLngBounds();
  
  for(i=0; i &lt; jlength; i++) {
  
      var x =  parseFloat(j.data.cities[i].lat);
      var y = parseFloat(j.data.cities[i].lon);
      var ids = parseFloat(j.data.cities[i].id);
      var z = new google.maps.LatLng(x,y);
      var title = j.data.cities[i].title;
      var contentstring = 'text'
  
      var marker = createMarker(ids);
  
      var infowindow = new google.maps.InfoWindow({content: contentstring});
  
      bounds.extend(z);
      map.fitBounds(bounds);
  
  };
  
  if (map.getZoom() == 21) 
      {
          map.setZoom(16);
      }
  
  if (map.getZoom() &lt; 5) 
      {
          map.setZoom(map.getZoom()+1);
      }
  
  
      function myclick(i) {
          google.maps.event.trigger(gmarkers[i], 'click');
      };
  
  
      function createMarker(){
  
          var marker = new google.maps.Marker({
              position: z,  
              map: map,
              title: title,
              html: contentstring,
              icon: 'imagelink'
          });
  
          google.maps.event.addListener(marker,'click',function(){
          infowindow.setContent(this.html);
          infowindow.open(map,marker);
          }); 
  
              //google.maps.event.addListener(marker,'click',function(){
              //window.location.href = marker.url;
              //});   
  
          gmarkers[ids] = marker;
  
      };
  
  });
  
  };
  
  google.maps.event.addDomListener(window, 'load', initialize);
  
  function downloadUrl(url, callback) {
    var request = window.ActiveXObject ?
        new ActiveXObject('Microsoft.XMLHTTP') :
        new XMLHttpRequest;
  
    request.onreadystatechange = function() {
      if (request.readyState == 4) {
        request.onreadystatechange = doNothing;
        callback(request, request.status);
      }
    };
  
    request.open('GET', url, true);
    request.send(null);
  }
  
  function doNothing() {};
  </code></pre>