Google map API的地址解析服务目前是不收费的,可以将详细的地址转化成经纬度。
测试HTML文件如下:
<!DOCTYPE html> <html> <head> <meta name="viewport" content="initial-scale=1.0, user-scalable=no"/> <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> <script type="text/javascript"> var geocoder; function initialize() { geocoder = new google.maps.Geocoder(); } function codeAddress() { var address = document.getElementById("address").value; geocoder.geocode( { 'address': address}, function(results, status) { if (status == google.maps.GeocoderStatus.OK) { alert(results[0].geometry.location); } else { alert("Geocode was not successful for the following reason: " + status); } }); } </script> </head> <body onload="initialize()"> <div> <input id="address" type="textbox" value="Sydney, NSW"> <input type="button" value="Geocode" onclick="codeAddress()"> </div> </body> </html>
不过这都依赖于Google的网上服务接口的支持,如果哪天Google退出中国市场或者有其他缘由不再将这些服务接口开放了,就没办法了。
再就是Google对该函数进行了速度以及数量限制,以下是Google上的说明:
Google Geocoding API 的使用有限制,即,每天 2,500 个地理位置查询请求。(Google Maps API Premier 用户每天最多可执行 100,000 个请求。)强制执行此限制是为了防止滥用和/或重复使用 Google Geocoding API。以后可能对此限制进行更改,而无需另行通知。此外,我们还强制设定了请求速率限制,以防滥用此服务。如果您超过了 24 小时的限制或者滥用此服务,Google Geocoding API 可能会暂停为您服务。如果您继续无视这个限制,将会阻止您对 Google Geocoding API 的访问。
我试着从后台提取了批量的地址信息,使用for循环进行批量解析,发现最多只解析了11个地址,其他的都没有解析。所以使用的时候解析单个地址是没有问题的,批量解析的话...。。。