Conversion between addresses and geographic coordinates by Google Geocoding API
2018-09-11 ONE NET WIKI
Geocoding is the process of converting addresses (like "1600 Amphitheatre Parkway, Mountain View, CA") into geographic coordinates (like latitude 37.423021 and longitude -122.083739), which you can use to place markers on a map, or position the map.
Reverse geocoding is the process of converting geographic coordinates into a human-readable address.
In order to realize the conversion between addresses and geographic coordinates, what we can use is:
Bing Maps Geocode
Cloudmade Geocoding
Data Science Toolkit Geocoding
Google Geocoding
MapQuest Geocoding
Yahoo PlaceFinder API
Herein, we take Google Geocoding for example.
Step 1: Enable Geocoding API
1. Go to the Google Cloud Platform Console.
2. Click the Select a project button, then select the same project you set up for the Maps JavaScript API and click Open.
3. From the list of APIs on the Dashboard, look for Geocoding API.
If you see the API in the list, you’re all set. If the API is not listed, enable it:
At the top of the page, select ENABLE API to display the Library tab. Alternatively, from the left side menu, select Library.
Search for Geocoding API, then select it from the results list.
Select ENABLE.
When the process finishes, Geocoding API appears in the list of APIs on the Dashboard.
Step 2: Use Geocoding API
1. Static geocoding
This service is generally designed for geocoding static (known in advance) addresses for placement of application content on a map.
Request Format:
// outputFormat = json https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=YOUR_API_KEY // outputFormat = xml https://maps.googleapis.com/maps/api/geocode/xml?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=YOUR_API_KEY
address
The street address that you want to geocode, in the format used by the national postal service of the country concerned. Additional address elements such as business names and unit, suite or floor numbers should be avoided.
key
Your application's API key. This key identifies your application for purposes of quota management.
Response Format - json:
{ "results" : [ { "address_components" : [ { "long_name" : "1600", "short_name" : "1600", "types" : [ "street_number" ] }, { "long_name" : "Amphitheatre Pkwy", "short_name" : "Amphitheatre Pkwy", "types" : [ "route" ] }, { "long_name" : "Mountain View", "short_name" : "Mountain View", "types" : [ "locality", "political" ] }, { "long_name" : "Santa Clara County", "short_name" : "Santa Clara County", "types" : [ "administrative_area_level_2", "political" ] }, { "long_name" : "California", "short_name" : "CA", "types" : [ "administrative_area_level_1", "political" ] }, { "long_name" : "United States", "short_name" : "US", "types" : [ "country", "political" ] }, { "long_name" : "94043", "short_name" : "94043", "types" : [ "postal_code" ] } ], "formatted_address" : "1600 Amphitheatre Parkway, Mountain View, CA 94043, USA", "geometry" : { "location" : { "lat" : 37.4224764, "lng" : -122.0842499 }, "location_type" : "ROOFTOP", "viewport" : { "northeast" : { "lat" : 37.4238253802915, "lng" : -122.0829009197085 }, "southwest" : { "lat" : 37.4211274197085, "lng" : -122.0855988802915 } } }, "place_id" : "ChIJ2eUgeAK6j4ARbn5u_wAGqWA", "types" : [ "street_address" ] } ], "status" : "OK" }
Response Format - xml:
<GeocodeResponse> <status>OK</status> <result> <type>street_address</type> <formatted_address>1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA</formatted_address> <address_component> <long_name>1600</long_name> <short_name>1600</short_name> <type>street_number</type> </address_component> <address_component> <long_name>Amphitheatre Pkwy</long_name> <short_name>Amphitheatre Pkwy</short_name> <type>route</type> </address_component> <address_component> <long_name>Mountain View</long_name> <short_name>Mountain View</short_name> <type>locality</type> <type>political</type> </address_component> <address_component> <long_name>San Jose</long_name> <short_name>San Jose</short_name> <type>administrative_area_level_3</type> <type>political</type> </address_component> <address_component> <long_name>Santa Clara</long_name> <short_name>Santa Clara</short_name> <type>administrative_area_level_2</type> <type>political</type> </address_component> <address_component> <long_name>California</long_name> <short_name>CA</short_name> <type>administrative_area_level_1</type> <type>political</type> </address_component> <address_component> <long_name>United States</long_name> <short_name>US</short_name> <type>country</type> <type>political</type> </address_component> <address_component> <long_name>94043</long_name> <short_name>94043</short_name> <type>postal_code</type> </address_component> <geometry> <location> <lat>37.4217550</lat> <lng>-122.0846330</lng> </location> <location_type>ROOFTOP</location_type> <viewport> <southwest> <lat>37.4188514</lat> <lng>-122.0874526</lng> </southwest> <northeast> <lat>37.4251466</lat> <lng>-122.0811574</lng> </northeast> </viewport> </geometry> <place_id>ChIJ2eUgeAK6j4ARbn5u_wAGqWA</place_id> </result> </GeocodeResponse>
2. Dynamic geocoding
This service is designed to respond in real time to user input.
<!DOCTYPE html> <html> <head> <title>Geocoding Service</title> <meta name="viewport" content="initial-scale=1.0, user-scalable=no"> <meta charset="utf-8"> </head> <body> <div id="floating-panel"> <input id="address" type="textbox" value="Sydney, NSW"> <input id="submit" type="button" value="Geocode"> </div> <div id="map"></div> <script> function initMap() { var map = new google.maps.Map(document.getElementById('map'), { zoom: 8, center: {lat: -34.397, lng: 150.644} }); var geocoder = new google.maps.Geocoder(); document.getElementById('submit').addEventListener('click', function() { geocodeAddress(geocoder, map); }); } function geocodeAddress(geocoder, resultsMap) { var address = document.getElementById('address').value; geocoder.geocode({'address': address}, function(results, status) { if (status === 'OK') { resultsMap.setCenter(results[0].geometry.location); var marker = new google.maps.Marker({ map: resultsMap, position: results[0].geometry.location }); } else { alert('Geocode was not successful for the following reason: ' + status); } }); } </script> <script async defer src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap"> </script> </body> </html>
All Comments (0) |
---|
Web Development
-
Variable parsing in PHP
2018-09-01 480
-
Four ways to specify a string in PHP
2018-09-01 459
Web Management
-
How to change the password of Office 365 account in GoDaddy
2018-09-07 793
-
How to send an email via Gmail SMTP Server in Laravel
2018-09-04 6724
Web Security
-
How does an SSL certificate work?
2018-06-13 1276
-
What is the difference among DV, OV and EV SSL certificates?
2018-06-13 1527