J'ai une simple classe Location
que j'utilise pour gérer toutes mes choses liées aux marqueurs. Je vais coller mon code ci-dessous pour que vous puissiez jeter un coup d'œil.
La dernière ligne(s) est ce qui crée réellement les objets marqueurs. Cela parcourt un JSON de mes emplacements, qui ressemble à quelque chose comme ceci :
{"locationID":"98","name":"Bergqvist Järn","note":null,"type":"retail","address":"Smidesvägen 3","zipcode":"69633","city":"Askersund","country":"Sverige","phone":"0583-120 35","fax":null,"email":null,"url":"www.bergqvist-jb.com","lat":"58.891079","lng":"14.917371","contact":null,"rating":"0","distance":"45.666885421019"}
Voici le code :
Si vous regardez la méthode target()
dans ma classe Location, vous verrez que je garde des références aux infowindow et je peux simplement les open()
et close()
à cause d'une référence.
Voir une démo en direct : http://ww1.arbesko.com/en/locator/ (tapez une ville suédoise, comme Stockholm, et appuyez sur Entrée)
var Location = function() {
var self = this,
args = arguments;
self.init.apply(self, args);
};
Location.prototype = {
init: function(location, map) {
var self = this;
for (f in location) { self[f] = location[f]; }
self.map = map;
self.id = self.locationID;
var ratings = ['bronze', 'silver', 'gold'],
random = Math.floor(3*Math.random());
self.rating_class = 'blue';
// c'est le point de marqueur
self.point = new google.maps.LatLng(parseFloat(self.lat), parseFloat(self.lng));
locator.bounds.extend(self.point);
// Créer le marqueur pour le placer sur la carte
self.marker = new google.maps.Marker({
position: self.point,
title: self.name,
icon: new google.maps.MarkerImage('/wp-content/themes/arbesko/img/locator/'+self.rating_class+'SmallMarker.png'),
shadow: new google.maps.MarkerImage(
'/wp-content/themes/arbesko/img/locator/smallMarkerShadow.png',
new google.maps.Size(52, 18),
new google.maps.Point(0, 0),
new google.maps.Point(19, 14)
)
});
google.maps.event.addListener(self.marker, 'click', function() {
self.target('map');
});
google.maps.event.addListener(self.marker, 'mouseover', function() {
self.sidebarItem().mouseover();
});
google.maps.event.addListener(self.marker, 'mouseout', function() {
self.sidebarItem().mouseout();
});
var infocontent = Array(
'