如何使用Google的第3版API设置多边形的可见性?

时间:2011-11-30 22:54:45

标签: google-maps-api-3 polygon

我找到了使用以下方法设置标记可见性的方法:

            // create the marker 
            blueMarker = new google.maps.Marker({
                position: new google.maps.LatLng(33.514428, -112.29056534285377),
                draggable: true,
                raiseOnDrag: false,
                icon: './Images/blue3Marker.png',
                shapeType: 'BuyersEdgeArea',
                shapeID: '3'
            });

            // set the marker on the map
            blueMarker.setMap(map);

然后我使用blueMarker.setVisible(false)或blueMarker.setVisible(true)使其可见/不可见。

但是如何为多边形做同样的事情?

以下是我设置多边形的方法:

        BuyersEdge3 = new google.maps.Polygon({
            clickable: true,
            paths: BuyersEdgePath3,
            strokeColor: '#000000',
            strokeOpacity: 1,
            strokeWeight: 2,
            fillColor: ' #810541 ',
            fillOpacity: 0.35
        });

        // set the shape on the map
        BuyersEdge3.setMap(map);

现在我怎么能让这个形状不可见?

我的情况是我有一个复选框,用户检查是否看到多边形。第一次检查时,我将创建多边形,但随后的时间,我只想让多边形形状可见或不显示。

我正在转换一个虚拟地球应用程序,我可以在其中“显示”或“隐藏”包含多边形的图层,但我无法使用JavaScript找到针对Google API第3版的技巧。< / p>

5 个答案:

答案 0 :(得分:8)

如果将strokeOpacity和fillOpacity设置为零并将多边形重置为地图,则可以执行此操作。

这里有一个针对Polygon原型的小黑客(意味着你可以在所有Polygon对象中访问它),它将为你做那件事

// this is a visibility flag. don't change it manually
google.maps.Polygon.prototype._visible = true;

// this will save opacity values and set them to 0, and rebound the polygon to the map
google.maps.Polygon.prototype.hide = function(){
    if (this._visible) {
        this._visible = false;
        this._strokeOpacity = this.strokeOpacity;
        this._fillOpacity = this.fillOpacity;
        this.strokeOpacity = 0;
        this.fillOpacity = 0;
        this.setMap(this.map);
    }
}

// this will restore opacity values. and rebound the polygon to the map
google.maps.Polygon.prototype.show = function() {
    if (!this._visible) {
        this._visible = true;
        this.strokeOpacity = this._strokeOpacity;
        this.fillOpacity = this._fillOpacity;
        this.setMap(this.map);
    }
}

现在你可以买BuyersEdge3.hide()和BuyersEdge3.show()

享受!

答案 1 :(得分:2)

您可以使用:

BuyersEdge3.setOptions({visible:false});

答案 2 :(得分:2)

    if (BuyersEdge3.map)
    {
        BuyersEdge3.setMap(null);
    } else {
        BuyersEdge3.setMap(map);
    }

答案 3 :(得分:0)

这是我的想法,适用于我的网站。

    function drawPolygon(p){
if(window.poly)window.poly.setMap(null);
  var pp=[];
  for(var i=0;i<p.length;i+=2)
  {
    pp.push(new google.maps.LatLng(parseFloat(p[i+1]),parseFloat(p[i])));
  }

    window.poly=new google.maps.Polygon({
      paths: pp,
      strokeColor: "#FF0000",
      strokeOpacity: 0.8,
      strokeWeight: 2,
      fillColor: "#FF0000",
      fillOpacity: 0.1
    });

    window.poly.setMap(map);
    google.maps.event.addListener(map, 'zoom_changed', function() {
if (map.getZoom()>14) {window.poly.setMap(null);}
else {window.poly.setMap(map);}
  });
  }  

答案 4 :(得分:0)

根据文档GMAP POLYGON GMAP Polygon具有setVisible()函数,因此您可以使用它。

myPolygon.setVisible(false); // to hide
myPolygon.setVisible(true); // to show