Как настроить видимость многоугольника с помощью API Google версии 3? - PullRequest
9 голосов
/ 01 декабря 2011

Я нашел способ установить видимость маркера с помощью следующего:

            // 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);

Теперь, как бы я сделал эту форму невидимой?

Моя ситуация в том, что у меня есть флажок, где пользователь проверяет, видеть или не видеть многоугольник. В первый раз, когда это будет проверено, я создам многоугольник, но позже я просто хочу, чтобы форма многоугольника была видимой или нет.

Я конвертирую приложение Virtual Earth, где я мог бы просто «показать» или «скрыть» слой с многоугольником на нем, но я не могу найти что-то, что могло бы помочь трюку с Google API версии 3, используя JavaScript.

Ответы [ 5 ]

8 голосов
/ 01 декабря 2011

вы можете сделать это, если вы установите нулевые значения обводки и заполняемости и сбросить полигон на карту.

вот небольшой взлом прототипа 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 ()

наслаждаться!

2 голосов
/ 27 мая 2015
    if (BuyersEdge3.map)
    {
        BuyersEdge3.setMap(null);
    } else {
        BuyersEdge3.setMap(map);
    }
2 голосов
/ 23 марта 2015

Вы можете использовать:

BuyersEdge3.setOptions({visible:false});
0 голосов
/ 14 мая 2018

Согласно документации GMAP POLYGON GMAP Polygon имеет функцию setVisible (), поэтому вы можете использовать ее.

myPolygon.setVisible(false); // to hide
myPolygon.setVisible(true); // to show
0 голосов
/ 07 января 2013

Это Моя идея, работает на Моем сайте.

    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);}
  });
  }  
...