2012-10-22 4 views
1

J'ai cette fonction qui ajoute le nouveau marqueur aux google maps.Comment centrer le nouveau marqueur google maps

Mais le centre ne fonctionne pas. Un conseil?

function addMarker(lat, lng, name){ 
    new google.maps.Marker({ 
     map: map, 
     icon: image, 
     position: new google.maps.LatLng(lat, lng), 
     title: name, 
     center: new google.maps.LatLng(lat, lng), 
     zoom: 6 
    }); 
} 

Mais center ne fonctionne pas.

Répondre

5

Lorsque vous créez un nouvel objet marqueur via l'API Google Maps, vous pouvez appeler setCenter de l'objet carte fonction, en passant dans la position du marqueur:

map.setCenter(marker.position); 

Cela devrait centrer la carte sur le marqueur.

Si vous souhaitez animer le processus, utilisez panTo à la place:

map.panTo(marker.position); 

Il convient également de noter que les center et zoom propriétés que vous essayez de mettre dans le constructeur de l'objet marqueur n'existe pas . Ce sont des propriétés de l'objet cartographique lui-même et doivent être définies ici.

J'imagine quelque chose comme ceci:

function addMarker(lat, lng, name) 
{ 
    var newMarker = new google.maps.Marker({ map: map, 
              icon: image, 
              position: new google.maps.LatLng(lat, lng), 
              title: name }); 
    map.setCenter(newMarker.position); 
    map.setZoom(6); 
} 

Je voudrais aussi ajouter map et envisager image à la liste des paramètres de addMarker au lieu d'utiliser des objets SCOPED « global », ou je aurait une fonction à l'aide renoncent à tout. C'est un peu difficile et dépend du besoin de votre code.

More Info Here

+0

Grande explication, mais il y a un plus quand il centre de problèmes, la carte va gris et aucune carte est affichée. Quand j'ajoute 10 marqueurs avec 5 sec interwal, je regarde juste la boîte grise. – Andrew

+0

Dépend de l'endroit où vous êtes dans le monde. 6 est assez près du sol et il n'y a peut-être pas d'images là-bas. Utilisez quelque chose un peu plus haut, comme 10 ou 15 à des fins de test. Il y a quelque chose que vous pouvez faire pour éviter cela. [Regardez ici] (https://developers.google.com/maps/documentation/javascript/maxzoom) – digitlworld

+0

Oups. 6 est loin, pas proche. C'est toujours probablement lié à des données manquantes ou la carte prend un certain temps à charger. Il y a aussi un certain nombre d'autres facteurs qui peuvent affecter le rendu de la carte et qui sont en dehors de la portée de cette question. – digitlworld