2011-05-26 7 views
35

Usando Google Maps API v3, ¿hay alguna forma de establecer el centro del mapa al inicializar? Tengo una solución que utiliza este código:Google Maps v3 - ¿Cómo centrar el uso de una dirección en la inicialización?

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 
     }); 
     } 
    }); 
    } 

El único problema es que cuando se inicia, lo centra en la "latlng" por una fracción de segundo. No sé cómo configurar el centro en "myOptions". Pensé que podría devolver "results [0] .geometry.location" de la función codeAddress y pasarla a myOptions, pero eso no funciona.

Gracias por cualquier ayuda.

actualización Ya que no puedo eliminar el "centro" del todo, me pregunto si hay una manera de pasar la dirección a las opciones.

De Google API:

Para inicializar un mapa, primero creamos un mapa opciones objeto de contener mapa variables de inicialización. Este objeto no está construido; en cambio, se crea como un objeto literal. Hay dos opciones requeridas para cada mapa: centro y zoom.

Respuesta

70

bien una solución simple podría ser para inicializar el mapa en su función codeAddress:

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 
      }); 
     } 
    }); 
} 

Esto debería resolver el problema.

+2

Seguí tratando de incluir la función de geocodificación en la función de inicialización ... pero en realidad funciona al revés. ¡Gracias! – TerryMatula

Cuestiones relacionadas