2015-07-15 15 views
0

У меня есть Google Maps ограничивающей функция работает следующим образом:fitBounds Карты() увеличивает масштаб последние маркера в массиве

function intializeCustom() { 
    var map = new google.maps.Map(document.getElementById('map-dir'), { 
     mapTypeId: google.maps.MapTypeId.ROADMAP, 
    }); 
    for (i = 0; i < markers.length; i++) { 
     var circle = new google.maps.Circle({ 
      map: map, 
      radius: 3000, 
      fillColor: '#2c3e50' 
     }); 
     var bounds = new google.maps.LatLngBounds(); 
     var position = new google.maps.LatLng(markers[i][1], markers[i][2]); 
     marker = new google.maps.Marker({ 
      position: position, 
      map: map, 
      title: markers[i][0] 
     }); 
     circle.bindTo('center', marker, 'position'); 
     google.maps.event.addListener(circle, 'click', function(ev) { 
      placeMarker(ev.latLng); //some function to place markers 
     }); 
     bounds.extend(position); 
     map.fitBounds(bounds); 
    } 
} 

Все работает нормально, за исключением границ. Карта рендеринга масштабируется в последнем маркере, доступном в массиве markers. Любая идея, что происходит не так?

ответ

1

На каждой итерации вы создаете новый LatLngBounds, поэтому, когда вы вызываете extend(), вы всегда получите экстенты, покрывающие текущий маркер.

Просто переместите декларацию перед циклом, и она должна работать.

var bounds = new google.maps.LatLngBounds(); 
for (i = 0; i < markers.length; i++) { 
    ... 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^