2012-12-04 15 views
7

ten dotyczy Google Maps API v3:Niestandardowe warstwy Map Google za pośrednictwem interfejsu API?

Podczas rysowania różnych Polylines, Polygons, MapLabels lub którykolwiek z pozostałych elementów nakładek w zwyczaju mapa Google, rysuje je na mapPane. Czy można w jakiś sposób utworzyć wiele niestandardowych warstw, na których można narysować obiekty nakładki, a następnie łatwo włączyć/wyłączyć (pokazać/ukryć) te warstwy?

widzę dokumentację o warstwach tutaj: https://developers.google.com/maps/documentation/javascript/layers

ale nic o niestandardowych warstw.

Odpowiedz

6

Można tworzyć niestandardowe OverlayView to zrobić:

var LayerOverlay = function() { 
    this.overlays = []; 
} 
LayerOverlay.prototype = new google.maps.OverlayView(); 
LayerOverlay.prototype.addOverlay = function (overlay) { 
    this.overlays.push(overlay); 
}; 
LayerOverlay.prototype.updateOverlays = function() { 
    for (var i = 0; i < this.overlays.length; i++) { 
    this.overlays[i].setMap(this.getMap()); 
    } 
}; 
LayerOverlay.prototype.draw = function() {}; 
LayerOverlay.prototype.onAdd = LayerOverlay.prototype.updateOverlays; 
LayerOverlay.prototype.onRemove = LayerOverlay.prototype.updateOverlays; 

Następnie po dodaniu nakładek do LayerOverlay można pokazać lub ukryć je tylko z jednym setMap:

var layer1 = new LayerOverlay(); 
layer1.addOverlay(createMarker()); 
layer1.addOverlay(createMarker()); 
layer1.addOverlay(createMarker()); 

// hide all markers 
layer1.setMap(null); 

// show all markers 
layer1.setMap(map); 
+0

bardzo ciekawe .. Czy w ten sposób Mapy Google przełączają się między włączaniem/wyłączaniem ulic/terenu/satelitów? –

+0

Wewnętrzny kod Map Google został zaciemniony, trudno powiedzieć. –

+0

Dzięki. Czy istnieje jakakolwiek inna dokumentacja dotycząca 'OverlayView' poza referencją API? Coś z innymi przykładami? Ciekawi mnie, czy są inne sposoby, z których mógłbym skorzystać, o czym nie myślę. –

Powiązane problemy