我找到了使用以下方法设置标记可见性的方法:
// 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>
答案 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