Improve Cesium ion's geocoder

Moving this issue from https://github.com/CesiumGS/cesium-ion-community/issues/342.

The geocoder tool is unable to find addresses that exist within Google maps, and yet is able to find addresses nearby. For example:

1300 Martin Luther King Jr Dr, Allentown PA, USA cannot be found, and no results are returned even from within the same city. This is the address of the county water filtration plant.

Here is an image of the returned results:

geocoder

1350 Martin Luther King Jr Dr, Allentown PA, USA does work with the GeoCoder as expected, and the autocomplete quickly identifies it.

This is only one example but I’ve encountered numerous other address omissions in long developed areas, is this due to incomplete data in the geocoder geoJSONs or is there a way to allow nearby number addresses to be included in search results if they are relevant. It seems to me that the search should be weighted country, state, street, number to provide the most accurate results given incomplete data in the database.

It would appear that the geocoder in Google Maps and Bing Maps will do some interpolation. Such as there is nothing between 1242 and 1300 Martin Luther King Jr Dr, Allentown PA, USA, however for any address number you type between those numbers it will yield a result that’s in between those 2 addresses.

I don’t know why 1350 shows up on the Cesium geocoder, there’s nothing at the address that I can tell. If the geocoder encounters an unknown address it seems to simply truncate the address to just the city,state,country level, not to the street address.

Even if there’s nothing on a steet block, what should occur is using the address range assigned to that street block to interpolate a location between the 2 ends.

en.wikipedia.org/wiki/Reverse_geocoding

Would be nice as well. Find out what’s nearby a certain location.