node-where
node-where copied to clipboard
New feature proposal - search by co-ordinates
Implementation for Feature Proposal #3
- Support for search using coordinates.
Usage:
where.is('-80.21, 21.32', function(err, result) {
if (result) {
console.log('Address: ' + result.get('address'));
console.log('Street Number: ' + result.get('streetNumber'));
console.log('Street: ' + result.get('street'));
console.log('Full Street: ' + result.get('streetAddress'));
console.log('City: ' + result.get('city'));
console.log('State / Region: ' + result.get('region'));
console.log('State / Region Code: ' + result.get('regionCode'));
console.log('Zip: ' + result.get('postalCode'));
console.log('Country: ' + result.get('country'));
console.log('Country Code: ' + result.get('countryCode'));
console.log('Lat: ' + result.get('lat'));
console.log('Lng: ' + result.get('lng'));
}
});
Tests:
it('geolocates co-ordinates', function(done) {
var result = where.is('42.3466764,-71.0972178', function(err, result) {
expect(err).to.equal(null);
expect(result.get('address')).to.equal('24 Yawkey Way, Boston, MA, 02215, US');
expect(result.get('streetNumber')).to.equal('24');
expect(result.get('street')).to.equal('Yawkey Way');
expect(result.get('streetAddress')).to.equal('24 Yawkey Way');
expect(result.get('city')).to.equal('Boston');
expect(result.get('region')).to.equal('Massachusetts');
expect(result.get('regionCode')).to.equal('MA');
expect(result.get('postalCode')).to.equal('02215');
expect(result.get('country')).to.equal('United States');
expect(result.get('countryCode')).to.equal('US');
expect(result.get('lat')).to.equal(42.3466214);
expect(result.get('lng')).to.equal(-71.097143);
done();
});
});
Test Results:
$ npm test
> [email protected] test /private/var/www/node-where
> mocha test/test.js
where.is
✓ returns an empty Result if given no address
✓ geolocates an IPv4 address (276ms)
✓ geolocates a postal address (161ms)
✓ geolocates a landmark (77ms)
✓ geolocates co-ordinates (85ms)
5 passing (613ms)
@venables what do you think? Let me know if you need any changes.