Skip to content

getDistanceFromLine is returning NaN #298

@redcic75

Description

@redcic75

Hello @manuelbieh ,

I've just noticed that the fix you've commited after issue #227 and pushed does not deal with all the problematic cases. When we call getDistanceFromLine we still get NaN when point === startLine and when startLine === endLine.

This fix in getDistanceFromLine.ts should correct this issue:

    if (d1 === 0 || d2 === 0) {
        // point located at the exact same place as lineStart or lineEnd
        return 0;
    }
    if (d3 === 0) {
        return d1; // lineStart and lineEnd are the same - return point-to-point distance
    }

I've written the following test. They fail with the current version of the code but they pass with the above fix:

   it('https://github.com/manuelbieh/geolib/issues/227 - Point === startLine', () => {
        expect(
            getDistanceFromLine(
                {
                    latitude: 53,
                    longitude: 5,
                },
                {
                    latitude: 53,
                    longitude: 5,
                },
                {
                    latitude: 53,
                    longitude: 6,
                }
            )
        ).toEqual(0);
    });

    // The test below does not fail but it's by accident.
    it('https://github.com/manuelbieh/geolib/issues/227 - Point === endLine', () => {
        expect(
            getDistanceFromLine(
                {
                    latitude: 53,
                    longitude: 5,
                },
                {
                    latitude: 53,
                    longitude: 6,
                },
                {
                    latitude: 53,
                    longitude: 5,
                }
            )
        ).toEqual(0);
    });

    it('https://github.com/manuelbieh/geolib/issues/227 - startLine === endLine', () => {
        expect(
            getDistanceFromLine(
                {
                    latitude: 53,
                    longitude: 6,
                },
                {
                    latitude: 53,
                    longitude: 5,
                },
                {
                    latitude: 53,
                    longitude: 5,
                }
            )
        ).not.toBeNaN();
    });

I don't have the access right to push this modification on a new branch on your repo.

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