2012-12-04 22 views
7

Dies ist in Bezug auf Google Maps API v3:Benutzerdefinierte Google Maps Layer über API?

Wenn Sie verschiedene zeichnen Polylines, Polygons, MapLabels oder einen der anderen Overlay-Elemente in einem benutzerdefinierten Google Map, es ihnen auf dem mapPane zieht. Ist es möglich, mehrere benutzerdefinierte Layer zu erstellen, auf denen Sie Overlay-Objekte zeichnen und dann diese Layer einfach aktivieren/deaktivieren (ein-/ausblenden) können?

Ich sehe Dokumentation über Schichten hier: https://developers.google.com/maps/documentation/javascript/layers

Aber nichts über benutzerdefinierte Schichten.

Antwort

6

Sie können eine benutzerdefinierte erstellen OverlayView, das zu tun:

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; 

Dann, wenn Ihre Overlays LayerOverlay hinzugefügt haben, können Sie sie mit einem setMap nur ein- oder ausblenden:

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

Sehr interessant .. So schaltet Google Maps zwischen Straßen/Gelände/Satellit ein/aus? –

+0

Interne Google Maps Code wurde verschleiert, es ist schwer zu sagen. –

+0

Danke. Gibt es neben der API-Referenz noch weitere Dokumentation zu "OverlayView"? Irgendwas mit anderen Beispielen? Ich bin neugierig, ob es andere Möglichkeiten gibt, die ich verwenden könnte, an die ich nicht denke. –