view readme.html @ 2:1ab2941b2498 default tip

Added a sentence to readme.
author Atul Varma <varmaa@toolness.com>
date Sat, 09 Feb 2008 14:31:21 -0600
parents 0a09525111a6
children
line wrap: on
line source

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <title>GeoLeap Demo Readme</title>
    <link rel="stylesheet" type="text/css" href="map.css" />
  </head>
  <body>
    <h1>GeoLeap Demo Readme</h1>
    <p>Atul Varma<br/>February 8, 2008</p>
    <h2>Motivation</h2>
    <p><a href="index.html">GeoLeap Demo</a> is a simple project I undertook to re-acquaint (or in some cases, acquaint) myself with a number of Web technologies such as Javascript, DOMStorage, CSS, Web Services APIs, and Ajax.</p>
    <p>I've always found most mapping applications to be difficult to use due to their inherent complexity.  Since I'm moving to the Bay Area, though, I wanted to create a simple, humane interface that I could use to record my journeys around the area and allow myself and others to explore them visually.  Additionally, I thought it might be useful to create a foundation upon which a Linguistic Command-Line Interface (LCLI) could be used to operate on geographic selections.  This could allow for a very clean, simple interface that is still quite powerful and flexible.</p>
    <h2>The Interface</h2>
    <p>The interface is quite simple.  The user can click on a marker in the map to select it, at which point it becomes their <i>current selection</i>; the marker changes from gray to red to indicate it as such, and information about it is displayed in the right sidebar.</p>
    <p>The user can also GeoLeap by holding down the shift key and use it as a quasimode to incrementally search to a new location.  Any text in a location that matches the search text is then automatically highlighted as the search proceeds, and the user can release the shift key to make the active location their new selection.  For example, GeoLeaping to "Mount", should take you to the Mozilla office in Mountain View, CA; GeoLeaping to "Toro" should take you to the Mozilla office in Toronto; and GeoLeaping to "beer" should take you to the Hopleaf bar in Chicago.</p>
    <h2>Interface Improvements</h2>
    <p>This demo is pretty bare-bones and can be improved in a number of ways.  Examples that come to mind include:</p>
    <ul>
      <li>The metric used by GeoLeap is currently very poorly-defined: it's based on the first occurrence of the search string in the location text.  A better metric would be the bee-line distance from the current selection to any location that contains the search string, but there are lots of interesting possibilities.</li>
      <li>There's currently no functionality analogous to "find next".  One possible way to do this is for the user to press the left and right arrow keys while in the GeoLeap quasimode to navigate between locations.</li>
      <li>Hooking this up to some sort of LCLI so that commands can be invoked on the current selection.  For instance, one command called "show photos" might find flickr photos near the current selection, while a "stalk" command might take the user to a webcam observing the location, etc.</li>
      <li>The above can be further extended by implementing the concept of a <i>>secondary selection</i>, which could be the previously-selected location.  This would make it possible to execute commands that operate on two locations; for instance, someone could GeoLeap to "home" and then GeoLeap to "mozilla" and then execute the "make directions" command, which would generate directions from their home to the Mozilla office.</li>
      <li>Providing indication for the current location that the mouse is over, e.g. by making the marker color slightly brighter.</li>
      <li>Implementing some sort of interface to allow users to add and edit locations would be nice.</li>
      <li>Alternatively, an API that draws the locations from an RSS feed containing microformats with geocoded information could be interesting too; this would make it easy to create a simple, humane mashup that allows a user to geographically explore someone's blog.</li>
    </ul>
    <h2>The Implementation</h2>
    <p>I tried to separate all details of the visual layout out into a CSS file (<a href="map.css">map.css</a>).  All Javascript code is in <a href="map.js">map.js</a>; it's generally object-oriented in design and uses the Google Maps API.  A simple XML file, <a href="locationInfo.xml">locationInfo.xml</a>, contains information about locations, and missing geocoding information for any of these locations is dynamically fetched using Google's geocoding API and stored in the end-user's browser using DOMStorage.</p>
    <h2>Bugs</h2>
    <p>At present, the quasimodal GeoLeap functionality has only been tested on Firefox 2 and Firefox 3.  It's known to not work on Safari because that browser doesn't send Javascript events when the shift key is pressed and released.</p>
  </body>
</html>