2013-11-10 1 views
2

На карте много фигур, и все они сохранены внутри этого массива array_shapes_object[]. Как показать все из них на карте методом fitBounds?Как я могу установить рамки для всех фигур на карте?

я могу использовать что-то вроде:

map.fitBounds(circle.getBounds()); 

или

map.fitBounds(rectangle.getBounds()); 

или

var points = new google.maps.LatLng(arrayLatitude[aa], arrayLongitude[aa]); 
bounds.extend(points); 
map.fitBounds(bounds); 

, но все они работают в течение только формы и не более чем один. Кажется, что есть только три типа фигур. (Круг, прямоугольник, многоугольник).

+0

кроме круга, прямоугольника вы хотите, чтобы ваша собственная форма сделать вы имеете в виду ....... –

+0

Я имею в виду, я просто рисую три вида фигуры. Круг, прямоугольник и многоугольник. – UserMat

+0

даже у вас другие формы тоже ... –

ответ

5

Вам необходимо создать объект google.maps.LatLngBounds, являющийся объединением границ всех объектов, которые вы хотите отобразить.

Объединение (другое: LatLngBounds) | LatLngBounds | Расширяет эти границы, чтобы содержать объединение этой и данной границ.

псевдо-код (вам нужно добавить границы всех форм, которые должны отображаться на карте к нему):

var bounds = circle.getBounds(); 
bounds.union(rectangle.getBounds(); 
for (var aa=0; aa < arrayLatitude.length; aa++) { 
    var points = new google.maps.LatLng(arrayLatitude[aa], arrayLongitude[aa]); 
    bounds.extend(points); 
} 
map.fitBounds(bounds); 
+0

Интересно, что мне пришлось использовать 'bounds.union (circle.getBounds());' чтобы получить все мои круги на карте – Rippo

3
<script> 
//This function get the canter of map in a way that all shapes are shown on the map. 
function get_center() 
{ 
    var bounds = new google.maps.LatLngBounds(); 
    var points = new Array(); 

    for(var counter = 0; counter < array_shapes_object.length; counter++) 
    { 
     switch(array_shapes_object[counter].type) 
     {   
      case "rectangle": 
      case "circle":            
       points = new google.maps.LatLng(array_shapes_object[counter].getBounds().getNorthEast().lat(), array_shapes_object[counter].getBounds().getNorthEast().lng()); 
       bounds.extend(points); 

       points = new google.maps.LatLng(array_shapes_object[counter].getBounds().getSouthWest().lat(), array_shapes_object[counter].getBounds().getSouthWest().lng()); 
       bounds.extend(points); 
      break; 

      case "polygon": 
       var paths; 
       paths = array_shapes_object[counter].getPath(); 

       for(var i = 0; i < paths.length; i++) 
       { 
        points = new google.maps.LatLng(paths.getAt(i).lat(), paths.getAt(i).lng()); 
        bounds.extend(points);     
       } 

      break; 
     } 

     map.fitBounds(bounds); 
    }    
} 
</script> 
+0

Откуда этот массив? Array_shapes_object? – ThomasReggi