document.write('<link rel="stylesheet" href="http://flowcoder.com/stylesheets/pygment_trac.css" />');
document.write('<link rel="stylesheet" href="http://flowcoder.com/stylesheets/embed.css" />');
document.write('<div class="flowcoder_post flowcoder_clearfix">');
document.write('<div class="flowcoder_posttitle"><a href=\"http://flowcoder.com/12\">Normalized searches from both Google Maps and Google Ajax APIs<\/a></div>');
document.write('<div class="flowcoder_postbody flowcoder_syntax"><div class=\"highlight\"><pre><span class=\"c1\">// custom geocoder which calls both Google maps geocoder and Google Ajax local search apis<\/span>\n<span class=\"c1\">// returns normalized result set<\/span>\n<span class=\"c1\">// use like so:<\/span>\n<span class=\"c1\">//   MyApp.geocoder.getLocations(&#39;1060 W Addison St, Chicago, IL&#39;, function (results) {<\/span>\n<span class=\"c1\">//     // results is an array of result objects pulled from both Google Maps and Google Ajax APIS<\/span>\n<span class=\"c1\">//     // with normalized properties<\/span>\n<span class=\"c1\">//   });<\/span>\n<span class=\"c1\">// Uses jQuery&#39;s $.map() and $.merge() functions<\/span>\n<span class=\"nx\">MyApp<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{};<\/span> <span class=\"c1\">// namespace for app<\/span>\n<span class=\"nx\">MyApp<\/span><span class=\"p\">.<\/span><span class=\"nx\">geocoder<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\n\n	<span class=\"nx\">getLocations<\/span><span class=\"o\">:<\/span> <span class=\"kd\">function<\/span> <span class=\"p\">(<\/span><span class=\"nx\">query<\/span><span class=\"p\">,<\/span> <span class=\"nx\">onComplete<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>	\n		<span class=\"kd\">var<\/span> <span class=\"nx\">geocoder<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">GClientGeocoder<\/span><span class=\"p\">();<\/span>\n		<span class=\"kd\">var<\/span> <span class=\"nx\">found<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[];<\/span>				\n		\n		<span class=\"c1\">// getLocations from geocoder<\/span>\n		<span class=\"nx\">geocoder<\/span><span class=\"p\">.<\/span><span class=\"nx\">getLocations<\/span><span class=\"p\">(<\/span><span class=\"nx\">query<\/span><span class=\"p\">,<\/span> <span class=\"kd\">function<\/span> <span class=\"p\">(<\/span><span class=\"nx\">response<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n			<span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"nx\">response<\/span><span class=\"p\">.<\/span><span class=\"nx\">Status<\/span><span class=\"p\">.<\/span><span class=\"nx\">code<\/span> <span class=\"o\">==<\/span> <span class=\"mi\">200<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n				<span class=\"nx\">found<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">$<\/span><span class=\"p\">.<\/span><span class=\"nx\">map<\/span><span class=\"p\">(<\/span><span class=\"nx\">response<\/span><span class=\"p\">.<\/span><span class=\"nx\">Placemark<\/span><span class=\"p\">,<\/span> <span class=\"kd\">function<\/span> <span class=\"p\">(<\/span><span class=\"nx\">n<\/span><span class=\"p\">,<\/span> <span class=\"nx\">i<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n					<span class=\"kd\">var<\/span> <span class=\"nx\">obj<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{};<\/span>\n					<span class=\"nx\">obj<\/span><span class=\"p\">.<\/span><span class=\"nx\">title<\/span> <span class=\"o\">=<\/span> <span class=\"kc\">null<\/span><span class=\"p\">;<\/span>\n					<span class=\"nx\">obj<\/span><span class=\"p\">.<\/span><span class=\"nx\">address<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">n<\/span><span class=\"p\">.<\/span><span class=\"nx\">address<\/span><span class=\"p\">;<\/span>\n					<span class=\"nx\">obj<\/span><span class=\"p\">.<\/span><span class=\"nx\">accuracy<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">n<\/span><span class=\"p\">.<\/span><span class=\"nx\">AddressDetails<\/span><span class=\"p\">.<\/span><span class=\"nx\">Accuracy<\/span><span class=\"p\">;<\/span>\n					<span class=\"nx\">obj<\/span><span class=\"p\">.<\/span><span class=\"nx\">lat<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">n<\/span><span class=\"p\">.<\/span><span class=\"nx\">Point<\/span><span class=\"p\">.<\/span><span class=\"nx\">coordinates<\/span><span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">];<\/span>\n					<span class=\"nx\">obj<\/span><span class=\"p\">.<\/span><span class=\"nx\">lng<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">n<\/span><span class=\"p\">.<\/span><span class=\"nx\">Point<\/span><span class=\"p\">.<\/span><span class=\"nx\">coordinates<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">];<\/span>\n					<span class=\"nx\">obj<\/span><span class=\"p\">.<\/span><span class=\"nx\">source<\/span> <span class=\"o\">=<\/span> <span class=\"s1\">&#39;geocoder&#39;<\/span><span class=\"p\">;<\/span>\n					<span class=\"k\">return<\/span> <span class=\"nx\">obj<\/span><span class=\"p\">;<\/span>\n				<span class=\"p\">});<\/span>\n			<span class=\"p\">}<\/span>\n		\n			<span class=\"c1\">// get additional locations from localSearch<\/span>\n			<span class=\"kd\">var<\/span> <span class=\"nx\">localSearch<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">google<\/span><span class=\"p\">.<\/span><span class=\"nx\">search<\/span><span class=\"p\">.<\/span><span class=\"nx\">LocalSearch<\/span><span class=\"p\">();<\/span>\n			<span class=\"nx\">localSearch<\/span><span class=\"p\">.<\/span><span class=\"nx\">setNoHtmlGeneration<\/span><span class=\"p\">();<\/span>	\n			<span class=\"nx\">localSearch<\/span><span class=\"p\">.<\/span><span class=\"nx\">setResultSetSize<\/span><span class=\"p\">(<\/span><span class=\"nx\">GSearch<\/span><span class=\"p\">.<\/span><span class=\"nx\">LARGE_RESULTSET<\/span><span class=\"p\">);<\/span>\n			<span class=\"nx\">localSearch<\/span><span class=\"p\">.<\/span><span class=\"nx\">setSearchCompleteCallback<\/span><span class=\"p\">(<\/span><span class=\"k\">this<\/span><span class=\"p\">,<\/span> <span class=\"nx\">MyApp<\/span><span class=\"p\">.<\/span><span class=\"nx\">geocoder<\/span><span class=\"p\">.<\/span><span class=\"nx\">processLocalSearchResult<\/span><span class=\"p\">,<\/span> <span class=\"p\">[<\/span><span class=\"nx\">localSearch<\/span><span class=\"p\">,<\/span> <span class=\"nx\">found<\/span><span class=\"p\">,<\/span> <span class=\"nx\">onComplete<\/span><span class=\"p\">]);<\/span>\n			<span class=\"nx\">localSearch<\/span><span class=\"p\">.<\/span><span class=\"nx\">execute<\/span><span class=\"p\">(<\/span><span class=\"nx\">query<\/span><span class=\"p\">);<\/span>\n		<span class=\"p\">});<\/span>		\n	<span class=\"p\">},<\/span>\n\n	<span class=\"nx\">processLocalSearchResult<\/span><span class=\"o\">:<\/span> <span class=\"kd\">function<\/span> <span class=\"p\">(<\/span><span class=\"nx\">ls<\/span><span class=\"p\">,<\/span> <span class=\"nx\">found<\/span><span class=\"p\">,<\/span> <span class=\"nx\">onComplete<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n		<span class=\"kd\">var<\/span> <span class=\"nx\">results<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">$<\/span><span class=\"p\">.<\/span><span class=\"nx\">merge<\/span><span class=\"p\">(<\/span><span class=\"nx\">found<\/span><span class=\"p\">,<\/span> \n			<span class=\"nx\">$<\/span><span class=\"p\">.<\/span><span class=\"nx\">map<\/span><span class=\"p\">(<\/span><span class=\"nx\">ls<\/span><span class=\"p\">.<\/span><span class=\"nx\">results<\/span><span class=\"p\">,<\/span> <span class=\"kd\">function<\/span> <span class=\"p\">(<\/span><span class=\"nx\">n<\/span><span class=\"p\">,<\/span><span class=\"nx\">i<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n				<span class=\"kd\">var<\/span> <span class=\"nx\">obj<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{};<\/span>\n				<span class=\"nx\">obj<\/span><span class=\"p\">.<\/span><span class=\"nx\">title<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">n<\/span><span class=\"p\">.<\/span><span class=\"nx\">titleNoFormatting<\/span><span class=\"p\">;<\/span>\n				<span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"nx\">n<\/span><span class=\"p\">.<\/span><span class=\"nx\">addressLines<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n					<span class=\"nx\">obj<\/span><span class=\"p\">.<\/span><span class=\"nx\">address<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">n<\/span><span class=\"p\">.<\/span><span class=\"nx\">addressLines<\/span><span class=\"p\">.<\/span><span class=\"nx\">join<\/span><span class=\"p\">(<\/span><span class=\"s1\">&#39;, &#39;<\/span><span class=\"p\">);<\/span>\n				<span class=\"p\">}<\/span>\n				<span class=\"nx\">obj<\/span><span class=\"p\">.<\/span><span class=\"nx\">accuracy<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">n<\/span><span class=\"p\">.<\/span><span class=\"nx\">accuracy<\/span><span class=\"p\">;<\/span>\n				<span class=\"nx\">obj<\/span><span class=\"p\">.<\/span><span class=\"nx\">lat<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">n<\/span><span class=\"p\">.<\/span><span class=\"nx\">lat<\/span><span class=\"p\">;<\/span>\n				<span class=\"nx\">obj<\/span><span class=\"p\">.<\/span><span class=\"nx\">lng<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">n<\/span><span class=\"p\">.<\/span><span class=\"nx\">lng<\/span><span class=\"p\">;<\/span>\n				<span class=\"nx\">obj<\/span><span class=\"p\">.<\/span><span class=\"nx\">source<\/span> <span class=\"o\">=<\/span> <span class=\"s1\">&#39;local search&#39;<\/span><span class=\"p\">;<\/span>\n				<span class=\"k\">return<\/span> <span class=\"nx\">obj<\/span><span class=\"p\">;<\/span>\n			<span class=\"p\">})<\/span>\n		<span class=\"p\">);<\/span>\n		<span class=\"nx\">onComplete<\/span><span class=\"p\">.<\/span><span class=\"nx\">call<\/span><span class=\"p\">(<\/span><span class=\"k\">this<\/span><span class=\"p\">,<\/span> <span class=\"nx\">results<\/span><span class=\"p\">);<\/span>\n	<span class=\"p\">}<\/span>\n<span class=\"p\">};<\/span>\n<\/pre><\/div>\n</div>');
document.write('<div class="flowcoder_bottombar flowcoder_clearfix">');
document.write('<div class="flowcoder_postedby">Posted by <a href=\"http://flowcoder.com/gbuesing\">gbuesing<\/a> on <a href=\"http://flowcoder.com/\">Flowcoder<\/a></div>');
document.write('<div class="flowcoder_viewraw"><a href=\"http://flowcoder.com/12.txt\">view raw<\/a></div>');
document.write('</div></div>');
