Google maps 将掩码应用于谷歌地图

Google maps 将掩码应用于谷歌地图,google-maps,google-maps-api-3,overlay,Google Maps,Google Maps Api 3,Overlay,我有一个使用谷歌地图Javascript API V3的网站。 我想通过在地图顶部放置半透明的颜色来突出感兴趣的区域,中间有一个洞。见附图 切口的位置可以在任何地方。我能够计算出剪切的像素(或lat/lng)坐标,但我正在努力解决的是如何最好地创建遮罩。我看过谷歌的图像平铺覆盖层和多边形,但看不到一个简单的方法来实现这一点。有人能提供一些关于最好的方法的建议吗 把它弄明白了。万一有人需要这么做 function MaskClass( map ){ //constants var

我有一个使用谷歌地图Javascript API V3的网站。 我想通过在地图顶部放置半透明的颜色来突出感兴趣的区域,中间有一个洞。见附图

切口的位置可以在任何地方。我能够计算出剪切的像素(或lat/lng)坐标,但我正在努力解决的是如何最好地创建遮罩。我看过谷歌的图像平铺覆盖层和多边形,但看不到一个简单的方法来实现这一点。有人能提供一些关于最好的方法的建议吗


把它弄明白了。万一有人需要这么做

function MaskClass( map ){

    //constants
    var MAP_MAX_LAT = 85;
    var MAP_MIN_LAT = -85;
    var MAP_MAX_LNG = 179;
    var MAP_MIN_LNG = -179;

    // Object initialisation - create 4 rectangles to mask off the area
    var rectangleInitialisationOptions = {
        map: map,
        fillColor: "#F00",
        fillOpacity: 0.3,
        strokeOpacity: 0,
        clickable: false
        };

    this.rectangle1 = new google.maps.Rectangle(rectangleInitialisationOptions);
    this.rectangle2 = new google.maps.Rectangle(rectangleInitialisationOptions);
    this.rectangle3 = new google.maps.Rectangle(rectangleInitialisationOptions);
    this.rectangle4 = new google.maps.Rectangle(rectangleInitialisationOptions);

    // Method to place the cut-out   
    this.setMask = function(boundsSouthWest, boundsNorthEast){

        var swLat = boundsSouthWest.lat();
        var swLng = boundsSouthWest.lng();
        var neLat = boundsNorthEast.lat();
        var neLng = boundsNorthEast.lng();

        this.rectangle1.setBounds(
            new google.maps.LatLngBounds(
                new google.maps.LatLng(neLat, MAP_MIN_LNG),
                new google.maps.LatLng(MAP_MAX_LAT, MAP_MAX_LNG)));

        this.rectangle2.setBounds(
            new google.maps.LatLngBounds(
                new google.maps.LatLng(MAP_MIN_LAT, MAP_MIN_LNG),
                new google.maps.LatLng(swLat, MAP_MAX_LNG)));

        this.rectangle3.setBounds(
            new google.maps.LatLngBounds(
                new google.maps.LatLng(swLat, MAP_MIN_LNG),
                new google.maps.LatLng(neLat, swLng)));

        this.rectangle4.setBounds(
            new google.maps.LatLngBounds(
                new google.maps.LatLng(swLat, neLng),
                new google.maps.LatLng(neLat, MAP_MAX_LNG)));

        this.setVisible(true);
    };

    // Method to show/hide the mask
    this.setVisible = function(visibility){
        this.rectangle1.setVisible(visibility);
        this.rectangle2.setVisible(visibility);
        this.rectangle3.setVisible(visibility);
        this.rectangle4.setVisible(visibility);
    };

}
要使用它

theMask = new MaskClass( referenceToYourMap );   //create mask

theMask.setMask(boundsSouthWest, boundsNorthEast);    //place mask somewhere

theMask.setVisible(false);    //hide mask

我知道这很晚了,但我没问题。我正在尝试让面具可以拖动,这会很有趣:)