Skip to content

Wicket with non-legacy versions of Leaflet (version 1.0 onwards) renders holes for overlapping polygons #151

@ireneyiu

Description

@ireneyiu

Summary

Using Wicket with Leaflet versions 1.0 and onwards does not properly render islands or rings in a WKT multi-polygon (example WKT here). When there is overlap, the area is rendered as a hole.

This is not reproducible in the Wicket leaflet sandbox since it uses the legacy version of Leaflet (0.7.7). When I use the legacy version of Leaflet locally, the issue goes away for me.

This issue is similar to the one reported in Leaflet, but I have not been able to fix by specifying the fillRule as nonzero. Is this perhaps an issue with how Wicket is parsing the data for Leaflet?

Code

import React, { useEffect, useRef } from 'react';
import L from 'leaflet';
import Wkt from 'wicket/wicket-leaflet';

const wkt = new Wkt.Wkt();
const map = L.map('map');
const tileLayer = L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png');
tileLayer.addTo(map);

wkt.read(wktString); // multipolygon string
const obj = wkt.toObject();
obj.addTo(map);
map.fitBounds(obj.getBounds());

Expected behavior

Screen Shot 2021-01-21 at 11 45 36 AM

Actual

Screen Shot 2021-01-21 at 11 42 41 AM

Technologies

wicket: 1.3.6
leaflet: 1.5.1

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions