我想用Javascript API V3创建一个甜甜圈(里面的空白就像一个洞)

Moh*_*hit 5 javascript google-maps google-maps-api-3

我想在我的Javascript Google API V3中创建一个漏洞,所以我按照Beginning Google Map API V3开始.但代码正在渲染整个区域.这是我的Javascript代码.

(function() {
    window.onload = function() {
        // Creating a map
        var options = {
            zoom: 6,
            center: new google.maps.LatLng(36.5, -79.8),
            mapTypeId: google.maps.MapTypeId.ROADMAP
        };
        var map = new google.maps.Map(document.getElementById('map'), options);

        // Creating an array with the points for the outer polygon
        var polyOuter = [
            new google.maps.LatLng(37.303, -81.256),
            new google.maps.LatLng(37.303, -78.333),
            new google.maps.LatLng(35.392, -78.333),
            new google.maps.LatLng(35.392, -81.256)
        ];

        // Creating an array with the points for the inner polygon
        var polyInner = [
            new google.maps.LatLng(36.705, -80.459),
            new google.maps.LatLng(36.705, -79),
            new google.maps.LatLng(35.9, -79),
            new google.maps.LatLng(35.9, -80.459)
        ];

        var points = [polyOuter, polyInner];

        // Creating the polygon
        var polygon = new google.maps.Polygon
        ({
            paths: points,
            map: map,
            strokeColor: '#ff0000',
            strokeOpacity: 0.6,
            strokeWeight: 3,
            fillColor: '#FF0000',
            fillOpacity: 0.35
        }); 
    };
})();
Run Code Online (Sandbox Code Playgroud)

Ant*_*vić 5

必须恢复其中一条路径,以便在不同方向绘制多边形,例如:

var polyInner = [
    new google.maps.LatLng(35.9, -80.459),
    new google.maps.LatLng(35.9, -79),
    new google.maps.LatLng(36.705, -79),
    new google.maps.LatLng(36.705, -80.459)
];
Run Code Online (Sandbox Code Playgroud)

我的假设是原因是SVG或canvas如何呈现闭环.如果我没有错,解释就在于非零绕组规则.请参阅维基百科的说明.

顺时针绘制外部路径,逆时针绘制内部路径.

将计数器设置为零.在对象区域中选取一个点,并在对象空间外的方向上绘制一条线.如果线穿过顺时针路径,则添加一个.如果线交叉逆时针路径段,则减1.如果所选点的最终结果不为零,则浏览器填充该区域.如果最终结果为零,则浏览器不会填充它.

因此,如果您在"洞"中拾取点,结果将为零,并且区域将不会被填充.