15 minlesson

Geocoding Fundamentals

Geocoding Fundamentals

Geocoding converts addresses to geographic coordinates (latitude/longitude). Reverse geocoding does the opposite.

Forward Geocoding

Address → Coordinates

1"123 Main St, New York, NY 10001"
2
3{ lat: 40.7484, lng: -73.9967 }

Use cases:

  • Plot customer locations on maps
  • Calculate delivery distances
  • Verify address existence

Reverse Geocoding

Coordinates → Address

1{ lat: 40.7484, lng: -73.9967 }
2
3"123 Main St, New York, NY 10001"

Use cases:

  • Mobile app location sharing
  • GPS coordinate conversion
  • Location-based services

Free Geocoding APIs

ServiceRate LimitKey Required
Nominatim1/secNo
GeoNames2000/hrUsername
OpenCage2500/dayYes

Using Nominatim

javascript
1async function geocode(address) {
2 const url = new URL('https://nominatim.openstreetmap.org/search');
3 url.searchParams.set('q', address);
4 url.searchParams.set('format', 'json');
5 url.searchParams.set('limit', '1');
6
7 const response = await fetch(url, {
8 headers: { 'User-Agent': 'MyApp/1.0' }
9 });
10
11 const data = await response.json();
12
13 if (data.length === 0) return null;
14
15 return {
16 lat: parseFloat(data[0].lat),
17 lng: parseFloat(data[0].lon),
18 displayName: data[0].display_name
19 };
20}

Confidence Scores

Geocoding results include confidence indicators:

MetricMeaning
importance0-1 relevance score
classPlace type (building, road)
typeSpecific type (house, street)
javascript
1function isHighConfidence(result) {
2 return result.importance > 0.6 &&
3 ['building', 'house'].includes(result.type);
4}

Best Practices

  1. Normalize addresses first - Standardize before geocoding
  2. Cache results - Coordinates rarely change
  3. Handle failures - Graceful fallback
  4. Respect rate limits - Don't get blocked
  5. Validate results - Check confidence scores
Geocoding Fundamentals - Anko Academy