2010-08-18 3 views
1

Cette question ayant trait à InfoWindow dans l'API Google Maps v3 ..JavaScript API Google Maps - un un infowindow ouvert à la fois ..

Actuellement, je boucle cette fonction et placer des marqueurs ..

function addPostCode(zip, html) 
{ 
    geocoder.geocode({ 'address': zip}, function(results, status) 
    { 
     if (status == google.maps.GeocoderStatus.OK) 
     { 
     map.setCenter(results[0].geometry.location); 
     var marker = new google.maps.Marker({ 
     map: map, 
     position: results[0].geometry.location, 
     name: zip 
     }); 
}); 

maintenant, je voudrais ajouter une fenêtre d'information avec HTML unique mais je voudrais le comportement suivant ..

Lorsqu'un infowindow est ouvert par un événement, tout infowindows courant fermeront ne laissant que le nouveau présente ..

Est-ce possible et comment m'y prendre? Trouver de la documentation sur cette question s'avère difficile ..

Répondre

3

Créez une seule infowindow dans votre initialisation. Dans votre événement/écouteur où vous voulez ouvrir l'infowindow, vous devez définir le contenu et ouvrir l'infowindow sur le marqueur/emplacement sur la carte.

// Initialize infowindow 
var infowindow = new google.maps.InfoWindow({content: ''}); 

function add_marker(point, name, content) 
{ 
    var marker = new google.maps.Marker({ 
     map: map, 
     position: point, 
     dragable: false, 
     clickable: true, 
     name: name 
    }); 
    marker.content = content; 
    google.maps.event.addListener(marker, 'click', function() 
    { 
     infowindow.content = marker.content; 
     infowindow.open(map, marker); 
    }); 
    return marker; 
}; 

function addPostCode(zip, html) 
{ 
    geocoder.geocode({ 'address': zip}, function(results, status) 
    { 
     if (status == google.maps.GeocoderStatus.OK) 
     { 
     map.setCenter(results[0].geometry.location); 
     var marker = add_marker(results[0].geometry.location, zip, html) 
     }); 
}); 

Cette question et la réponse m'a aidé un peu la question fenêtre d'informations unique ou multiple:

Google Maps API v3 adding an InfoWindow to each marker

+0

L'exemple est là dans le code. – sevenseacat

0

Vous êtes probablement mieux de demander le Google Groups for the Google Maps API v3 à propos de celui-ci, et d'autres questions connexes.

Je n'ai pas utilisé l'API v3, mais pour autant que je sache, vous ne pouvez avoir qu'une seule fenêtre d'information ouverte à la fois, donc cela se fera automatiquement.

0

Il y a deux façons de le faire ... le premier est de créer une seule fenêtre d'informations et utilisez simplement la méthode .setOptions de la fenêtre d'informations pour mettre à jour le content. La deuxième façon de le faire est simplement de définir une variable au niveau du module dans votre code pour contenir la fenêtre "active" ... et si une fenêtre infoWindow est ouverte, appelez sa méthode .close avant d'ouvrir la nouvelle .

1
var currentInfoWindow = ''; //Global variable 

google.maps.event.addListener(marker, 'click', function() 
    { 
     if(currentInfoWindow != '') 
     { 
     currentInfoWindow.close(); 
     currentInfoWindow = ''; 
     } 
     var infoWindow = new google.maps.InfoWindow({content: 'COntent'}); 
     infowindow.open(map, marker); 
     currentInfoWindow = infowindow; 
    }); 
Questions connexes