通过API自定义Google地图图层?

Jak*_*son 9 google-maps google-maps-api-3

这与Google Maps API v3有关:

当你绘制各种Polylines,Polygons,MapLabels或在自定义谷歌地图的其他覆盖物元件的,它吸引过来的mapPane.是否有可能以某种方式创建多个自定义图层,您可以在其上绘制叠加对象,然后轻松启用/禁用(显示/隐藏)这些图层?

我在这里看到有关图层的文档:https://developers.google.com/maps/documentation/javascript/layers

但没有关于自定义图层.

Ale*_*uin 8

您可以创建自定义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;
Run Code Online (Sandbox Code Playgroud)

然后,一旦添加了叠加层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);
Run Code Online (Sandbox Code Playgroud)