2012-12-04 34 views
7

这是关于谷歌地图API第3版:通过API自定义Google地图图层?

当你绘制各种PolylinesPolygonsMapLabels或任何自定义谷歌地图的其他覆盖物元件的,它借鉴他们在mapPane。是否有可能以某种方式创建多个自定义图层,您可以在上面绘制Overlay对象,然后轻松启用/禁用(显示/隐藏)这些图层?

我看到这里图层文件:https://developers.google.com/maps/documentation/javascript/layers

但没有关于自定义层。

回答

6

您可以创建自定义OverlayView做到这一点:

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; 

然后,一旦你加入到覆盖LayerOverlay,您可以显示或仅与一个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

很有意思.. 。Google Maps如何在街道/地形/卫星之间切换? –

+0

内部Google地图代码被混淆了,很难说清楚。 –

+0

谢谢。除了API参考之外,还有其他关于'OverlayView'的文档吗?任何与其他例子?我很好奇,如果有其他方式可以使用,我不会想到。 –

相关问题