40 votes

Google Maps v3 - Comment faire pour centrer l'aide d'une adresse sur initialiser?

À l'aide de l'API Google Maps v3, il est un moyen pour définir le centre de la carte sur l'initialiser? J'ai une solution de contournement à l'aide de ce code:

var geocoder;
  var map;
  function initialize() {
    geocoder = new google.maps.Geocoder();
    var latlng = new google.maps.LatLng(-34.397, 150.644);
    var myOptions = {
      zoom: 8,
      center: latlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    }
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
    codeAddress('germany');
  }

  function codeAddress(address) {
    geocoder.geocode( { 'address': address}, 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
        });
      }
    });
  }

Le seul problème c'est que quand il s'initialise, il la centre à la "latlng" pendant une fraction de seconde. Je suis ne peux pas comprendre comment mettre la centre dans le myOptions". J'ai pensé que je pourrais revenir "les résultats[0].la géométrie.lieu" de la codeAddress de la fonction et de le passer à myOptions, mais qui ne fonctionne pas.

Merci pour toute aide.

Mise à jour Puisque je ne peux pas supprimer "center" tout à fait, je me demandais si il existe un moyen de passer l'adresse pour les options.

À partir de l'API Google:

Pour initialiser une Carte, nous avons d'abord créer une Carte objet d'options pour contenir la carte d'initialisation des variables. Cet objet n'est pas construit; au lieu de cela il est créé comme un objet littéral. Il y a deux options pour chaque carte: centre et de zoom.

78voto

Kasper Vesth Points 1822

Une solution simple pourrait être d'initialiser la carte dans votre codeAddress fonction:

var geocoder, map;

function codeAddress(address) {
    geocoder = new google.maps.Geocoder();
    geocoder.geocode({
        'address': address
    }, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            var myOptions = {
                zoom: 8,
                center: results[0].geometry.location,
                mapTypeId: google.maps.MapTypeId.ROADMAP
            }
            map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

            var marker = new google.maps.Marker({
                map: map,
                position: results[0].geometry.location
            });
        }
    });
}

Ceci devrait résoudre le problème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X