javascript - example - Google Maps v3: cómo centrar el uso de una dirección al inicializar?
google.maps.marker example (1)
Usando Google Maps API v3, ¿hay alguna manera de establecer el centro del mapa al inicializar? Tengo una solución usando este código:
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 inicializa, lo centra en "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 Como no puedo eliminar "centro" por completo, me pregunto si hay una forma de pasar la dirección a las opciones.
De Google API:
Para inicializar un Mapa, primero creamos un objeto de Opciones de Mapa para contener las variables de inicialización del mapa. Este objeto no está construido; en cambio, se crea como un objeto literal. Hay dos opciones requeridas para cada mapa: centro y zoom .
Bueno, una solución simple podría ser 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 deberia resolver el problema.