caseycesari / GeoJSON.js

Turn your geo data into GeoJSON. For Node.js and the browser.
MIT License
281 stars 57 forks source link

Unable to overwrite isGeometryValid function. #50

Open hparkertt opened 5 years ago

hparkertt commented 5 years ago

Running this in NodeJS, I seem to be unable to overwrite this function to provide a custom implementation (as suggested by the comment). Here is a snippet of what I'm trying to do:

function translate(json) {
  GeoJSON.isGeometryValid = GJV.isGeometryObject;
  return GeoJSON.parse(json, { Point: 'coords', doThrows: { invalidGeometry: true } } );
}

This appears to be a scoping issue. You can set the function on the GeoJSON object, but that does not change the function used internally. I've tested this with a few console.log statements. For example:

function translate(json) {
  GeoJSON.isGeometryValid = GJV.isGeometryObject;
  console.log(GeoJSON.isGeometryValid); // displays the GJV.isGeometryObject function
  return GeoJSON.parse(json, { Point: 'coords', doThrows: { invalidGeometry: true } } );
}

In geojson.js:

...
GeoJSON.parse = function(objects, params, callback) {
  ...
  console.log(GeoJSON.isGeometryValid); // displays the original GeoJSON.isGeometryValid function
  geomAttrs.length = 0;
  ...
}

Maybe the isGeometryValid function should be included in the GeoJSON.defaults object, allowing for it to be overwritten as part of the params parameter?

hparkertt commented 5 years ago

Hi @caseycesari , have you had a chance to look over this yet?

caseycesari commented 5 years ago

Hi @hparkertt. Thanks for the ping. I haven't had a chance yet. Realistically, I'm hoping to wrap up all the open PRs and issues by the end of the year.

hparkertt commented 4 years ago

Hey @caseycesari , just checking in again. Let me know if you need anything!

hparkertt commented 4 years ago

Hi @caseycesari , any word on this?

caseycesari commented 4 years ago

Hello @hparkertt Many apologies for the delay. Truly trying to get to this soon, and make a release.