2011-05-27 9 views
33

Estoy usando Google Map V3 para mostrar una lista de marcadores extraídos de un DB, usando MYsql y PHP. MIS marcadores se establecen en el mapa con la dirección completa (de DB, incluyendo el código postal), ya que no tengo la larga, la información de Latitud Todo está funcionando bien, MI bucle se ve como sigueGoogle map V3 Establecer centro para Marker específico

while... 
Addmarker(map,'MY ADdress','Title'); 
end while; 

Ahora quisiera establecer el mapa en un marcador específico contenido en el bucle que coincidirá con un código postal previamente ingresado. ¿Cómo puedo configurar el mapa para centrarme en este marcador y abrir la ventana de información?

Respuesta

49

Una vez que tenga los marcadores en el mapa, puede recuperar las coordenadas Lat/Long a través de la API y usar esto para establecer el centro del mapa. Lo primero que debes hacer es determinar en qué marcador quieres centrarte; te lo dejo a ti.

// "marker" refers to the Marker object you wish to center on 

var latLng = marker.getPosition(); // returns LatLng object 
map.setCenter(latLng); // setCenter takes a LatLng object 

Las ventanas de información son objetos separados que normalmente están unidos a un marcador, por lo que para abrir la ventana de información que podría hacer algo como esto (sin embargo, dependerá de su código):

var infoWindow = marker.infoWindow; // retrieve the InfoWindow object 
infoWindow.open(map); // Trigger the "open()" method 

Esperanza esto ayuda.

+0

THX, por favor no deje que a mí, ya que no estoy seguro de que con el mapa de google. ¿Cómo apunto a un marcador específico? – salocin

+0

Ayuda por favor ??? – salocin

+0

En la función "Addmarker" en su ciclo while ... end, debe construir objetos Marker utilizando la API de Google Maps. Es posible que necesite asignar cada marcador (o solo los marcadores con los que desea trabajar) a una matriz para que pueda acceder a ellos. Si necesita más ayuda para construir Marcadores y agregarlos a un mapa, le sugiero que cierre esta pregunta y cree una nueva que sea más específica para la ayuda que necesita. – 6twenty

31

Para construir sobre la respuesta de @ 6twenty ... prefiero panTo (LatLng) sobre setCenter (LatLng) como panTo anima para una transición más suave al centro "si el cambio es menor que el ancho y el alto del mapa". https://developers.google.com/maps/documentation/javascript/reference#Map

El siguiente utiliza Google Maps API v3.

var marker = new google.maps.Marker({ 
    position: new google.maps.LatLng(latitude, longitude), 
    title: markerTitle, 
    map: map, 
}); 
google.maps.event.addListener(marker, 'click', function() { 
    map.panTo(marker.getPosition()); 
    //map.setCenter(marker.getPosition()); // sets center without animation 
}); 
+3

+1 para el método 'panTo' :) –

+0

Gracias, esto funcionó para mí. Hay otra función 'panBy', esto te ayudará a cambiar el centro del mapa por la distancia dada en píxeles. :) –

1

puede ser que esto ayudará a:

map.setCenter(window.markersArray[2].getPosition()); 

toda la información de los marcadores están en serie markersArray y es global. Entonces puede acceder desde cualquier lugar usando window.variablename. Cada marcador tiene una identificación única y puedes poner esa identificación en la clave de la matriz. por lo que se crea marcador de la siguiente manera:

window.markersArray[2] = new google.maps.Marker({ 
      position: new google.maps.LatLng(23.81927, 90.362349),   
      map: map, 
      title: 'your info ' 
     }); 

Esperamos que esto ayude.

0
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 
     }); 
    } else { 
     alert('Geocode was not successful for the following reason: ' + status); 
    } 
    }); 
9

¡Esto debería hacer el truco!

google.maps.event.trigger(map, "resize"); 
map.panTo(marker.getPosition()); 
map.setZoom(14); 

Usted tendrá que tener sus mapas mundial

Cuestiones relacionadas