2016-11-16 1 views
-1

У меня есть карта google с несколькими файлами kml "на ней". Мне нравится установить динамический коэффициент масштабирования, чтобы показать все contl-файл. Является ли возможным рассчитать границы KML файлов, объединить их и установить масштаб, чтобы показать все Kml StuFFgmaps - несколько файлов kml увеличить zoom

+0

Я думаю, что если вы не установите масштаб он будет работать, как вы описали. – rheitzman

ответ

0

Попробуйте использовать preserveVieport

var kmlLayer = new google.maps.KmlLayer('your.kml', { 
    map: map, 
    preserveViewport: true 
}); 
0

Вы должны сделать две вещи:

  1. Установите preserveViewport варианта каждого KmlLayer истины (для предотвращения автоматического зума, чтобы соответствовать)
var mapLayer1 = new google.maps.KmlLayer({ 
    url: kmlUrl, 
    preserveViewport: true 
}); 
  1. вычислить оценку, необходимую для всех KmlLayers.
var bounds = new google.maps.LatLngBounds(); // global 
// determine the bounds for layer 1 
google.maps.event.addListener(mapLayer1, 'defaultviewport_changed', function() { 
    bounds.union(mapLayer1.getDefaultViewport()); 
    map.fitBounds(bounds); 
}); 
// include the bounds for layer 2 
google.maps.event.addListener(mapLayer2, 'defaultviewport_changed', function() { 
    bounds.union(mapLayer2.getDefaultViewport()); 
    map.fitBounds(bounds); 
}); 
// repeat for all KmlLayers you want shown 

proof of concept fiddle

фрагмент кода:

function initialize() { 
 
    var location = new google.maps.LatLng(52.0, 5.1); 
 
    var mapOptions = { 
 
    zoom: 15, 
 
    center: location, 
 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
 
    } 
 

 
    var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions); 
 
    var bounds = new google.maps.LatLngBounds(); 
 

 
    //Add MapLayers 
 
    var mapLayer1 = new google.maps.KmlLayer({ 
 
    url: 'http://www.geocodezip.com/geoxml3_test/utah-hunt_com_DeerSouthern_kml.xml', 
 
    preserveViewport: true 
 
    }); 
 
    google.maps.event.addListener(mapLayer1, 'defaultviewport_changed', function() { 
 
    bounds.union(mapLayer1.getDefaultViewport()); 
 
    map.fitBounds(bounds); 
 
    }); 
 
    mapLayer1.setMap(map); 
 

 
    var mapLayer2 = new google.maps.KmlLayer({ 
 
    url: 'http://www.geocodezip.com/geoxml3_test/utah-hunt_com_DeerSoutheastern_kml.xml', 
 
    preserveViewport: true 
 
    }); 
 
    google.maps.event.addListener(mapLayer2, 'defaultviewport_changed', function() { 
 
    bounds.union(mapLayer2.getDefaultViewport()); 
 
    map.fitBounds(bounds); 
 
    }); 
 
    mapLayer2.setMap(map); 
 

 
    var mapLayer3 = new google.maps.KmlLayer({ 
 
    url: 'http://www.geocodezip.com/geoxml3_test/utah-hunt_com_DeerNorthern_kml.xml', 
 
    preserveViewport: true 
 
    }); 
 
    google.maps.event.addListener(mapLayer3, 'defaultviewport_changed', function() { 
 
    bounds.union(mapLayer3.getDefaultViewport()); 
 
    map.fitBounds(bounds); 
 
    }); 
 

 
    mapLayer3.setMap(map); 
 
} 
 
google.maps.event.addDomListener(window, "load", initialize);
html, 
 
body, 
 
#map-canvas { 
 
    height: 100%; 
 
    width: 100%; 
 
    margin: 0px; 
 
    padding: 0px 
 
}
<script src="https://maps.googleapis.com/maps/api/js"></script> 
 
<div id="map-canvas"></div>

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