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)
必须恢复其中一条路径,以便在不同方向绘制多边形,例如:
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.如果所选点的最终结果不为零,则浏览器填充该区域.如果最终结果为零,则浏览器不会填充它.
因此,如果您在"洞"中拾取点,结果将为零,并且区域将不会被填充.