9

これは Google Maps API v3 に関するものです。

カスタム Google マップでさまざまなPolylinesPolygonsMapLabelsまたはその他のオーバーレイ要素を描画すると、mapPane. オーバーレイ オブジェクトを描画できる複数のカスタム レイヤーを何らかの方法で作成し、それらのレイヤーを簡単に有効/無効 (表示/非表示) にすることはできますか?

ここにレイヤーに関するドキュメントがあります: https://developers.google.com/maps/documentation/javascript/layers

しかし、カスタムレイヤーについては何もありません。

4

1 に答える 1

9

それを行うためにカスタム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;

次に、オーバーレイを に追加すると、次の 1 つのみ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);
于 2012-12-04T14:11:37.963 に答える