目的:利用Google Map解析中文地址,获取某个地区的默认地理位置(经纬度)。
原理:使用GClientGeocoder对象。
环境:Google Maps Javascript API Version 2,IE6+,FF,Chrome。
核心方法:
/** * param address : 需要解析的地址, eg:'安徽省合肥市'.. * Author: xingxiudong[at]gmail.com */ function parseString2GLatLng(address) { var geocoder = new GClientGeocoder(); if (geocoder) { geocoder.getLatLng(address, function(point) { if (!point) { $("#console").append("解析/"" + address + "/"失败!").append("<br/>"); } else { $("#console").append("解析成功! " + address + " —— 纬度:" + point.lat() + " 经度:" + point.lng()).append("<br/>"); } }); } }
测试代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title> google地理解析</title> </head> <body> <div id="console"></div> <mce:script type="text/javascript" src="http://maps.google.com/maps?file=api&v=2" mce_src="http://maps.google.com/maps?file=api&v=2"></mce:script> <mce:script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js" mce_src="http://code.jquery.com/jquery-1.4.2.min.js"></mce:script> <mce:script type="text/javascript"><!-- parseString2GLatLng("中国"); parseString2GLatLng("中国安徽省"); parseString2GLatLng("安徽省"); parseString2GLatLng("安徽省芜湖市"); parseString2GLatLng("安徽省芜湖市繁昌县"); parseString2GLatLng("安徽省芜湖市繁昌县戴店村"); /** * param address : 需要解析的地址, eg:'安徽省合肥市'.. * Author: xingxiudong[at]gmail.com */ function parseString2GLatLng(address) { var geocoder = new GClientGeocoder(); if (geocoder) { geocoder.getLatLng(address, function(point) { if (!point) { $("#console").append("解析/"" + address + "/"失败!").append("<br/>"); } else { $("#console").append("解析成功! " + address + " —— 纬度:" + point.lat() + " 经度:" + point.lng()).append("<br/>"); } }); } } // --></mce:script> </body> </html>
测试结果:
解析成功! 中国 —— 纬度:35.86166 经度:104.195397
解析成功! 中国安徽省 —— 纬度:31.860611 经度:117.2847
解析成功! 安徽省 —— 纬度:31.860611 经度:117.2847
解析成功! 安徽省芜湖市 —— 纬度:31.33879 经度:118.385156
解析成功! 安徽省芜湖市繁昌县 —— 纬度:31.082814 经度:118.199484
解析成功! 安徽省芜湖市繁昌县戴店村 —— 纬度:31.125364 经度:118.208788
附:更多关于GeoCoding资料:http://code.google.com/intl/zh-CN/apis/maps/documentation/javascript/services.html#Geocoding