我想用JavaScriptAPIv3创建一个甜甜圈(里面的空间像个洞)

我想用JavaScriptAPIv3创建一个甜甜圈(里面的空间像个洞),javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,我想在JavaScriptGoogleAPIv3中创建一个漏洞,所以我开始学习GoogleMapAPIv3。但是代码正在渲染整个区域。这是我的Javascript代码 (function() { window.onload = function() { // Creating a map var options = { zoom: 6, center: new google.maps.LatLng(36.5,

我想在JavaScriptGoogleAPIv3中创建一个漏洞,所以我开始学习GoogleMapAPIv3。但是代码正在渲染整个区域。这是我的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
        }); 
    };
})();

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

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)
];
我的假设是,原因是SVG或画布如何呈现闭合循环。如果我没有错的话,解释就在于非零绕组规则

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

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


所以,如果你在“洞”中拾取点,结果将为零,面积将不会被填充。

太棒了,请你也解释一下好吗。@莫希特:希望这个解释有帮助。是的,它当然也帮助了我,也将帮助其他人理解,因为它不在书中,但我认为有些东西只是通过经验传授的,再次感谢。