<?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"
	>

<channel>
	<title>flashNavigator :: GIS/CAD rapid development framework</title>
	<atom:link href="http://www.flashnavigator.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.flashnavigator.net</link>
	<description>flashNavigator :: GIS/CAD rapid development framework</description>
	<pubDate>Tue, 14 Oct 2008 17:26:46 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
	<language>en</language>
			<item>
		<title>karabo.org.za</title>
		<link>http://www.flashnavigator.net/showcase/karaboorgza/</link>
		<comments>http://www.flashnavigator.net/showcase/karaboorgza/#comments</comments>
		<pubDate>Sun, 13 Jul 2008 15:25:06 +0000</pubDate>
		<dc:creator>Omnisdata</dc:creator>
		
		<category><![CDATA[Showcase]]></category>

		<guid isPermaLink="false">http://localhost/flashnavigator/?p=35</guid>
		<description><![CDATA[
Project for South Africa. Map created from ESRI Shapefile format.
Open
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.karabo.org.za" target="_blank"><img  title="karabo" src="/wp-content/images/karabo.jpg" alt=""  /></a></p>
<p>Project for South Africa. Map created from ESRI Shapefile format.<br />
<a href="http://www.karabo.org.za" target="_blank">Open</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.flashnavigator.net/showcase/karaboorgza/feed/</wfw:commentRss>
		</item>
		<item>
		<title>karteGradova.com</title>
		<link>http://www.flashnavigator.net/showcase/kartegradovacom/</link>
		<comments>http://www.flashnavigator.net/showcase/kartegradovacom/#comments</comments>
		<pubDate>Sun, 13 Jul 2008 15:09:29 +0000</pubDate>
		<dc:creator>Omnisdata</dc:creator>
		
		<category><![CDATA[Showcase]]></category>

		<guid isPermaLink="false">http://localhost/flashnavigator/?p=33</guid>
		<description><![CDATA[Croatian mapping portal. Map created from OCAD file format.
Open
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.kartegradova.com" target="_blank"><img class="alignnone size-full wp-image-17" title="kartegradova" src="/wp-content/images/kartegradova.jpg" alt=""  /></a>Croatian mapping portal. Map created from OCAD file format.<br />
<a href="http://www.kartegradova.com" target="_blank">Open</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.flashnavigator.net/showcase/kartegradovacom/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Web GIS Tutorial: WiGLE</title>
		<link>http://www.flashnavigator.net/tutorials/web-gis-tutorial-wigle/</link>
		<comments>http://www.flashnavigator.net/tutorials/web-gis-tutorial-wigle/#comments</comments>
		<pubDate>Sat, 12 Jul 2008 20:07:27 +0000</pubDate>
		<dc:creator>Omnisdata</dc:creator>
		
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://localhost/flashnavigator/?p=30</guid>
		<description><![CDATA[Project URL: http://www.flashnavigator.net/wigle/
This tutorial describes in detail the process of creating a Web GIS application. For this project we used a NAVTEQ map of Chicago as a base map and WiGLE data for GIS analysis.

Concentration of wireless networks in Chicago
WiGLE is an acronym for “Wireless Geographic Logging Engine”. This interesting project has the purpose of [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">Project URL: <a href="http://www.flashnavigator.net/wigle/">http://www.flashnavigator.net/wigle/</a></p>
<p>This tutorial describes in detail the process of creating a Web GIS application. For this project we used a NAVTEQ map of Chicago as a base map and WiGLE data for GIS analysis.</p>
<p style="text-align: left;"><img class="aligncenter size-full wp-image-22" title="image001" src="http://www.flashnavigator.net/wp-content/image001.jpg" alt="WiFi concentration in Chicaho" width="500" height="428" /></p>
<p style="text-align: center;"><em>Concentration of wireless networks in Chicago</em></p>
<p style="text-align: left;"><a href="http://www.wigle.net/">WiGLE</a> is an acronym for “Wireless Geographic Logging Engine”. This interesting project has the purpose of cataloging wireless networks across the world. Location of wireless network is calculated by triangulation using GPS traces that are submitted by users. The interesting feature of their service is the ability to query the database and get detailed data about wireless networks. We used this service to get the data for the purpose of this project.</p>
<p><span id="more-30"></span><br />
Before we start, these are the requirements:</p>
<p><strong>Software requirements</strong>:</p>
<ul style="text-align: left;">
<li>flashNavigator GIS/CAD framework (<a href="http://www.flashnavigator.net/">http://www.flashnavigator.net/</a> used version 2.0)</li>
</ul>
<ul style="text-align: left;">
<li>PHP (<a href="http://php.net/">http://php.net/</a> used version 4.4.4-8)</li>
</ul>
<ul style="text-align: left;">
<li>PHP-JSON module for PHP (<a href="http://php.net/">http://php.net/</a> used version 1.2.1)</li>
</ul>
<ul style="text-align: left;">
<li>PostgreSQL database (<a href="http://www.postgresql.org/">http://www.postgresql.org/</a> used version 8.1)</li>
</ul>
<ul style="text-align: left;">
<li>PostGIS extension for PostgreSQL database (<a href="http://postgis.refractions.net/">http://postgis.refractions.net/</a> used version 1.3.3)</li>
</ul>
<p style="text-align: left;"><strong>Data requirements</strong>:</p>
<ul style="text-align: left;">
<li>NAVTEQ sample map of Chicago (<a href="http://www.nn4d.com/">http://www.nn4d.com/</a>, ESRI Shapefile format)</li>
</ul>
<ul style="text-align: left;">
<li>WiGLE data for Chicago (<a href="http://www.wigle.net/">http://www.wigle.net/</a>)</li>
</ul>
<p style="text-align: left;">In this project the flashNavigator framework is used to visualize the map and the results of spatial database queries.</p>
<p>The sample map data of Chicago has been converted to Adobe Flash format by the flashNavigator framework. In this article the process of conversion isn’t covered, details about it can be found in one of previous articles located at <a href="http://www.flashnavigator.net/resources/">http://www.flashnavigator.net/resources/</a>.</p>
<p>WiGLE data is available free for download only to registered users. Because of their license this project has also been restricted to users registered at WiGLE. So if you would like to test this application please register at <a href="http://www.wigle.net/">http://www.wigle.net/</a> and enter your credentials at form located at <a href="http://www.flashnavigator.net/wigle/">http://www.flashnavigator.net/wigle/</a>. Your credentials will be only used to query the WiGLE database.</p>
<p>Locations of wireless networks across Chicago are displayed in the flashNavigator client which is embedded into a web application and controlled by the JavaScript API.</p>
<p>The application has two main features:</p>
<ul style="text-align: left;">
<li>Visual display of wireless network concentration in Chicago by coloring areas in different color. For this purpose red color is used for high and green color for low concentration.</li>
</ul>
<ul style="text-align: left;">
<li>Ability to dynamically query the database and display wireless networks in an area marked by a circle.</li>
</ul>
<p style="text-align: left;">
<h2>Querying WiGLE data</h2>
<p>WiGLE has a documented API for querying their database. Unfortunately this API isn’t stable, so be sure to check for latest API updates on their Wiki at <a href="https://wigle.net/wiki/index.cgi?API">https://wigle.net/wiki/index.cgi?API</a> and forums at <a href="https://wigle.net/phpbb/">https://wigle.net/phpbb/</a>. The database is only accessible by providing username and password. To reduce usage of the WiGLE database and their servers, we’ll create a local database which will cache requests to WiGLE. For our application we chose PostgreSQL database with the PostGIS extension.</p>
<p style="text-align: left;">
<h2>Setting up the database</h2>
<p style="text-align: left;">Before we can create WiGLE tables with PostgreSQL and its PostGIS extension, we need to create a PostGIS Mercator projection that will be used for stored data. We are using Mercator projection because the maps generated by flashNavigator are in Mercator projection too. It is crucial that the projections match.</p>
<p style="text-align: left;">
<p>This query adds Mercator projection to PostGIS:</p>

<div class="wp_syntax"><div class="code"><pre class="sql"><span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> spatial_ref_sys <span style="color: #66cc66;">&#40;</span>srid<span style="color: #66cc66;">,</span> auth_name<span style="color: #66cc66;">,</span> auth_srid<span style="color: #66cc66;">,</span> srtext<span style="color: #66cc66;">,</span> proj4text<span style="color: #66cc66;">&#41;</span>
<span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span>
<span style="color: #cc66cc;">54004</span><span style="color: #66cc66;">,</span>
<span style="color: #ff0000;">'spatialreference.org'</span><span style="color: #66cc66;">,</span>
<span style="color: #cc66cc;">54004</span><span style="color: #66cc66;">,</span>
<span style="color: #ff0000;">'PROJCS[&quot;World_Mercator&quot;,GEOGCS[&quot;GCS_WGS_1984&quot;,DATUM[&quot;WGS_1984&quot;,SPHEROID[&quot;WGS_1984&quot;,6378137,298.257223563]],PRIMEM[&quot;Greenwich&quot;,0],UNIT[&quot;Degree&quot;,0.017453292519943295]],PROJECTION[&quot;Mercator_1SP&quot;],PARAMETER[&quot;False_Easting&quot;,0],PARAMETER[&quot;False_Northing&quot;,0],PARAMETER[&quot;Central_Meridian&quot;,0],PARAMETER[&quot;Standard_Parallel_1&quot;,0],UNIT[&quot;Meter&quot;,1],AUTHORITY[&quot;EPSG&quot;,&quot;54004&quot;]]'</span><span style="color: #66cc66;">,</span>
<span style="color: #ff0000;">'+proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs '</span>
<span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>Next we need to create table in which the WiGLE data will be stored:</p>

<div class="wp_syntax"><div class="code"><pre class="sql"><span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">TABLE</span> wigle
<span style="color: #66cc66;">&#40;</span>
  netid character varying<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">17</span><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>
  ssid character varying<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">256</span><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>
  <span style="color: #ff0000;">&quot;comment&quot;</span> character varying<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">256</span><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>
  name character varying<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">256</span><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>
  <span style="color: #ff0000;">&quot;type&quot;</span> character varying<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">256</span><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>
  freenet character varying<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span><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>
  paynet character varying<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span><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>
  firsttime timestamp without time zone <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span>
  flags character varying<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">4</span><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>
  wep character varying<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span><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>
  trilat double precision <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span>
  trilong double precision <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span>
  dhcp character varying<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span><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>
  lastupdt timestamp without time zone <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span>
  channel integer <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span>
  active character varying<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span><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>
  bcninterval integer <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span>
  qos integer <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span>
  userfound character varying<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span><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;">&#41;</span>;</pre></div></div>

<p>Now we’ll add a PostGIS column in which we’ll store wireless network coordinates. We’ll add the column &#8220;point&#8221; which is of type POINT with the projection set to Mercator (54004).</p>

<div class="wp_syntax"><div class="code"><pre class="sql"><span style="color: #993333; font-weight: bold;">SELECT</span>
  AddGeometryColumn<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'wigle'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'wigle'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'point'</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">54004</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'POINT'</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>After the table is created we can populate it using the WiGLE API. When we have all the data we need in our database, we need to set the PostGIS column point to WiGLE coordinate values. Wireless networks coordinates are stored in Lat/Long projection (id 4326). As we want to use Mercator projection (id 54004) we need to transform geometry to Mercator projection.</p>

<div class="wp_syntax"><div class="code"><pre class="sql"><span style="color: #993333; font-weight: bold;">UPDATE</span> wigle
   <span style="color: #993333; font-weight: bold;">SET</span> point <span style="color: #66cc66;">=</span> Transform<span style="color: #66cc66;">&#40;</span>
       GeomFromText<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'POINT('</span><span style="color: #66cc66;">||</span> trilong <span style="color: #66cc66;">||</span><span style="color: #ff0000;">' '</span> <span style="color: #66cc66;">||</span> trilat <span style="color: #66cc66;">||</span> <span style="color: #ff0000;">')'</span><span style="color: #66cc66;">,</span><span style="color: #cc66cc;">4326</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span><span style="color: #cc66cc;">54004</span>
<span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>The final step to get our &#8220;wigle&#8221; table ready is to create spatial index for faster access on the &#8220;point&#8221; column:</p>

<div class="wp_syntax"><div class="code"><pre class="sql"><span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">INDEX</span> point_index <span style="color: #993333; font-weight: bold;">ON</span> wigle <span style="color: #993333; font-weight: bold;">USING</span> gist<span style="color: #66cc66;">&#40;</span>point<span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>For creating the visual representation of wireless network concentration we’ll create another table that will be made out of grid cells. The idea is to assign to each cell the number of wireless networks that are inside it. With this information we can color each cell according to number of wireless networks that are in that area.</p>
<p>First we need to create table grid:</p>

<div class="wp_syntax"><div class="code"><pre class="sql"><span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">TABLE</span> grid
<span style="color: #66cc66;">&#40;</span>
  gid serial <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;">PRIMARY</span> <span style="color: #993333; font-weight: bold;">KEY</span><span style="color: #66cc66;">,</span>
  count integer
<span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #993333; font-weight: bold;">SELECT</span>
  AddGeometryColumn<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'wigle'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'grid'</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'cell'</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">54004</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'POLYGON'</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>Now we need to create cells and store them into grid table. To create grid cells using PostGIS we’ll generate coordinates from the &#8220;wiggle&#8221; table by using the &#8220;generate_series&#8221; method. Then we’ll use those coordinate to create a cell that will be stored in the &#8220;grid&#8221; table. To make sure the projection is consistent with other tables and map data we will need to set the box to Mercator projection before storing it in the &#8220;grid&#8221; table.</p>
<p>We’ll create cells of 1 km2 by running this query:</p>

<div class="wp_syntax"><div class="code"><pre class="sql"><span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> grid<span style="color: #66cc66;">&#40;</span>cell<span style="color: #66cc66;">&#41;</span>
  <span style="color: #993333; font-weight: bold;">SELECT</span> ST_SetSRID<span style="color: #66cc66;">&#40;</span>
    makebox2d<span style="color: #66cc66;">&#40;</span>
      st_makepoint<span style="color: #66cc66;">&#40;</span>hor<span style="color: #66cc66;">.</span>n<span style="color: #66cc66;">,</span>ver<span style="color: #66cc66;">.</span>n<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
      st_makepoint<span style="color: #66cc66;">&#40;</span>hor<span style="color: #66cc66;">.</span>n<span style="color: #cc66cc;">+1000</span><span style="color: #66cc66;">,</span>ver<span style="color: #66cc66;">.</span>n<span style="color: #cc66cc;">+1000</span><span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span><span style="color: #cc66cc;">54004</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> cell
  <span style="color: #993333; font-weight: bold;">FROM</span>
    generate_series<span style="color: #66cc66;">&#40;</span>
        <span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">SELECT</span> ST_xmin<span style="color: #66cc66;">&#40;</span>ST_Extent<span style="color: #66cc66;">&#40;</span>point<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #cc66cc;">-1000</span> <span style="color: #993333; font-weight: bold;">FROM</span> wigle<span style="color: #66cc66;">&#41;</span>::integer<span style="color: #66cc66;">,</span>
        <span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">SELECT</span> ST_xmax<span style="color: #66cc66;">&#40;</span>ST_Extent<span style="color: #66cc66;">&#40;</span>point<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #cc66cc;">+1000</span> <span style="color: #993333; font-weight: bold;">FROM</span> wigle<span style="color: #66cc66;">&#41;</span>::integer<span style="color: #66cc66;">,</span><span style="color: #cc66cc;">1000</span><span style="color: #66cc66;">&#41;</span>
      <span style="color: #993333; font-weight: bold;">AS</span> hor<span style="color: #66cc66;">&#40;</span>n<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
    generate_series<span style="color: #66cc66;">&#40;</span>
        <span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">SELECT</span> ST_ymin<span style="color: #66cc66;">&#40;</span>ST_Extent<span style="color: #66cc66;">&#40;</span>point<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #cc66cc;">-1000</span> <span style="color: #993333; font-weight: bold;">FROM</span> wigle<span style="color: #66cc66;">&#41;</span>::integer<span style="color: #66cc66;">,</span>
        <span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">SELECT</span> ST_ymax<span style="color: #66cc66;">&#40;</span>ST_Extent<span style="color: #66cc66;">&#40;</span>point<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #cc66cc;">+1000</span> <span style="color: #993333; font-weight: bold;">FROM</span> wigle<span style="color: #66cc66;">&#41;</span>::integer<span style="color: #66cc66;">,</span><span style="color: #cc66cc;">1000</span><span style="color: #66cc66;">&#41;</span>
      <span style="color: #993333; font-weight: bold;">AS</span> ver<span style="color: #66cc66;">&#40;</span>n<span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>Finally after the grid is created we’ll populate it with number of wireless networks that are within each cell by running this simple query:</p>

<div class="wp_syntax"><div class="code"><pre class="sql"><span style="color: #993333; font-weight: bold;">UPDATE</span> grid
  <span style="color: #993333; font-weight: bold;">SET</span> count <span style="color: #66cc66;">=</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #993333; font-weight: bold;">SELECT</span> count<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">FROM</span> wigle <span style="color: #993333; font-weight: bold;">WHERE</span> St_Within<span style="color: #66cc66;">&#40;</span>point<span style="color: #66cc66;">,</span>cell<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<h2>Setting up flashNavigator framework viewer</h2>
<p>We’ll use the flashNavigator framework (which is based on Adobe Flash technology) to display the map and WiGLE wireless networks. Working with this framework does not require any knowledge of Adobe Flash. FlashNavigator has an API for various platforms and for this project we’ll use JavaScript API.</p>
<p>To enable the JavaScript API, we must include one JavaScript file in the  tag of the web page.</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;script</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://www.flashnavigator.net/wigle/fnViewer/flashNavigator.js&quot;</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #009900;"><span style="color: #808080; font-style: italic;">&lt;!--mce:0--&gt;</span></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/script&gt;</span></span></pre></div></div>

<p>Now we can initialize flashNavigator. The namespace flashnavigator is static with static methods. With flashnavigator.include we define what plugins will be used in our project. The method flashnavigator.initialize has to be defined. This method will be called when flashNavigator core and plugins are loaded. Code that will initialize the viewer can be safely used in this method. In the code bellow we are creating a fnViewer object which will be loaded into a HTML container with the id “flashcontent”. Because we’ll be drawing something on the map we’ll use the canvas plugin.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript"><span style="color: #006600; font-style: italic;">// sets list of plugins that are used to extend</span>
<span style="color: #006600; font-style: italic;">// flashNavigator functionality</span>
flashnavigator.<span style="color: #006600;">include</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;slider,scalebar,canvas,marker&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
flashnavigator.<span style="color: #006600;">initialize</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  <span style="color: #006600; font-style: italic;">// fnViewer constructor</span>
  fn <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> fnViewer<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;flashcontent&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #006600; font-style: italic;">// canvas plugin constructor</span>
  canvas <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> fnCanvas<span style="color: #009900;">&#40;</span>fn<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #006600; font-style: italic;">// marker plugin constructor</span>
  marker <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> fnMarker<span style="color: #009900;">&#40;</span>fn<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #006600; font-style: italic;">// registers event listeners</span>
  fn.<span style="color: #006600;">addEventListener</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;load&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;fnOnLoad&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  fn.<span style="color: #006600;">addEventListener</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;mouseup&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;fnOnMouseUp&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  fn.<span style="color: #006600;">addEventListener</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;mousemove&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;fnOnMouseMove&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  fn.<span style="color: #006600;">addEventListener</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;mousedown&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;fnOnMouseDown&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  fn.<span style="color: #006600;">addEventListener</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;scalechange&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;fnUpdateScale&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #006600; font-style: italic;">// loads map project</span>
  fn.<span style="color: #006600;">load</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;/wigle/maps/chicago.xml&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Next, it’s necessary to create a HTML element in which the map will be displayed. This element has to be reserved for flashNavigator by calling a special API method.</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;flashcontent&quot;</span> <span style="color: #000066;">style</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;border: 1px solid #cccccc; width: 615px; height: 500px;&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
  flashNavigator container<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;script</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #009900;"><span style="color: #808080; font-style: italic;">&lt;!--mce:1--&gt;</span></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/script&gt;</span></span></pre></div></div>

<h2>GIS analysis (WiFi distribution in Chicago)</h2>
<p>In this tutorial we&#8217;ll display distribution of wireless networks according to WiGLE data. The data has been stored into grid structure during database setup. So now we need a way to display that data using flashNavigator viewer. The backend part that will query database is written in PHP. The data will be formatted in JSON format for easy usage in JavaScript.</p>
<p>PHP script that queries database and outputs JSON formatted data:</p>

<div class="wp_syntax"><div class="code"><pre class="php">  <span style="color: #000033;">$xmin</span> <span style="color: #339933;">=</span> <span style="color: #990000;">floatval</span><span style="color: #009900;">&#40;</span><span style="color: #000033;">$_REQUEST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;xmin&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000033;">$xmax</span> <span style="color: #339933;">=</span> <span style="color: #990000;">floatval</span><span style="color: #009900;">&#40;</span><span style="color: #000033;">$_REQUEST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;xmax&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000033;">$ymin</span> <span style="color: #339933;">=</span> <span style="color: #990000;">floatval</span><span style="color: #009900;">&#40;</span><span style="color: #000033;">$_REQUEST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;ymin&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000033;">$ymax</span> <span style="color: #339933;">=</span> <span style="color: #990000;">floatval</span><span style="color: #009900;">&#40;</span><span style="color: #000033;">$_REQUEST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;ymax&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #000033;">$link</span> <span style="color: #339933;">=</span> <span style="color: #990000;">pg_Connect</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;dbname=wigle user=user password=password&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #000033;">$query</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;SELECT AsText(the_geom) as geom, count
            FROM grid
            WHERE ST_Intersects(the_geom,
                                ST_SetSRID(
                                   makebox2d(st_makepoint($xmin,$ymin),
                                             st_makepoint($xmax,$ymax))
                                   ,54004))
            ORDER BY count
            DESC LIMIT 1000&quot;</span><span style="color: #339933;">;</span>
&nbsp;
   <span style="color: #000033;">$result</span> <span style="color: #339933;">=</span> <span style="color: #990000;">pg_exec</span><span style="color: #009900;">&#40;</span><span style="color: #000033;">$link</span><span style="color: #339933;">,</span> <span style="color: #000033;">$query</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
   <span style="color: #990000;">echo</span> json_encode<span style="color: #009900;">&#40;</span> <span style="color: #990000;">pg_fetch_all</span><span style="color: #009900;">&#40;</span><span style="color: #000033;">$result</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
   <span style="color: #990000;">pg_close</span><span style="color: #009900;">&#40;</span><span style="color: #000033;">$link</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Now we can display that data using JavaScript and flashNavigator API:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript"><span style="color: #003366; font-weight: bold;">function</span> getWirelessConcentration <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  <span style="color: #006600; font-style: italic;">// we get current bound and send it to PHP script</span>
  document.<span style="color: #006600;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;message&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006600;">innerHTML</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;Loading...&quot;</span><span style="color: #339933;">;</span>
  <span style="color: #003366; font-weight: bold;">var</span> b <span style="color: #339933;">=</span> fn.<span style="color: #006600;">getViewBound</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #003366; font-weight: bold;">var</span> query <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;&amp;amp;xmin=&quot;</span><span style="color: #339933;">+</span>b.<span style="color: #006600;">xMin</span><span style="color: #339933;">+</span><span style="color: #3366CC;">&quot;&amp;amp;xmax=&quot;</span><span style="color: #339933;">+</span>b.<span style="color: #006600;">xMax</span><span style="color: #339933;">+</span><span style="color: #3366CC;">&quot;&amp;amp;ymin=&quot;</span><span style="color: #339933;">+</span>b.<span style="color: #006600;">yMin</span><span style="color: #339933;">+</span><span style="color: #3366CC;">&quot;&amp;amp;ymax=&quot;</span><span style="color: #339933;">+</span>b.<span style="color: #006600;">yMax</span><span style="color: #339933;">;</span>
  xmlhttpPost<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;/wigle/getAP2.php&quot;</span><span style="color: #339933;">,</span>query<span style="color: #339933;">,</span>drawWirelessDistribution<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">function</span> drawWirelessDistribution <span style="color: #009900;">&#40;</span>cells<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
&nbsp;
  <span style="color: #006600; font-style: italic;">// first we delete everything that was displayed before</span>
  canvas.<span style="color: #006600;">deleteAll</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #006600; font-style: italic;">// Json data needs to be evaluated before we can use it</span>
  cells <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">eval</span><span style="color: #009900;">&#40;</span>cells<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #006600; font-style: italic;">// we truncate maximal number of wireless network per cell</span>
  <span style="color: #003366; font-weight: bold;">var</span> maxCount <span style="color: #339933;">=</span> <span style="color: #CC0000;">2000</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #003366; font-weight: bold;">var</span> frequency <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>Math.<span style="color: #006600;">PI</span><span style="color: #339933;">/</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">/</span>maxCount<span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>i<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> cells.<span style="color: #006600;">length</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
  <span style="color: #009900;">&#123;</span>
    k <span style="color: #339933;">=</span> cells<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006600;">count</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>k <span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span> maxCount<span style="color: #009900;">&#41;</span>
    k <span style="color: #339933;">=</span> maxCount<span style="color: #339933;">;</span>
&nbsp;
    red   <span style="color: #339933;">=</span> Math.<span style="color: #006600;">sin</span><span style="color: #009900;">&#40;</span>frequency<span style="color: #339933;">*</span>k <span style="color: #339933;">+</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">*</span> <span style="color: #CC0000;">127</span> <span style="color: #339933;">+</span> <span style="color: #CC0000;">128</span><span style="color: #339933;">;</span>
    green <span style="color: #339933;">=</span> Math.<span style="color: #006600;">sin</span><span style="color: #009900;">&#40;</span>frequency<span style="color: #339933;">*</span>k <span style="color: #339933;">+</span> <span style="color: #CC0000;">2</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">*</span> <span style="color: #CC0000;">127</span> <span style="color: #339933;">+</span> <span style="color: #CC0000;">128</span><span style="color: #339933;">;</span>
    blue  <span style="color: #339933;">=</span> Math.<span style="color: #006600;">sin</span><span style="color: #009900;">&#40;</span>frequency<span style="color: #339933;">*</span>k <span style="color: #339933;">+</span> <span style="color: #CC0000;">4</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">*</span> <span style="color: #CC0000;">127</span> <span style="color: #339933;">+</span> <span style="color: #CC0000;">128</span><span style="color: #339933;">;</span>
&nbsp;
    cells<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006600;">color</span> <span style="color: #339933;">=</span> RGB2Color<span style="color: #009900;">&#40;</span>red<span style="color: #339933;">,</span>green<span style="color: #339933;">,</span>blue<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    cells<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006600;">alpha</span> <span style="color: #339933;">=</span> <span style="color: #CC0000;">60</span><span style="color: #339933;">;</span>
&nbsp;
    canvas.<span style="color: #006600;">deserializeGeometryOpenGIS</span><span style="color: #009900;">&#40;</span>cells<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  document.<span style="color: #006600;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;message&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006600;">innerHTML</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">function</span> RGB2Color<span style="color: #009900;">&#40;</span>r<span style="color: #339933;">,</span>g<span style="color: #339933;">,</span>b<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  <span style="color: #006600; font-style: italic;">// convets RGB formated color to integer</span>
  <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #009900;">&#40;</span>r <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span> 0xff<span style="color: #009900;">&#41;</span> <span style="color: #339933;">*</span>0x10000 <span style="color: #339933;">|</span> <span style="color: #009900;">&#40;</span>g <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span> 0xff<span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span>0x100 <span style="color: #339933;">|</span> <span style="color: #009900;">&#40;</span>b <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span> 0xff<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<h2>WiFi Access Points display</h2>
<p>To display wireless access points we need to define area in which we want to display them. Currently there are around 500 000 wireless networks in Chicago according to WiGLE database, so it would be impossible to display all of them at once.</p>
<p>Area will be defined by use of mouse. To define area it’s necessary to hold left mouse button down and then drag mouse to define circle radius. To display access points mouse button must be released. Wireless networks are display accordingly to zoom level. In some areas there is too many wireless networks so on in those areas some wireless networks will be discarded. To show more wireless networks it’s necessary to zoom in.</p>
<p>Wireless network markers are colored according to their QoS value. QoS is WiGLE value that define quality of access point location. Some access points have been maybe submitted few years ago and only by one user, so those access point will have low QoS and will be colored red.</p>
<p><img class="aligncenter size-full wp-image-25" title="image002" src="http://www.flashnavigator.net/wp-content/image002.jpg" alt="Wireless access point display" width="499" height="428" /></p>
<p style="text-align: center;"><em>Wireless access point display</em></p>
<p>Here is the JavaScript code for circle drawing using flashNavigator API:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript"><span style="color: #003366; font-weight: bold;">function</span> fnOnMouseDown<span style="color: #009900;">&#40;</span>evt<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  <span style="color: #009966; font-style: italic;">/* on mouse down we store current mouse data
  like x and y coordinates */</span>
&nbsp;
  <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>selectAreaTool<span style="color: #009900;">&#41;</span>
    areaData <span style="color: #339933;">=</span> evt<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">function</span> fnOnMouseUp<span style="color: #009900;">&#40;</span>evt<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  <span style="color: #009966; font-style: italic;">/* on mouse up we start loading access point data */</span>
&nbsp;
  <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>selectAreaTool<span style="color: #009900;">&#41;</span>
  <span style="color: #009900;">&#123;</span>
    document.<span style="color: #006600;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;message&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006600;">innerHTML</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;Loading...&quot;</span><span style="color: #339933;">;</span>
    query  <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;&amp;amp;x=&quot;</span><span style="color: #339933;">+</span>areaData.<span style="color: #006600;">x</span><span style="color: #339933;">+</span><span style="color: #3366CC;">&quot;&amp;amp;y=&quot;</span><span style="color: #339933;">+</span>areaData.<span style="color: #006600;">y</span><span style="color: #339933;">+</span><span style="color: #3366CC;">&quot;&amp;amp;r=&quot;</span><span style="color: #339933;">+</span>areaData.<span style="color: #006600;">d</span><span style="color: #339933;">;</span>
    query <span style="color: #339933;">+=</span> <span style="color: #3366CC;">&quot;&amp;amp;s=&quot;</span><span style="color: #339933;">+</span>fn.<span style="color: #006600;">getScale</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    xmlhttpPost<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;/wigle/getAP.php&quot;</span><span style="color: #339933;">,</span>query<span style="color: #339933;">,</span>getAP<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    fn.<span style="color: #006600;">setTool</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'DragTool'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    selectAreaTool <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  <span style="color: #000066; font-weight: bold;">else</span>
    updateWithTimer<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">function</span> fnOnMouseMove<span style="color: #009900;">&#40;</span>evt<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  <span style="color: #009966; font-style: italic;">/* during mouse move we need to calculate circle radius
     and draw the circle using flashNavigator API */</span>
&nbsp;
  <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>selectAreaTool <span style="color: #339933;">||</span> <span style="color: #339933;">!</span>areaData<span style="color: #009900;">&#41;</span> <span style="color: #000066; font-weight: bold;">return</span><span style="color: #339933;">;</span>
  <span style="color: #003366; font-weight: bold;">var</span> xx <span style="color: #339933;">=</span> areaData.<span style="color: #006600;">x</span><span style="color: #339933;">-</span>evt.<span style="color: #006600;">x</span><span style="color: #339933;">;</span>
  <span style="color: #003366; font-weight: bold;">var</span> yy <span style="color: #339933;">=</span> areaData.<span style="color: #006600;">y</span><span style="color: #339933;">-</span>evt.<span style="color: #006600;">y</span><span style="color: #339933;">;</span>
  <span style="color: #003366; font-weight: bold;">var</span> radius <span style="color: #339933;">=</span> Math.<span style="color: #006600;">sqrt</span><span style="color: #009900;">&#40;</span>xx<span style="color: #339933;">*</span>xx<span style="color: #339933;">+</span>yy<span style="color: #339933;">*</span>yy<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>radius <span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #CC0000;">500</span><span style="color: #009900;">&#41;</span> radius <span style="color: #339933;">=</span> <span style="color: #CC0000;">500</span><span style="color: #339933;">;</span>
&nbsp;
  areaData.<span style="color: #006600;">radius</span> <span style="color: #339933;">=</span> radius<span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>areaData.<span style="color: #006600;">circle</span><span style="color: #009900;">&#41;</span>
    canvas.<span style="color: #006600;">remove</span><span style="color: #009900;">&#40;</span>areaData.<span style="color: #006600;">circle</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #003366; font-weight: bold;">var</span> c <span style="color: #339933;">=</span> canvas.<span style="color: #006600;">drawCircle</span><span style="color: #009900;">&#40;</span>areaData.<span style="color: #006600;">x</span><span style="color: #339933;">,</span> areaData.<span style="color: #006600;">y</span><span style="color: #339933;">,</span> radius<span style="color: #339933;">,</span> 0x0000ff<span style="color: #339933;">,</span> <span style="color: #CC0000;">30</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  areaData.<span style="color: #006600;">circle</span> <span style="color: #339933;">=</span> c<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>To gather wireless network location data we use following PHP script:</p>

<div class="wp_syntax"><div class="code"><pre class="php"><span style="color: #000000; font-weight: bold;">function</span> dist<span style="color: #009900;">&#40;</span><span style="color: #000033;">$x1</span><span style="color: #339933;">,</span><span style="color: #000033;">$y1</span><span style="color: #339933;">,</span><span style="color: #000033;">$x2</span><span style="color: #339933;">,</span><span style="color: #000033;">$y2</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  <span style="color: #000033;">$x</span> <span style="color: #339933;">=</span> <span style="color: #000033;">$x1</span><span style="color: #339933;">-</span><span style="color: #000033;">$x2</span><span style="color: #339933;">;</span>
  <span style="color: #000033;">$y</span> <span style="color: #339933;">=</span> <span style="color: #000033;">$y1</span><span style="color: #339933;">-</span><span style="color: #000033;">$y2</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">return</span> <span style="color: #990000;">sqrt</span><span style="color: #009900;">&#40;</span><span style="color: #000033;">$x</span><span style="color: #339933;">*</span><span style="color: #000033;">$x</span><span style="color: #339933;">+</span><span style="color: #000033;">$y</span><span style="color: #339933;">*</span><span style="color: #000033;">$y</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000033;">$x</span> <span style="color: #339933;">=</span> <span style="color: #990000;">floatval</span><span style="color: #009900;">&#40;</span><span style="color: #000033;">$_REQUEST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;x&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000033;">$y</span> <span style="color: #339933;">=</span> <span style="color: #990000;">floatval</span><span style="color: #009900;">&#40;</span><span style="color: #000033;">$_REQUEST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;y&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000033;">$r</span> <span style="color: #339933;">=</span> <span style="color: #990000;">floatval</span><span style="color: #009900;">&#40;</span><span style="color: #000033;">$_REQUEST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;r&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000033;">$scale</span> <span style="color: #339933;">=</span> <span style="color: #990000;">floatval</span><span style="color: #009900;">&#40;</span><span style="color: #000033;">$_REQUEST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;s&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000033;">$bound_check</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000033;">$_REQUEST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;xmin&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  <span style="color: #000033;">$xmin</span> <span style="color: #339933;">=</span> <span style="color: #990000;">floatval</span><span style="color: #009900;">&#40;</span><span style="color: #000033;">$_REQUEST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;xmin&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000033;">$xmax</span> <span style="color: #339933;">=</span> <span style="color: #990000;">floatval</span><span style="color: #009900;">&#40;</span><span style="color: #000033;">$_REQUEST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;xmax&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000033;">$ymin</span> <span style="color: #339933;">=</span> <span style="color: #990000;">floatval</span><span style="color: #009900;">&#40;</span><span style="color: #000033;">$_REQUEST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;ymin&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000033;">$ymax</span> <span style="color: #339933;">=</span> <span style="color: #990000;">floatval</span><span style="color: #009900;">&#40;</span><span style="color: #000033;">$_REQUEST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;ymax&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000033;">$bound_check</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot; AND x(point) &amp;gt; $xmin AND x(point) &amp;lt; $xmax AND y(point) &amp;gt;
                         $ymin AND y(point) &amp;lt; $ymax &quot;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000033;">$link</span> <span style="color: #339933;">=</span> <span style="color: #990000;">pg_Connect</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;dbname=wigle user=username password=password&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000033;">$query</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;SELECT ssid,
                 qos,
                 netid,
                 x(point) as x,
                 y(point) as y
          FROM wigle
          WHERE st_dwithin(point,GeomFromText('POINT($x $y)',54004),$r)
                $bound_check
          ORDER BY qos DESC
         &quot;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000033;">$result</span> <span style="color: #339933;">=</span> <span style="color: #990000;">pg_exec</span><span style="color: #009900;">&#40;</span><span style="color: #000033;">$link</span><span style="color: #339933;">,</span> <span style="color: #000033;">$query</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000033;">$ar</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000033;">$len</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
<span style="color: #000033;">$d</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">30</span><span style="color: #339933;">*</span><span style="color: #000033;">$scale</span><span style="color: #339933;">/</span><span style="color: #cc66cc;">3779.527559055</span><span style="color: #339933;">;</span>
<span style="color: #000033;">$count</span> <span style="color: #339933;">=</span> <span style="color: #990000;">count</span><span style="color: #009900;">&#40;</span><span style="color: #000033;">$rows</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000033;">$i</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #000033;">$i</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #000033;">$count</span><span style="color: #339933;">;</span> <span style="color: #000033;">$i</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  <span style="color: #000033;">$data</span> <span style="color: #339933;">=</span> <span style="color: #000033;">$rows</span><span style="color: #009900;">&#91;</span><span style="color: #000033;">$i</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
  <span style="color: #000033;">$flag</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000033;">$e</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #000033;">$e</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #000033;">$len</span><span style="color: #339933;">;</span> <span style="color: #000033;">$e</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
  <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>dist<span style="color: #009900;">&#40;</span><span style="color: #000033;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;x&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span><span style="color: #000033;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;y&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span><span style="color: #000033;">$ar</span><span style="color: #009900;">&#91;</span><span style="color: #000033;">$e</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;x&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span><span style="color: #000033;">$ar</span><span style="color: #009900;">&#91;</span><span style="color: #000033;">$e</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;y&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #000033;">$d</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
      <span style="color: #000033;">$flag</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
      <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000033;">$flag</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">continue</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #000033;">$len</span><span style="color: #339933;">++;</span>
&nbsp;
  <span style="color: #990000;">array_push</span><span style="color: #009900;">&#40;</span><span style="color: #000033;">$ar</span><span style="color: #339933;">,</span><span style="color: #000033;">$data</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #990000;">ob_start</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;ob_gzhandler&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #990000;">echo</span> json_encode<span style="color: #009900;">&#40;</span><span style="color: #000033;">$ar</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #990000;">pg_close</span><span style="color: #009900;">&#40;</span><span style="color: #000033;">$link</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Finally to display gathered data we use following JavaScript:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript"><span style="color: #006600; font-style: italic;">//stores visible access points</span>
<span style="color: #003366; font-weight: bold;">var</span> visibleAp <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Array<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">function</span> getAP<span style="color: #009900;">&#40;</span>ap<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  <span style="color: #009966; font-style: italic;">/* we go through all received access points.
  if access point isn't already displayed
  we display it using marker.add method */</span>
&nbsp;
  <span style="color: #003366; font-weight: bold;">var</span> ap <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">eval</span><span style="color: #009900;">&#40;</span>ap<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #003366; font-weight: bold;">var</span> maxCount <span style="color: #339933;">=</span> <span style="color: #CC0000;">7</span><span style="color: #339933;">;</span>
  <span style="color: #003366; font-weight: bold;">var</span> frequency <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>Math.<span style="color: #006600;">PI</span><span style="color: #339933;">/</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">/</span>maxCount<span style="color: #339933;">;</span>
  <span style="color: #003366; font-weight: bold;">var</span> tmpvisibleAp <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Array<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>i<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> ap.<span style="color: #006600;">length</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
  <span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>ap<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #000066; font-weight: bold;">continue</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>visibleAp<span style="color: #009900;">&#91;</span>ap<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006600;">netid</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
      tmpvisibleAp<span style="color: #009900;">&#91;</span>ap<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006600;">netid</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> visibleAp<span style="color: #009900;">&#91;</span>ap<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006600;">netid</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
      visibleAp<span style="color: #009900;">&#91;</span>ap<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006600;">netid</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">;</span>
      <span style="color: #000066; font-weight: bold;">continue</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #003366; font-weight: bold;">var</span> k <span style="color: #339933;">=</span> ap<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006600;">qos</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>k <span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span> maxCount<span style="color: #009900;">&#41;</span>
    k <span style="color: #339933;">=</span> maxCount<span style="color: #339933;">;</span>
&nbsp;
    ap<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006600;">icon</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;/wigle/wifi.swf&quot;</span><span style="color: #339933;">;</span>
    ap<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006600;">color</span> <span style="color: #339933;">=</span> calculateColor<span style="color: #009900;">&#40;</span> frequency <span style="color: #339933;">*</span> <span style="color: #009900;">&#40;</span>maxCount<span style="color: #339933;">-</span>k<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    ap<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006600;">title</span> <span style="color: #339933;">=</span> ap<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006600;">ssid</span>
    ap<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006600;">content</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;QoS: &quot;</span><span style="color: #339933;">+</span>ap<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006600;">qos</span><span style="color: #339933;">;</span>
    tmpvisibleAp<span style="color: #009900;">&#91;</span>ap<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006600;">netid</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> marker.<span style="color: #006600;">add</span><span style="color: #009900;">&#40;</span>ap<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>h <span style="color: #000066; font-weight: bold;">in</span> visibleAp<span style="color: #009900;">&#41;</span>
  <span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>visibleAp<span style="color: #009900;">&#91;</span>h<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>
      marker.<span style="color: #006600;">remove</span><span style="color: #009900;">&#40;</span>visibleAp<span style="color: #009900;">&#91;</span>h<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  visibleAp <span style="color: #339933;">=</span> tmpvisibleAp<span style="color: #339933;">;</span>
  document.<span style="color: #006600;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;message&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006600;">innerHTML</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>On mouse up and zoom event we’ll update visible access points and wireless network concentration by following code:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript"><span style="color: #003366; font-weight: bold;">function</span> Update<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  <span style="color: #009966; font-style: italic;">/*
  if access points are displayed then we refresh them
  by using current visible bound.
&nbsp;
  if scale if less then 30000 then we refresh wireless
  concentration too.
  */</span>
  <span style="color: #003366; font-weight: bold;">var</span> scale <span style="color: #339933;">=</span> fn.<span style="color: #006600;">getScale</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>areaData<span style="color: #009900;">&#41;</span>
  <span style="color: #009900;">&#123;</span>
    <span style="color: #003366; font-weight: bold;">var</span> b <span style="color: #339933;">=</span> fn.<span style="color: #006600;">getViewBound</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #003366; font-weight: bold;">var</span> query  <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;&amp;amp;x=&quot;</span><span style="color: #339933;">+</span>areaData.<span style="color: #006600;">x</span><span style="color: #339933;">+</span><span style="color: #3366CC;">&quot;&amp;amp;y=&quot;</span><span style="color: #339933;">+</span>areaData.<span style="color: #006600;">y</span><span style="color: #339933;">+</span><span style="color: #3366CC;">&quot;&amp;amp;r=&quot;</span><span style="color: #339933;">+</span>areaData.<span style="color: #006600;">d</span><span style="color: #339933;">+</span><span style="color: #3366CC;">&quot;&amp;amp;s=&quot;</span><span style="color: #339933;">+</span>fn.<span style="color: #006600;">getScale</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    query <span style="color: #339933;">+=</span> <span style="color: #3366CC;">&quot;&amp;amp;xmin=&quot;</span><span style="color: #339933;">+</span>b.<span style="color: #006600;">xMin</span><span style="color: #339933;">+</span><span style="color: #3366CC;">&quot;&amp;amp;xmax=&quot;</span><span style="color: #339933;">+</span>b.<span style="color: #006600;">xMax</span><span style="color: #339933;">+</span><span style="color: #3366CC;">&quot;&amp;amp;ymin=&quot;</span><span style="color: #339933;">+</span>b.<span style="color: #006600;">yMin</span><span style="color: #339933;">+</span><span style="color: #3366CC;">&quot;&amp;amp;ymax=&quot;</span><span style="color: #339933;">+</span>b.<span style="color: #006600;">yMax</span><span style="color: #339933;">;</span>
    xmlhttpPost<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;/wigle/getAP.php&quot;</span><span style="color: #339933;">,</span>query<span style="color: #339933;">,</span>getAP<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>scale <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #CC0000;">30000</span><span style="color: #009900;">&#41;</span>
  getWirelessConcentration<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">function</span> updateWithTimer<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  window.<span style="color: #006600;">clearTimeout</span><span style="color: #009900;">&#40;</span>updateTimer<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  updateTimer <span style="color: #339933;">=</span> window.<span style="color: #006600;">setTimeout</span><span style="color: #009900;">&#40;</span>Update<span style="color: #339933;">,</span><span style="color: #CC0000;">500</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Update (4. August 2008): WiGLE login method written in PHP:</p>

<div class="wp_syntax"><div class="code"><pre class="php"><span style="color: #000000; font-weight: bold;">function</span> http_parse_headers<span style="color: #009900;">&#40;</span><span style="color: #000033;">$header</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  <span style="color: #000033;">$retVal</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000033;">$fields</span> <span style="color: #339933;">=</span> <span style="color: #990000;">explode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> <span style="color: #990000;">preg_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/<span style="color: #000099; font-weight: bold;">\x</span>0D<span style="color: #000099; font-weight: bold;">\x</span>0A[<span style="color: #000099; font-weight: bold;">\x</span>09<span style="color: #000099; font-weight: bold;">\x</span>20]+/'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">' '</span><span style="color: #339933;">,</span> <span style="color: #000033;">$header</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span> <span style="color: #000033;">$fields</span> <span style="color: #b1b100;">as</span> <span style="color: #000033;">$field</span> <span style="color: #009900;">&#41;</span> 
  <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/([^:]+): (.+)/m'</span><span style="color: #339933;">,</span> <span style="color: #000033;">$field</span><span style="color: #339933;">,</span> <span style="color: #000033;">$match</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> 
    <span style="color: #009900;">&#123;</span>
      <span style="color: #000033;">$match</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">preg_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/(?&lt;=^|[<span style="color: #000099; font-weight: bold;">\x</span>09<span style="color: #000099; font-weight: bold;">\x</span>20<span style="color: #000099; font-weight: bold;">\x</span>2D])./e'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'strtoupper(&quot;<span style="color: #000099; font-weight: bold;">\0</span>&quot;)'</span><span style="color: #339933;">,</span> <span style="color: #990000;">strtolower</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">trim</span><span style="color: #009900;">&#40;</span><span style="color: #000033;">$match</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000033;">$retVal</span><span style="color: #009900;">&#91;</span><span style="color: #000033;">$match</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>           
        <span style="color: #000033;">$retVal</span><span style="color: #009900;">&#91;</span><span style="color: #000033;">$match</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #000033;">$retVal</span><span style="color: #009900;">&#91;</span><span style="color: #000033;">$match</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000033;">$match</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
       <span style="color: #b1b100;">else</span>        
        <span style="color: #000033;">$retVal</span><span style="color: #009900;">&#91;</span><span style="color: #000033;">$match</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">trim</span><span style="color: #009900;">&#40;</span><span style="color: #000033;">$match</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>     
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
  <span style="color: #b1b100;">return</span> <span style="color: #000033;">$retVal</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> wigle_login<span style="color: #009900;">&#40;</span><span style="color: #000033;">$user</span><span style="color: #339933;">,</span><span style="color: #000033;">$pass</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>     
  <span style="color: #000033;">$ch</span> <span style="color: #339933;">=</span> curl_init<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// set the target url</span>
  curl_setopt<span style="color: #009900;">&#40;</span><span style="color: #000033;">$ch</span><span style="color: #339933;">,</span> CURLOPT_URL<span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;http://wigle.net/gps/gps/GPSDB/login&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// how many parameters to post</span>
  curl_setopt<span style="color: #009900;">&#40;</span><span style="color: #000033;">$ch</span><span style="color: #339933;">,</span> CURLOPT_POST<span style="color: #339933;">,</span> <span style="color: #cc66cc;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// post parameters</span>
  curl_setopt<span style="color: #009900;">&#40;</span><span style="color: #000033;">$ch</span><span style="color: #339933;">,</span> CURLOPT_POSTFIELDS<span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;credential_0=&quot;</span><span style="color: #339933;">.</span><span style="color: #000033;">$user</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&amp;credential_1=&quot;</span><span style="color: #339933;">.</span><span style="color: #000033;">$pass</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&amp;noexpire=off&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>      
&nbsp;
  curl_setopt <span style="color: #009900;">&#40;</span><span style="color: #000033;">$ch</span><span style="color: #339933;">,</span> CURLOPT_HEADER<span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>   
  curl_setopt<span style="color: #009900;">&#40;</span><span style="color: #000033;">$ch</span><span style="color: #339933;">,</span> CURLOPT_RETURNTRANSFER  <span style="color: #339933;">,</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #000033;">$result</span> <span style="color: #339933;">=</span> curl_exec<span style="color: #009900;">&#40;</span><span style="color: #000033;">$ch</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>               
&nbsp;
  curl_close <span style="color: #009900;">&#40;</span><span style="color: #000033;">$ch</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
&nbsp;
  <span style="color: #b1b100;">return</span> <span style="color: #000033;">$result</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> getWigleCookie<span style="color: #009900;">&#40;</span><span style="color: #000033;">$user</span><span style="color: #339933;">,</span><span style="color: #000033;">$pass</span><span style="color: #339933;">,</span><span style="color: #000033;">$noexpire</span><span style="color: #339933;">=</span><span style="color: #000000; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span> 
<span style="color: #009900;">&#123;</span>        
  <span style="color: #000033;">$cookie</span> <span style="color: #339933;">=</span> wigle_login<span style="color: #009900;">&#40;</span><span style="color: #000033;">$user</span><span style="color: #339933;">,</span><span style="color: #000033;">$pass</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
  <span style="color: #000033;">$headers</span> <span style="color: #339933;">=</span> http_parse_headers<span style="color: #009900;">&#40;</span><span style="color: #000033;">$cookie</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>             
&nbsp;
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000033;">$headers</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'Set-Cookie'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">||</span> <span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000033;">$headers</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'Set-Cookie'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> 
    <span style="color: #b1b100;">return</span> <span style="color: #000000; font-weight: bold;">false</span><span style="color: #339933;">;</span>        
&nbsp;
  <span style="color: #000033;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;wigle_cookie&quot;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000033;">$headers</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'Set-Cookie'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #b1b100;">return</span> <span style="color: #000000; font-weight: bold;">true</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #990000;">session_start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000033;">$_REQUEST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;logout&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> 
  <span style="color: #990000;">unset</span><span style="color: #009900;">&#40;</span><span style="color: #000033;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;wigle_cookie&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>getWigleCookie<span style="color: #009900;">&#40;</span><span style="color: #000033;">$_REQUEST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;user&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span><span style="color: #000033;">$_REQUEST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;pass&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
  <span style="color: #990000;">echo</span> <span style="color: #0000ff;">&quot;ok&quot;</span><span style="color: #339933;">;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.flashnavigator.net/tutorials/web-gis-tutorial-wigle/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Karabo</title>
		<link>http://www.flashnavigator.net/users/karabo/</link>
		<comments>http://www.flashnavigator.net/users/karabo/#comments</comments>
		<pubDate>Sat, 12 Jul 2008 12:51:18 +0000</pubDate>
		<dc:creator>Omnisdata</dc:creator>
		
		<category><![CDATA[Used By]]></category>

		<guid isPermaLink="false">http://localhost/flashnavigator/?p=29</guid>
		<description><![CDATA[Karabo project - it enables users to locate their nearest testing, treatment and counselling sites for all South Africans.
]]></description>
			<content:encoded><![CDATA[<p>Karabo project - it enables users to locate their nearest testing, treatment and counselling sites for all South Africans.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flashnavigator.net/users/karabo/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Kalyo</title>
		<link>http://www.flashnavigator.net/users/kalyo/</link>
		<comments>http://www.flashnavigator.net/users/kalyo/#comments</comments>
		<pubDate>Sat, 12 Jul 2008 12:43:44 +0000</pubDate>
		<dc:creator>Omnisdata</dc:creator>
		
		<category><![CDATA[Used By]]></category>

		<guid isPermaLink="false">http://localhost/flashnavigator/?p=26</guid>
		<description><![CDATA[French telecommunications &#038; Information company
]]></description>
			<content:encoded><![CDATA[<p>French telecommunications &#038; Information company</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flashnavigator.net/users/kalyo/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Immo-top Croatia</title>
		<link>http://www.flashnavigator.net/users/immo-top-croatia/</link>
		<comments>http://www.flashnavigator.net/users/immo-top-croatia/#comments</comments>
		<pubDate>Sat, 12 Jul 2008 12:43:07 +0000</pubDate>
		<dc:creator>Omnisdata</dc:creator>
		
		<category><![CDATA[Used By]]></category>

		<guid isPermaLink="false">http://localhost/flashnavigator/?p=27</guid>
		<description><![CDATA[Part of austrian Erwin Hammerlitz Beteiligung GmbH corporation
]]></description>
			<content:encoded><![CDATA[<p>Part of austrian Erwin Hammerlitz Beteiligung GmbH corporation</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flashnavigator.net/users/immo-top-croatia/feed/</wfw:commentRss>
		</item>
		<item>
		<title>About flashNavigator</title>
		<link>http://www.flashnavigator.net/uncategorized/about-flashnavigator/</link>
		<comments>http://www.flashnavigator.net/uncategorized/about-flashnavigator/#comments</comments>
		<pubDate>Sat, 12 Jul 2008 12:08:29 +0000</pubDate>
		<dc:creator>Omnisdata</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://localhost/flashnavigator/?p=25</guid>
		<description><![CDATA[
flashNavigator is a rapid development framework, used for publishing geospatial (GIS and CAD) data with Adobe Flash technology in web, desktop and mobile applications. Unlike other solutions it provides tiled vector to vector conversion of GIS and CAD files and database formats to Flash.


Adobe Flash utilizes a vector file format (SWF) which makes it great [...]]]></description>
			<content:encoded><![CDATA[<p>
flashNavigator is a rapid development framework, used for publishing geospatial (GIS and CAD) data with Adobe Flash technology in web, desktop and mobile applications. Unlike other solutions it provides tiled vector to vector conversion of GIS and CAD files and database formats to Flash.
</p>
<p>
Adobe Flash utilizes a vector file format (SWF) which makes it great for GIS and CAD applications. The format is also optimized in consideriation to size, making it great for environments like the Internet.
</p>
<p>
flashNavigator viewer is an optimized Flash component. The viewer core has a total size of around 20 KB with a preloader of 4 KB. The core engine can be extended with custom plugins, which make the entire solution very flexible for usage in target applications.
</p>
<p>
flashNavigator is suited for use in simple (lite) projects utilizing only basic functionality, but it can also be used in enterprise projects which require complex functionality. It can be integrated into almost any current and upcoming web, desktop and mobile technology that supports Flash or Flash Lite.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flashnavigator.net/uncategorized/about-flashnavigator/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Erste nekretnine</title>
		<link>http://www.flashnavigator.net/users/erste-nekretnine/</link>
		<comments>http://www.flashnavigator.net/users/erste-nekretnine/#comments</comments>
		<pubDate>Sat, 12 Jul 2008 12:06:26 +0000</pubDate>
		<dc:creator>Omnisdata</dc:creator>
		
		<category><![CDATA[Used By]]></category>

		<guid isPermaLink="false">http://localhost/flashnavigator/?p=24</guid>
		<description><![CDATA[Croatian real estate company
]]></description>
			<content:encoded><![CDATA[<p><span class="ref_comment">Croatian real estate company</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.flashnavigator.net/users/erste-nekretnine/feed/</wfw:commentRss>
		</item>
		<item>
		<title>WebMap service implementation - Erste nekretnine</title>
		<link>http://www.flashnavigator.net/news/webmap-service-implementation-erste-nekretnine/</link>
		<comments>http://www.flashnavigator.net/news/webmap-service-implementation-erste-nekretnine/#comments</comments>
		<pubDate>Sat, 21 Jun 2008 12:42:10 +0000</pubDate>
		<dc:creator>Omnisdata</dc:creator>
		
		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://localhost/omnisdata/wp/?p=7</guid>
		<description><![CDATA[Omnisdata has implemented WebMap service for Croatian real estate company &#8220;Erste Nekretnine&#8221; (part of the Erste Bank group).
Official Erste Nekretnine website.
]]></description>
			<content:encoded><![CDATA[<p>Omnisdata has implemented WebMap service for Croatian real estate company &#8220;Erste Nekretnine&#8221; (part of the Erste Bank group).</p>
<p><a href="http://www.erstenekretnine.hr/" target="_blank">Official Erste Nekretnine website</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flashnavigator.net/news/webmap-service-implementation-erste-nekretnine/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Signed agreement with French company Kalyo</title>
		<link>http://www.flashnavigator.net/news/signed-agreement-with-french-company-kalyo/</link>
		<comments>http://www.flashnavigator.net/news/signed-agreement-with-french-company-kalyo/#comments</comments>
		<pubDate>Mon, 09 Jun 2008 12:40:28 +0000</pubDate>
		<dc:creator>Omnisdata</dc:creator>
		
		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://localhost/omnisdata/wp/?p=6</guid>
		<description><![CDATA[Omnisdata has signed agreement with French company Kalyo about development of web-based GIS solution intended for telecommunication industry. The solution will be based on technology flashNavigator which will provide interactive visualization and analysis of telecommunication network information by implementing Geographical Information System (GIS) standards.
]]></description>
			<content:encoded><![CDATA[<p>Omnisdata has signed agreement with French company Kalyo about development of web-based GIS solution intended for telecommunication industry. The solution will be based on technology flashNavigator which will provide interactive visualization and analysis of telecommunication network information by implementing Geographical Information System (GIS) standards.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flashnavigator.net/news/signed-agreement-with-french-company-kalyo/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
