2014-05-19 7 views
5

Ho appena aggiunto la casella di ricerca nella mia mappa ma dopo aver cercato un luogo (come paesi o città) il risultato non è buono. Il mercato è impostato al centro del luogo e lo zoom è enorme.Zoom pertinente dopo la ricerca in google maps

Come possono essere definiti automaticamente i limiti in base alle dimensioni del luogo? Quando il risultato della ricerca include diversi luoghi, lo zoom è buono.

Qui è la mia porzione di codice:

var input = (document.getElementById('pac-input')); 
map.controls[google.maps.ControlPosition.TOP_LEFT].push(input); 

var searchBox = new google.maps.places.SearchBox((input)); 

google.maps.event.addListener(searchBox, 'places_changed', function() { 
    var places = searchBox.getPlaces(); 

    for (var i = 0, marker; marker = markers[i]; i++) { 
     marker.setMap(null); 
    } 

    markers = []; 
    var bounds = new google.maps.LatLngBounds(); 
    for (var i = 0, place; place = places[i]; i++) { 
     var image = { 
      url: place.icon, 
      size: new google.maps.Size(71, 71), 
      origin: new google.maps.Point(0, 0), 
      anchor: new google.maps.Point(17, 34), 
      scaledSize: new google.maps.Size(25, 25) 
     }; 

     var marker = new google.maps.Marker({ 
      map: map, 
      icon: image, 
      title: place.name, 
      position: place.geometry.location 
     }); 

     markers.push(marker); 

     bounds.extend(place.geometry.location); 
    } 

    map.fitBounds(bounds); 
}); 

Grazie per il vostro aiuto!

risposta

3

Utilizzare google.maps.fitBounds e geometry.viewport nel risultato del luogo.

Funzionerà solo se esiste un risultato singolo (oppure è possibile utilizzare il viewport del primo risultato).

for (var i = 0, place; place = places[i]; i++) { 
    var image = { 
     url: place.icon, 
     size: new google.maps.Size(71, 71), 
     origin: new google.maps.Point(0, 0), 
     anchor: new google.maps.Point(17, 34), 
     scaledSize: new google.maps.Size(25, 25) 
    }; 

    var marker = new google.maps.Marker({ 
     map: map, 
     icon: image, 
     title: place.name, 
     position: place.geometry.location 
    }); 

    markers.push(marker); 
} 

map.fitBounds(places[0].geometry.viewport); 
+0

Non ho ottenuto lo stesso zoom, si rimpicciolisce dallo zoom corrente. e ho ricevuto un messaggio come questo '// Solo i geocodes hanno viewport. cosa significa? – 151291

+0

La geometria per quel punto non ha una proprietà viewport – geocodezip

Problemi correlati