2011-11-18 11 views

Odpowiedz

38

Domyślnie mapa jest skoncentrowany i powiększony do obwiedni zawartości warstwy KML.

Możesz zmienić zachowanie domyślne za pomocą właściwości preserveViewport obiektu google.maps.KmlLayerOptions. Jeśli ustawisz go na true, mapa nie jest wyśrodkowana i powiększona.

Na przykład użyć:

var nyLayer = new google.maps.KmlLayer(
        'http://www.searcharoo.net/SearchKml/newyork.kml', 
        { 
         suppressInfoWindows: true, 
         map: map, 
         preserveViewport: true 
        }); 

Jeśli chcesz wyśrodkować i powiększyć do zawartości warstwy kml później, zastosowanie:

var bounds = nyLayer.getDefaultViewport(); 
map.fitBounds(bounds); 

EDIT:

Jeśli chcesz, aby mapa była zawsze wyśrodkowana (ale nie powiększona) po załadowaniu warstwy kml, użyj zdarzenia defaultviewport_changed z google.maps.KmlLayer bject. Musisz ustawić centrum mapy na środek domyślnej rzutni warstwy kml. Zdarzenie uruchamiane jest po załadowaniu zawartości warstwy kml i obliczeniu domyślnej rzutni.

google.maps.event.addListener(nyLayer, 'defaultviewport_changed', function() { 
    var bounds = nyLayer.getDefaultViewport(); 
    map.setCenter(bounds.getCenter()); 
}); 
+0

Dzięki, ale kiedy ustawić wyższy poziom powiększenia powiedzieć 18, markery nie są widoczne, albo nie występują wcale lub trzeba je wyśrodkować, aby były widoczne, jak mogę zawsze upewnić się, że znaczniki pojawiają się na mapie w pobliżu centrum – Mike

+0

Zaktualizowałem odpowiedź. Teraz możesz natychmiast wyśrodkować mapę do położenia znaczników w warstwie kml. – Tomik

+0

W rzeczywistości mam pewne znaczniki na mapie w zależności od lokalizacji. Po wczytaniu strony powinienem widzieć wszystkie znaczniki, a jeśli kliknę gdzieś w pobliżu określonego rynku, chcę, żeby się przybliżył. Również zaktualizowałem kod, ale wygląda na to, że bierze zły plik js: http://jsfiddle.net/WPXWX/1/ – Mike

Powiązane problemy