2015-09-30 16 views
7

Sau một ví dụ, bạn sẽ nhìn thấy plunker cô http://plnkr.co/edit/lJHyP3dhT3v8aHVdt3D3?p=previewTự động Phóng to bản đồ để phù hợp với tất cả các dấu hiệu

Bất kể bất kỳ giá trị zoom được cung cấp trong khi initializitng bản đồ, tôi muốn phóng to bản đồ tự động vì vậy tất cả các dấu hiệu là bên trong khung nhìn. Đây là mã của tôi

var tiles = L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', { 
     maxZoom: 18, 
     attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors, Points &copy 2012 LINZ' 
    }), 
    latlng = L.latLng(-37.82, 175.24); 

var map = L.map('map', {center: latlng, zoom: 10, layers: [tiles]}); 

var markers = L.markerClusterGroup(); 

for (var i = 0; i < addressPoints.length; i++) { 
    var a = addressPoints[i]; 
    var title = a[2]; 
    var marker = L.marker(new L.LatLng(a[0], a[1]), { title: title }); 
    marker.bindPopup(title); 
    markers.addLayer(marker); 
} 

map.addLayer(markers); 

var group = new L.featureGroup(markers); 

map.fitBounds(group.getBounds()); 

Trả lời

10

Bạn cần phải

  • tạo một mảng

  • đẩy tất cả các dấu hiệu của bạn trong mảng

  • khi tất cả các dấu hiệu được thêm vào mảng, tạo ra một featureGroup
  • thêm mảng điểm đánh dấu của bạn vào featureGroup và sau đó là sở thú m đến giới hạn của nó.

Dưới đây là sửa đổi đang

var markerArray = []; //create new markers array 

for (var i = 0; i < addressPoints.length; i++) { 
    var a = addressPoints[i]; 
    var title = a[2]; 
    var marker = L.marker(new L.LatLng(a[0], a[1]), { title: title }); 
    marker.bindPopup(title); 
    markers.addLayer(marker); 

    markerArray.push(marker); //add each markers to array 

    if(i==addressPoints.length-1){//this is the case when all the markers would be added to array 
     var group = L.featureGroup(markerArray); //add markers array to featureGroup 
     map.fitBounds(group.getBounds()); 
    } 
} 

Dưới đây là làm việc plunk

Các vấn đề liên quan