<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>HavlenaBlog &#187; PHP 5</title>
	<atom:link href="http://www.havlena.net/blog/en/category/php-5/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.havlena.net/blog</link>
	<description>... o všem a všelijak</description>
	<lastBuildDate>Wed, 26 May 2010 00:18:27 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>GPS distance search via MySQL and PHP</title>
		<link>http://www.havlena.net/blog/en/hledani-vzdalenosti-gps-souradnic-v-mysql-a-php/</link>
		<comments>http://www.havlena.net/blog/en/hledani-vzdalenosti-gps-souradnic-v-mysql-a-php/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 14:01:09 +0000</pubDate>
		<dc:creator>Matouš Havlena</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP 5]]></category>
		<category><![CDATA[Tips and tricks]]></category>

		<guid isPermaLink="false">http://www.havlena.net/blog/?p=860</guid>
		<description><![CDATA[Do you have objects with GPS coordinates stored in your DB (if not, you can get GPS coordinates simply) and do you want to search among them on the basis of mutual distances? Yes? So it&#8217;s you who can appreciate following MySQL procedure.

We can start&#8230;
The sample is going to work with this table:
CREATE &#160;TABLE IF [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-917" title="GPS coordinates - sample on Google Maps" src="http://www.havlena.net/blog/wp-content/2009/11/gps-coordinates.jpg" alt="GPS souřadnice - ukázka na Google Maps" width="199" height="164" />Do you have <strong>objects with GPS coordinates stored in your DB</strong> (if not, <a href="http://www.havlena.net/blog/php-a-google-maps-jak-ziskat-gps-souradnice-pro-adresu/">you can get GPS coordinates simply</a>) and do you want to <strong>search among them on the basis of mutual distances</strong>? Yes? So it&#8217;s you who can appreciate following <strong>MySQL procedure</strong>.</p>
<p><span id="more-860"></span></p>
<h3>We can start&#8230;</h3>
<p>The sample is going to work with this table:</p>
<div class="codecolorer-container sql default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">CREATE</span> &nbsp;<span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #993333; font-weight: bold;">IF</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">EXISTS</span> <span style="color: #ff0000;">`buildings`</span> <span style="color: #66cc66;">&#40;</span><br />
<span style="color: #ff0000;">`building_id`</span> INT <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #993333; font-weight: bold;">AUTO_INCREMENT</span> <span style="color: #66cc66;">,</span><br />
<span style="color: #ff0000;">`building_street`</span> VARCHAR<span style="color: #66cc66;">&#40;</span>200<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #66cc66;">,</span><br />
<span style="color: #ff0000;">`building_street_nr`</span> VARCHAR<span style="color: #66cc66;">&#40;</span>20<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #66cc66;">,</span><br />
<span style="color: #ff0000;">`building_city`</span> VARCHAR<span style="color: #66cc66;">&#40;</span>200<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #66cc66;">,</span><br />
<span style="color: #ff0000;">`building_latitude`</span> VARCHAR<span style="color: #66cc66;">&#40;</span>30<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #66cc66;">,</span><br />
<span style="color: #ff0000;">`building_longitude`</span> VARCHAR<span style="color: #66cc66;">&#40;</span>30<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #66cc66;">,</span><br />
<span style="color: #993333; font-weight: bold;">PRIMARY</span> <span style="color: #993333; font-weight: bold;">KEY</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">`building_id`</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span></div></div>
<p>We will create the procedure called <code class="codecolorer text default"><span class="text">gpsdistance</span></code> with two input numbers <code class="codecolorer text default"><span class="text">mybuilding_id</span></code> and <code class="codecolorer text default"><span class="text">mydistance</span></code>.</p>
<div class="codecolorer-container sql default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">CREATE</span> PROCEDURE <span style="color: #ff0000;">`gpsdistance`</span> <span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">IN</span> mybuilding_id int<span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">IN</span> mydistance int<span style="color: #66cc66;">&#41;</span></div></div>
<p><code class="codecolorer text default"><span class="text">mybuilding_id</span></code> represents ID number of our base building in which surroundings we will search further buildings (which are situated inside the distance handed in the second parameter <code class="codecolorer text default"><span class="text">mydistance</span></code>) (in kilometers!).</p>
<p>Sequentially we will declare these internal variables:</p>
<ul>
<li><code class="codecolorer text default"><span class="text">mylon</span></code> &#8211; longitude of our base building</li>
<li><code class="codecolorer text default"><span class="text">mylat</span></code> &#8211; latitude of our base building</li>
<li><code class="codecolorer text default"><span class="text">lon1</span></code> &#8211; 1. longitude limit</li>
<li><code class="codecolorer text default"><span class="text">lon2</span></code> &#8211; 2. longitude limit</li>
<li><code class="codecolorer text default"><span class="text">lat1</span></code> &#8211; 1. latitude limit</li>
<li><code class="codecolorer text default"><span class="text">lat2</span></code> &#8211; 2. latitude limit</li>
</ul>
<p>Next command loads actual values of our base building into variables <code class="codecolorer text default"><span class="text">mylon</span></code> and <code class="codecolorer text default"><span class="text">mylat</span></code>:</p>
<div class="codecolorer-container sql default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SELECT</span> building_latitude<span style="color: #66cc66;">,</span> building_longitude <span style="color: #993333; font-weight: bold;">INTO</span> mylat<span style="color: #66cc66;">,</span> mylon <span style="color: #993333; font-weight: bold;">FROM</span> buildings <span style="color: #993333; font-weight: bold;">WHERE</span> building_id <span style="color: #66cc66;">=</span> mybuilding_id;</div></div>
<p>Follow calculating of limiting coordinates on the basis of <code class="codecolorer text default"><span class="text">mydistance</span></code>. Number 111 represents length of 1° of latitude in kilometres (69 miles). The meaning of formulas you can find in the original document (link below).</p>
<div class="codecolorer-container sql default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SET</span> lon1 <span style="color: #66cc66;">=</span> mylon<span style="color: #66cc66;">-</span>mydistance<span style="color: #66cc66;">/</span>abs<span style="color: #66cc66;">&#40;</span>cos<span style="color: #66cc66;">&#40;</span>radians<span style="color: #66cc66;">&#40;</span>mylat<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">*</span>111<span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #993333; font-weight: bold;">SET</span> lon2 <span style="color: #66cc66;">=</span> mylon<span style="color: #66cc66;">+</span>mydistance<span style="color: #66cc66;">/</span>abs<span style="color: #66cc66;">&#40;</span>cos<span style="color: #66cc66;">&#40;</span>radians<span style="color: #66cc66;">&#40;</span>mylat<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">*</span>111<span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #993333; font-weight: bold;">SET</span> lat1 <span style="color: #66cc66;">=</span> mylat<span style="color: #66cc66;">-</span><span style="color: #66cc66;">&#40;</span>mydistance<span style="color: #66cc66;">/</span>111<span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #993333; font-weight: bold;">SET</span> lat2 <span style="color: #66cc66;">=</span> mylat<span style="color: #66cc66;">+</span><span style="color: #66cc66;">&#40;</span>mydistance<span style="color: #66cc66;">/</span>111<span style="color: #66cc66;">&#41;</span>;</div></div>
<p>And engine of the whole sample is a select which searches buildings located from the base building up to the value of <code class="codecolorer text default"><span class="text">mydistance</span></code>. In addition this script returns column called <code class="codecolorer text default"><span class="text">distance</span></code> which represent real distance (in kilometres) from the base building. Number 6372.795 is earth radius in kilometres (3956 miles). Again, the meaning of formulas you can find in the original document (link below).</p>
<div class="codecolorer-container sql default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">SELECT</span> buildings<span style="color: #66cc66;">.*,</span> 6372<span style="color: #66cc66;">.</span>795 <span style="color: #66cc66;">*</span> 2 <span style="color: #66cc66;">*</span> ASIN<span style="color: #66cc66;">&#40;</span>SQRT<span style="color: #66cc66;">&#40;</span>POWER<span style="color: #66cc66;">&#40;</span>SIN<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>mylat<span style="color: #66cc66;">-</span>ABS<span style="color: #66cc66;">&#40;</span>building_latitude<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">*</span>pi<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">/</span>180<span style="color: #66cc66;">/</span>2<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> 2<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">+</span><br />
COS<span style="color: #66cc66;">&#40;</span>mylat <span style="color: #66cc66;">*</span> pi<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">/</span>180<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">*</span> COS<span style="color: #66cc66;">&#40;</span>ABS<span style="color: #66cc66;">&#40;</span>building_latitude<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">*</span> pi<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">/</span>180<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">*</span> POWER<span style="color: #66cc66;">&#40;</span>SIN<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>mylon <span style="color: #66cc66;">-</span> building_longitude<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">*</span> pi<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">/</span>180 <span style="color: #66cc66;">/</span> 2<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> 2<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> distance<br />
<span style="color: #993333; font-weight: bold;">FROM</span> buildings <span style="color: #993333; font-weight: bold;">WHERE</span> building_latitude <span style="color: #993333; font-weight: bold;">IS</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #993333; font-weight: bold;">AND</span> building_longitude <span style="color: #993333; font-weight: bold;">IS</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #993333; font-weight: bold;">AND</span><br />
building_longitude <span style="color: #993333; font-weight: bold;">BETWEEN</span> lon1 <span style="color: #993333; font-weight: bold;">AND</span> lon2 <span style="color: #993333; font-weight: bold;">AND</span> building_latitude <span style="color: #993333; font-weight: bold;">BETWEEN</span> lat1 <span style="color: #993333; font-weight: bold;">AND</span> lat2 <span style="color: #993333; font-weight: bold;">HAVING</span> distance <span style="color: #66cc66;">&lt;</span> mydistance <span style="color: #993333; font-weight: bold;">ORDER</span> <span style="color: #993333; font-weight: bold;">BY</span> distance <span style="color: #993333; font-weight: bold;">LIMIT</span> <span style="color: #cc66cc;">50</span>;</div></div>
<h3>Complete MySQL procedure</h3>
<p>Command <code class="codecolorer text default"><span class="text">DELIMITER //</span></code> set separator on two slashes. It&#8217;s happening because the default separator is semicolon. Semicolons are emerged inside the procedure and it would cause the fault during procedure creation. That&#8217;s why you should pay attention as long as you create procedure in phpMyAdmin (you will have to set separator different from semicolon &#8211; under the SQL command field).</p>
<pre>
<div class="codecolorer-container sql default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br /></div></td><td><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">DELIMITER <span style="color: #66cc66;">//</span><br />
<span style="color: #993333; font-weight: bold;">CREATE</span> PROCEDURE <span style="color: #ff0000;">`gpsdistance`</span> <span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">IN</span> mybuilding_id int<span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">IN</span> mydistance int<span style="color: #66cc66;">&#41;</span><br />
BEGIN<br />
declare mylon double;<br />
declare mylat double;<br />
declare lon1 float;<br />
declare lon2 float;<br />
declare lat1 float;<br />
declare lat2 float;<br />
<br />
<span style="color: #993333; font-weight: bold;">SELECT</span> building_latitude<span style="color: #66cc66;">,</span> building_longitude <span style="color: #993333; font-weight: bold;">INTO</span> mylat<span style="color: #66cc66;">,</span> mylon <span style="color: #993333; font-weight: bold;">FROM</span> buildings <span style="color: #993333; font-weight: bold;">WHERE</span> building_id <span style="color: #66cc66;">=</span> mybuilding_id;<br />
<br />
<span style="color: #993333; font-weight: bold;">SET</span> lon1 <span style="color: #66cc66;">=</span> mylon<span style="color: #66cc66;">-</span>mydistance<span style="color: #66cc66;">/</span>abs<span style="color: #66cc66;">&#40;</span>cos<span style="color: #66cc66;">&#40;</span>radians<span style="color: #66cc66;">&#40;</span>mylat<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">*</span>111<span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #993333; font-weight: bold;">SET</span> lon2 <span style="color: #66cc66;">=</span> mylon<span style="color: #66cc66;">+</span>mydistance<span style="color: #66cc66;">/</span>abs<span style="color: #66cc66;">&#40;</span>cos<span style="color: #66cc66;">&#40;</span>radians<span style="color: #66cc66;">&#40;</span>mylat<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">*</span>111<span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #993333; font-weight: bold;">SET</span> lat1 <span style="color: #66cc66;">=</span> mylat<span style="color: #66cc66;">-</span><span style="color: #66cc66;">&#40;</span>mydistance<span style="color: #66cc66;">/</span>111<span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #993333; font-weight: bold;">SET</span> lat2 <span style="color: #66cc66;">=</span> mylat<span style="color: #66cc66;">+</span><span style="color: #66cc66;">&#40;</span>mydistance<span style="color: #66cc66;">/</span>111<span style="color: #66cc66;">&#41;</span>;<br />
<br />
<span style="color: #993333; font-weight: bold;">SELECT</span> buildings<span style="color: #66cc66;">.*,</span> 6372<span style="color: #66cc66;">.</span>795 <span style="color: #66cc66;">*</span> 2 <span style="color: #66cc66;">*</span> ASIN<span style="color: #66cc66;">&#40;</span>SQRT<span style="color: #66cc66;">&#40;</span>POWER<span style="color: #66cc66;">&#40;</span>SIN<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>mylat<span style="color: #66cc66;">-</span>ABS<span style="color: #66cc66;">&#40;</span>building_latitude<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">*</span>pi<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">/</span>180<span style="color: #66cc66;">/</span>2<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> 2<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">+</span><br />
COS<span style="color: #66cc66;">&#40;</span>mylat <span style="color: #66cc66;">*</span> pi<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">/</span>180<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">*</span> COS<span style="color: #66cc66;">&#40;</span>ABS<span style="color: #66cc66;">&#40;</span>building_latitude<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">*</span> pi<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">/</span>180<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">*</span> POWER<span style="color: #66cc66;">&#40;</span>SIN<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>mylon <span style="color: #66cc66;">-</span> building_longitude<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">*</span> pi<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">/</span>180 <span style="color: #66cc66;">/</span> 2<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> 2<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> distance<br />
<span style="color: #993333; font-weight: bold;">FROM</span> buildings <span style="color: #993333; font-weight: bold;">WHERE</span> building_latitude <span style="color: #993333; font-weight: bold;">IS</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #993333; font-weight: bold;">AND</span> building_longitude <span style="color: #993333; font-weight: bold;">IS</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #993333; font-weight: bold;">AND</span><br />
building_longitude <span style="color: #993333; font-weight: bold;">BETWEEN</span> lon1 <span style="color: #993333; font-weight: bold;">AND</span> lon2 <span style="color: #993333; font-weight: bold;">AND</span> building_latitude <span style="color: #993333; font-weight: bold;">BETWEEN</span> lat1 <span style="color: #993333; font-weight: bold;">AND</span> lat2 <span style="color: #993333; font-weight: bold;">HAVING</span> distance <span style="color: #66cc66;">&lt;</span> mydistance <span style="color: #993333; font-weight: bold;">ORDER</span> <span style="color: #993333; font-weight: bold;">BY</span> distance <span style="color: #993333; font-weight: bold;">LIMIT</span> <span style="color: #cc66cc;">50</span>;<br />
<br />
END<span style="color: #66cc66;">//</span></div></td></tr></tbody></table></div>
</pre>
<h3>Calling the procedure in PHP</h3>
<p><strong>Very important</strong> is to know that you can call procedures <strong>only through MySQLi layer</strong> (which is object-oriented). The procedure can be call by this SQL command: <code class="codecolorer sql default"><span class="sql">call gpsdistance<span style="color: #66cc66;">&#40;</span>$mybuilding_id<span style="color: #66cc66;">,</span> $mydistance<span style="color: #66cc66;">&#41;</span></span></code>. Here is a short sample:</p>
<pre>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000088;">$link</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysqli_connect</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'localhost'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'db'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'user'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'passwd'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000088;">$link</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #990000;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Can't connect to MySQL Server. Errorcode: <span style="color: #009933; font-weight: bold;">%s</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> <span style="color: #990000;">mysqli_connect_error</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #990000;">exit</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span><br />
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysqli_query</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$link</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;call gpsdistance(<span style="color: #006699; font-weight: bold;">$mybuilding_id</span>, 5)&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$row</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysqli_fetch_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #339933;">...</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #990000;">mysqli_free_result</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #990000;">mysqli_close</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$link</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>
</pre>
<p>That&#8217;s all. I hope the article is useful for somebody <img src='http://www.havlena.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>Used literature</h3>
<ul>
<li>RUBIN, Alexander. Geo/Spatial Search with MySQL. Scribd [online]. 2008 [cit. 2009-11-04]. Accessible from WWW: &lt;<a href="http://www.scribd.com/doc/2569355/Geo-Distance-Search-with-MySQL">http://www.scribd.com/doc/2569355/Geo-Distance-Search-with-MySQL</a>&gt;.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.havlena.net/blog/en/hledani-vzdalenosti-gps-souradnic-v-mysql-a-php/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>PHP/Google Maps: How to get GPS coordinates for address</title>
		<link>http://www.havlena.net/blog/en/php-a-google-maps-jak-ziskat-gps-souradnice-pro-adresu/</link>
		<comments>http://www.havlena.net/blog/en/php-a-google-maps-jak-ziskat-gps-souradnice-pro-adresu/#comments</comments>
		<pubDate>Thu, 17 Sep 2009 22:43:39 +0000</pubDate>
		<dc:creator>Matouš Havlena</dc:creator>
				<category><![CDATA[PHP 5]]></category>
		<category><![CDATA[Tips and tricks]]></category>
		<category><![CDATA[csv]]></category>
		<category><![CDATA[geocoding]]></category>
		<category><![CDATA[google maps]]></category>
		<category><![CDATA[gps]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.havlena.net/blog/?p=807</guid>
		<description><![CDATA[This article contains code example of searching and saving GPS coordinates for addresses stored in the database. For this purpose we will use Google Maps API and Geocoding Service (Geocoding is process of converting addresses into geographic coordinates).
The geocoding service may only be used in conjunction with displaying results on a Google map.
Geocoding Service
Geocoding Service [...]]]></description>
			<content:encoded><![CDATA[<p>This article contains <strong>code example of searching and saving GPS coordinates for addresses stored in the database</strong>. For this purpose we will use <a href="http://code.google.com/apis/maps/">Google Maps API</a> and <strong><a href="http://code.google.com/apis/maps/documentation/geocoding/">Geocoding Service</a></strong> (Geocoding is process of converting addresses into geographic coordinates).<img title="More..." src="http://www.havlena.net/blog/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif" alt="" /><span id="more-807"></span></p>
<p>The geocoding service may only be used in conjunction with displaying results on a Google map.</p>
<h3>Geocoding Service</h3>
<p>Geocoding Service provides way to get geographic coordinates via an HTTP request. We must send a request to <a href="http://maps.google.com/maps/geo?">http://maps.google.com/maps/geo?</a> with several parameteres. We are interested in these parameters:</p>
<ul>
<li><code class="codecolorer text default"><span class="text">q</span></code> (required) &#8211; the address to which you want get coordinates</li>
<li><code class="codecolorer text default"><span class="text">key</span></code> (required) &#8211; your API key (you can obtain it <a href="http://code.google.com/apis/maps/">here</a>)</li>
<li><code class="codecolorer text default"><span class="text">sensor</span></code> (required) &#8211; <code class="codecolorer text default"><span class="text">true</span></code> if the request is sent from a device with location sensor, otherwise <code class="codecolorer text default"><span class="text">false</span></code></li>
<li><code class="codecolorer text default"><span class="text">output</span></code> (required) &#8211; the format of output (the options are <code class="codecolorer text default"><span class="text">xml</span></code>, <code class="codecolorer text default"><span class="text">kml</span></code>, <code class="codecolorer text default"><span class="text">csv</span></code> or <code class="codecolorer text default"><span class="text">json</span></code>)</li>
<li><code class="codecolorer text default"><span class="text">oe</span></code> (optional) &#8211; output encoding (It&#8217;s recommended set this parameter to <code class="codecolorer text default"><span class="text">utf8</span></code>)</li>
<li><a href="http://code.google.com/intl/cs-CZ/apis/maps/documentation/geocoding/#GeocodingRequests">&#8230;a další</a></li>
</ul>
<p>The input data should be encoded in <code class="codecolorer text default"><span class="text">utf-8</span></code>.</p>
<h4>CSV output format</h4>
<p>Output data can be generated in these formats:</p>
<ul>
<li><code class="codecolorer text default"><span class="text">json</span></code> (default)</li>
<li><code class="codecolorer text default"><span class="text">kml</span></code></li>
<li><code class="codecolorer text default"><span class="text">xml</span></code></li>
<li><code class="codecolorer text default"><span class="text">csv</span></code> &#8211; data are separated by semi-colon</li>
</ul>
<p>In our situation is CSV ideal because it returns only 4 blocks of data separated by semi-colon:</p>
<ol>
<li><strong>HTTP status code</strong>
<ul>
<li><code class="codecolorer text default"><span class="text">200</span></code><strong> </strong>- succes</li>
<li><code class="codecolorer text default"><span class="text">500</span></code> &#8211; server error</li>
<li><code class="codecolorer text default"><span class="text">602</span></code> &#8211; unknown address</li>
<li><code class="codecolorer text default"><span class="text">610</span></code> &#8211; bad API key</li>
<li><code class="codecolorer text default"><span class="text">620</span></code> &#8211; too many queries (&gt;5000 per day or too many requests in too short a period of time)</li>
<li>a další&#8230;</li>
</ul>
</li>
<li><strong>Accuracy</strong>
<ul>
<li><code class="codecolorer text default"><span class="text">0</span></code> &#8211; unknown</li>
<li><code class="codecolorer text default"><span class="text">1</span></code> &#8211; country level</li>
<li>&#8230;</li>
<li><code class="codecolorer text default"><span class="text">4</span></code> &#8211; city (village) leel</li>
<li><code class="codecolorer text default"><span class="text">5</span></code> &#8211; ZIP level</li>
<li><code class="codecolorer text default"><span class="text">6</span></code> -street level</li>
<li><code class="codecolorer text default"><span class="text">7</span></code> &#8211; intersection level</li>
<li><code class="codecolorer text default"><span class="text">8</span></code> &#8211; address level</li>
<li><code class="codecolorer text default"><span class="text">9</span></code> &#8211; building level</li>
</ul>
</li>
<li><strong>Latitude</strong></li>
<li><strong>Longitude</strong></li>
</ol>
<p>For example:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">200,6,42.730070,-73.90570</div></div>
<h3>PHP: example of getting GPS coordinates from CSV file</h3>
<p>We assume having table in db with buildings&#8217; addresses to which we can find their GPS coordinates. The table could look like this:</p>
<div class="codecolorer-container mysql default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="mysql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #990099; font-weight: bold;">CREATE</span>  <span style="color: #990099; font-weight: bold;">TABLE</span> <span style="color: #990099; font-weight: bold;">IF <span style="color: #CC0099; font-weight: bold;">NOT</span> EXISTS</span> <span style="color: #008000;">`buildings`</span> <span style="color: #FF00FF;">&#40;</span><br />
<span style="color: #008000;">`building<span style="color: #008080; font-weight: bold;">_</span>id`</span> <span style="color: #999900; font-weight: bold;">INT</span> <span style="color: #CC0099; font-weight: bold;">NOT</span> <span style="color: #9900FF; font-weight: bold;">NULL</span> <span style="color: #FF9900; font-weight: bold;">AUTO_INCREMENT</span> <span style="color: #000033;">,</span><br />
<span style="color: #008000;">`building<span style="color: #008080; font-weight: bold;">_</span>street`</span> <span style="color: #999900; font-weight: bold;">VARCHAR</span><span style="color: #FF00FF;">&#40;</span>200<span style="color: #FF00FF;">&#41;</span> <span style="color: #9900FF; font-weight: bold;">NULL</span> <span style="color: #000033;">,</span><br />
<span style="color: #008000;">`building<span style="color: #008080; font-weight: bold;">_</span>street<span style="color: #008080; font-weight: bold;">_</span>nr`</span> <span style="color: #999900; font-weight: bold;">VARCHAR</span><span style="color: #FF00FF;">&#40;</span>20<span style="color: #FF00FF;">&#41;</span> <span style="color: #9900FF; font-weight: bold;">NULL</span> <span style="color: #000033;">,</span><br />
<span style="color: #008000;">`building<span style="color: #008080; font-weight: bold;">_</span>city`</span> <span style="color: #999900; font-weight: bold;">VARCHAR</span><span style="color: #FF00FF;">&#40;</span>200<span style="color: #FF00FF;">&#41;</span> <span style="color: #CC0099; font-weight: bold;">NOT</span> <span style="color: #9900FF; font-weight: bold;">NULL</span> <span style="color: #000033;">,</span><br />
<span style="color: #008000;">`building<span style="color: #008080; font-weight: bold;">_</span>latitude`</span> <span style="color: #999900; font-weight: bold;">VARCHAR</span><span style="color: #FF00FF;">&#40;</span>30<span style="color: #FF00FF;">&#41;</span> <span style="color: #9900FF; font-weight: bold;">NULL</span> <span style="color: #000033;">,</span><br />
<span style="color: #008000;">`building<span style="color: #008080; font-weight: bold;">_</span>longitude`</span> <span style="color: #999900; font-weight: bold;">VARCHAR</span><span style="color: #FF00FF;">&#40;</span>30<span style="color: #FF00FF;">&#41;</span> <span style="color: #9900FF; font-weight: bold;">NULL</span> <span style="color: #000033;">,</span><br />
<span style="color: #990099; font-weight: bold;">PRIMARY KEY</span> <span style="color: #FF00FF;">&#40;</span><span style="color: #008000;">`building<span style="color: #008080; font-weight: bold;">_</span>id`</span><span style="color: #FF00FF;">&#41;</span> <span style="color: #FF00FF;">&#41;</span></div></div>
<p>Then our PHP script for filling up GPS coordinates could look like this:</p>
<pre>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">&lt;?php</span><br />
<span style="color: #000088;">$conn</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_connect</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;localhost&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;user&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;passwd&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000088;">$conn</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; <span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Could not connect: &quot;</span><span style="color: #339933;">.</span> <span style="color: #990000;">mysql_error</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span><br />
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">mysql_select_db</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;database&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$conn</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; <span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Could select db: &quot;</span><span style="color: #339933;">.</span> <span style="color: #990000;">mysql_error</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span><br />
<br />
<span style="color: #666666; font-style: italic;">// YOUR DOMAIN API KEY</span><br />
<span style="color: #000088;">$api_key</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;ABCDEFGHIJK&quot;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000088;">$query</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;select * from buildings where building_latitude is null and building_longitude is null order by building_id&quot;</span><span style="color: #339933;">;</span><br />
<span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$row</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_fetch_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
<br />
&nbsp; <span style="color: #666666; font-style: italic;">// SET ADDRESS</span><br />
&nbsp; <span style="color: #000088;">$address</span> <span style="color: #339933;">=</span> <span style="color: #990000;">urlencode</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$row</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;building_street&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot; &quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$row</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;building_street_nr&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot; &quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$row</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;building_city&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot; Czech republic&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; <span style="color: #666666; font-style: italic;">// URL TO HTTP REQUEST</span><br />
&nbsp; <span style="color: #000088;">$link</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;http://maps.google.com/maps/geo?q=&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$address</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&amp;key=&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$api_key</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&amp;sensor=false&amp;output=csv&amp;oe=utf8&quot;</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; <span style="color: #666666; font-style: italic;">// WE GET FILE CONTENT</span><br />
&nbsp; <span style="color: #000088;">$page</span> <span style="color: #339933;">=</span> <span style="color: #990000;">file_get_contents</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$link</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; <span style="color: #666666; font-style: italic;">// WE OBTAIN DATA FROM GIVEN CSV</span><br />
&nbsp; <span style="color: #990000;">list</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$status</span><span style="color: #339933;">,</span> <span style="color: #000088;">$accuracy</span><span style="color: #339933;">,</span> <span style="color: #000088;">$latitude</span><span style="color: #339933;">,</span> <span style="color: #000088;">$longitude</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">explode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;,&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$page</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; <span style="color: #666666; font-style: italic;">// IF EVERYTHING OK AND ACCURANCY GREATER THEN 3 WE SAVE COORDINATES</span><br />
&nbsp; <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$status</span> <span style="color: #339933;">==</span> 200<span style="color: #009900;">&#41;</span> and <span style="color: #009900;">&#40;</span><span style="color: #000088;">$accuracy</span><span style="color: #339933;">&gt;=</span>4<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000088;">$query_edit</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;update buildings set building_latitude = '&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$latitude</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;',<br />
&nbsp; &nbsp; building_longitude = '&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$longitude</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;'<br />
&nbsp; &nbsp; where building_id = '&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$row</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;building_id&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;'&quot;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #000088;">$result_edit</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$query_edit</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$row</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;building_id&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot; - OK&lt;br /&gt;&quot;</span><span style="color: #339933;">;</span><br />
&nbsp; <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$row</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;building_id&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot; - ERROR&lt;br /&gt;&quot;</span><span style="color: #339933;">;</span><br />
&nbsp; <span style="color: #009900;">&#125;</span><br />
<br />
&nbsp; <span style="color: #666666; font-style: italic;">// TIMER BECAUSE GOOGLE DOESN'T LIKE TO BE QUERIED IN SHORT TIME</span><br />
&nbsp; <span style="color: #990000;">sleep</span><span style="color: #009900;">&#40;</span>3<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span><br />
<br />
<span style="color: #990000;">mysql_close</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$conn</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">?&gt;</span></div></td></tr></tbody></table></div>
</pre>
<p>In following article will be introduced MySQL procedure which returns list of the nearest buildings calculated from GPS.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.havlena.net/blog/en/php-a-google-maps-jak-ziskat-gps-souradnice-pro-adresu/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>(Česky) Objektově orientované programování (OOP) v PHP &#8211; Mentální mapa</title>
		<link>http://www.havlena.net/blog/en/objektove-orientovane-programovani-oop-v-php-mentalni-mapa/</link>
		<comments>http://www.havlena.net/blog/en/objektove-orientovane-programovani-oop-v-php-mentalni-mapa/#comments</comments>
		<pubDate>Sun, 07 Jun 2009 13:45:38 +0000</pubDate>
		<dc:creator>Matouš Havlena</dc:creator>
				<category><![CDATA[Mental mapping]]></category>
		<category><![CDATA[PHP 5]]></category>
		<category><![CDATA[destruktory]]></category>
		<category><![CDATA[konstruktory]]></category>
		<category><![CDATA[mind map]]></category>
		<category><![CDATA[myšlenkové mapy]]></category>
		<category><![CDATA[OOP]]></category>
		<category><![CDATA[XMind]]></category>
		<category><![CDATA[__autoload]]></category>

		<guid isPermaLink="false">http://www.havlena.net/blog/?p=735</guid>
		<description><![CDATA[Sorry, this entry is only available in Czech.
]]></description>
			<content:encoded><![CDATA[<p>Sorry, this entry is only available in Czech.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.havlena.net/blog/en/objektove-orientovane-programovani-oop-v-php-mentalni-mapa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>(Česky) Pole v PHP &#8211; Mentální mapa</title>
		<link>http://www.havlena.net/blog/en/pole-v-php-mentalni-mapa/</link>
		<comments>http://www.havlena.net/blog/en/pole-v-php-mentalni-mapa/#comments</comments>
		<pubDate>Wed, 06 May 2009 11:48:54 +0000</pubDate>
		<dc:creator>Matouš Havlena</dc:creator>
				<category><![CDATA[Mental mapping]]></category>
		<category><![CDATA[PHP 5]]></category>
		<category><![CDATA[FreeMind]]></category>
		<category><![CDATA[mind map]]></category>
		<category><![CDATA[myšlenkové mapy]]></category>
		<category><![CDATA[pole]]></category>
		<category><![CDATA[XMind]]></category>

		<guid isPermaLink="false">http://www.havlena.net/blog/?p=330</guid>
		<description><![CDATA[Sorry, this entry is only available in Czech.
]]></description>
			<content:encoded><![CDATA[<p>Sorry, this entry is only available in Czech.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.havlena.net/blog/en/pole-v-php-mentalni-mapa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>(Česky) Funkce v PHP &#8211; Mentální mapa</title>
		<link>http://www.havlena.net/blog/en/funkce-v-php-mentalni-mapa/</link>
		<comments>http://www.havlena.net/blog/en/funkce-v-php-mentalni-mapa/#comments</comments>
		<pubDate>Wed, 15 Apr 2009 21:31:58 +0000</pubDate>
		<dc:creator>Matouš Havlena</dc:creator>
				<category><![CDATA[Mental mapping]]></category>
		<category><![CDATA[PHP 5]]></category>
		<category><![CDATA[FreeMind]]></category>
		<category><![CDATA[mind map]]></category>
		<category><![CDATA[myšlenkové mapy]]></category>
		<category><![CDATA[XMind]]></category>

		<guid isPermaLink="false">http://www.havlena.net/blog/?p=295</guid>
		<description><![CDATA[Sorry, this entry is only available in Czech.
]]></description>
			<content:encoded><![CDATA[<p>Sorry, this entry is only available in Czech.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.havlena.net/blog/en/funkce-v-php-mentalni-mapa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>(Česky) Základy PHP &#8211; Mentální mapa</title>
		<link>http://www.havlena.net/blog/en/zaklady-php-mentalni-mapa/</link>
		<comments>http://www.havlena.net/blog/en/zaklady-php-mentalni-mapa/#comments</comments>
		<pubDate>Tue, 14 Apr 2009 13:32:43 +0000</pubDate>
		<dc:creator>Matouš Havlena</dc:creator>
				<category><![CDATA[Mental mapping]]></category>
		<category><![CDATA[PHP 5]]></category>
		<category><![CDATA[FreeMind]]></category>
		<category><![CDATA[mind map]]></category>
		<category><![CDATA[myšlenkové mapy]]></category>
		<category><![CDATA[XMind]]></category>

		<guid isPermaLink="false">http://www.havlena.net/blog/?p=225</guid>
		<description><![CDATA[Sorry, this entry is only available in Czech.
]]></description>
			<content:encoded><![CDATA[<p>Sorry, this entry is only available in Czech.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.havlena.net/blog/en/zaklady-php-mentalni-mapa/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

