Archive: Google Maps

Page 1 of 3 1 2 3

July 22, 2008

PocketMod and Mapufacture: the anti-iPhone

Here's a clever way to fold an 8.5x11 sheet of paper into a small book. The way it's folded, all of the book's 8 outward-facing pages are from the same side of the sheet of paper. This allows you to easily construct a handy little daily planner by printing a single sheet of paper. When you're done folding, the first and third leaf will have a little pouch that you can shove a business card or two inside.

pocketmod_20080722.jpg

The PocketMod website has a flash application that lets you quickly build a layout for your planner. You can drag calendars, todo-lists, grids, conversion tables, and even RSS feed articles to the page and print it directly from your browser.

I love it. It's the iPhone for the mobile Luddite.

You're probably thinking: this pocketmod thing is awesome and all, but what about maps? Well, PocketMod does maps too. Or rather, a cool Web2.0 mapping service does PocketMods.

At mapufacture.com, you can create and manage custom maps and import data layers from news sources, geo blogging services, and Google My Maps. In addition to all the normal embedding and sharing tools that you'd expect, they also have a PocketMod export, allowing you to convert your map into a handy format that you can put in your back pocket.

You can't make phone calls on your PocketMod and it doesn't hold any songs you can't sing or whistle yourself. On the other hand, it's crazy slim, 3rd party application writing is a cinch, the data plan is affordable, and you won't believe the battery life.

PocketMod
Mapufacture - create custom multilayer maps (with pocketmod output support)

Posted by Jason Striegel | Jul 22, 2008 10:24 PM
Google Maps, Life, Lifehacker, Mapping, Productivity | Permalink | Comments (1) | TrackBack | Digg It | Tag w/del.icio.us

July 10, 2008

Mapstraction - map abstraction API for Javascript

mapstraction_20080710.jpg

Mapstraction is an abstracted Javascript mapping API that can make use of Google Maps, Microsoft Virtual Earth, Yahoo Maps and Mapquest. Instead of deciding on a particular mapping provider, you can build your web application with Mapstraction and easily switch to a different service by changing a single line of code. From the Mapstraction site:

Mapstraction additionally fills some holes each provider's current offerings (taking advantage of existing open source solutions where possible) to normalise the feature set across platforms. In the future, Mapstraction will also talk to OpenStreetMap for people who want to build maps without restrictions on derived works.

Features

  • Support for 9 major mapping providers
  • Point, Line, Polygon support
  • Image overlay
  • GeoRSS and KML feed import
  • Geocoding of addresses
  • Driving directions

There's an introductory walkthrough on Webmonkey that shows you how to do the basics like instantiating a map with various providers and adding markers with the abstracted API. The Mapstraction web site also has demos for geocoding, drawing polygons, and swapping map tiles. The API appears to cover all the bases. I can't think of any reason to directly use a specific map provider instead of this.

Mapstraction
WebMonkey Mapstraction Tutorial

Posted by Jason Striegel | Jul 10, 2008 11:42 PM
Google Maps, Mapping, Yahoo! | Permalink | Comments (0) | TrackBack | Digg It | Tag w/del.icio.us

July 7, 2008

PlaceSpotting - Google Maps geo quiz

placespotting_20080707.jpg

Martin Fussen tipped us off to PlaceSpotting, a user-contributed geo quiz map mashup. The idea is to create puzzles for your friends to solve by picking an obscure landmark and supplying them with a few hints. Your friends can then zoom around on the map to find the location. If they position the map at the right zoom level and over the location the puzzle is solved. I have to say this is a pretty fun way to learn a bit about the world, especially if you're in to puzzles and treasure hunts.

You can search and browse a large library of entries that other people have created. There are a significant number of entries in German, and many of the landmarks are within Europe, but there's nothing stopping you from dropping a few landmarks near the place you call home.

PlaceSpotting

Posted by Jason Striegel | Jul 7, 2008 08:17 PM
Education, Google Maps, World | Permalink | Comments (0) | TrackBack | Digg It | Tag w/del.icio.us

June 14, 2008

GasPriceWatch - find cheaper pumps

gasprice_20090614.jpg

I really don't drive that much, so when I fill up every month or two, the experience is normally accompanied by equal parts shock and foul language. The strange thing is that the price of gas is always significantly more expensive in the city, and every once in a while, you can happen across a random station that is selling fuel for more than 10 cents a gallon less than everyone else.

It's counter productive to drive all over looking for the cheapest pump, so instead you can use the GasPriceWatch Google Maps mashup to surf pump prices from home. Site visitors report in with updated pump prices, and hopefully there will be a good find along your normal commute route.

Google Maps Mania has a few links to some other maps-related gas tools that you may also be interested in. As for me, I'm sticking to pedaling.

GasPriceWatch
Finding Cheap Gas on Google Maps

See also: Hypermiling: Hack Your Mileage

Posted by Jason Striegel | Jun 14, 2008 09:01 PM
Cars, Google Maps, Transportation | Permalink | Comments (3) | TrackBack | Digg It | Tag w/del.icio.us

June 3, 2008

Google Earth has a Javascript API

Google released a plug-in, currently for Windows browsers only, that allows you to embed the Earth application inside the browser. Existing Google Maps mashups can use some of the functionality right away just by adding the G_SATELLITE_3D_MAP map type. Even more exciting is that you can interact more deeply with the map—including camera angles, KML layers, and 3D models—right from Javascript. I'm so eager to go find a PC to play around with this that I'll let the video speak for itself.

Also worth noting is that Google just released an official Maps API for Flash AS3. Call me a fanboy, but I think my head is spinning.

Google Earth API
Some Example Applications
Maps API for Flash

Posted by Jason Striegel | Jun 3, 2008 09:12 PM
Ajax, Flash, Google Earth, Google Maps, Mapping | Permalink | Comments (0) | TrackBack | Digg It | Tag w/del.icio.us

May 3, 2008

Update the hacker map

hackermap_20080503.jpg

When I created the "Hackers in Your Neighborhood" map last December, I wasn't sure what the response would be. I was really happy to see it end up being really positive, with lots of hackers and organizations adding their marker to the map.

I was just peeking in on its progress today and it looks like it's still alive with minimal vandalization and with lots of individuals and user groups making it to the list.

Some of the momentum has died down a bit, though, so now seems like a good time to do a little spring cleaning. Update your own record, if necessary, and make sure you list or update any hacker-friendly clubs or organizations that you know about. My hope is that this will make it easier for people to network and discover groups near them that they can participate in.

The same instructions still apply: Click the link to connect to the map, log in to your Google account, and you'll find an "Edit" button on the left. Clicking this will put the map in edit mode, where you can drag a new marker onto the map for yourself. Then just toss your name into the title and put your interests and project websites in the description field. If you're already on them map, select the marker you want to edit (try not to screw up others) and then update the text field.

For your personal icons, don't put it right on your address unless you really don't mind giving that info out. Centered on your city, town or neighborhood works fine too.

Some big goals for this round:

  • A club listed in every metropolitan area of the U.S. (red icon)
  • More resources for places to buy related parts or electronics ($ icon)
  • Coffee shops with free WiFi where fellow hackers are typically found (coffee icon)
  • Better representation in South America,
    Africa, Eastern Europe, Asia, and Australia

Big shout outs go to the Philly Linux User's Group, which is the most recent addition to the map, the Twin Cities Robotics Club, who are doing a fine job representing my home base, and Raj, our sole hacker in all of India.

It goes without saying, but when you're done updating the map, try and track down an organization or a few interested folks in your area. You have your assignment. Now get out there and go put some brains together.

The Hackers in Your Neighborhood: Collaborative Hacker Map

Posted by Jason Striegel | May 3, 2008 08:45 PM
Google Maps, Life | Permalink | Comments (0) | TrackBack | Digg It | Tag w/del.icio.us

April 26, 2008

iPhone LoJack - location tracking for your iPhone

Erica Sadun put together a great tool for iPhone users who'd like to keep tabs on their iPhone's location. Instead of GPS tracking, a small binary called 'findme' is used to geolocate the device based on nearby cell towers.

Combined with a simple curl shell script, a private Twitter account, and a scheduled launch daemon, your iPhone can then report its location at regular intervals, which you (or anyone you authorize) can follow using Twitter and Google Maps. You could use this to find your phone if it's lost or stolen, or you might just use it to give your friends and family a way to track your current location.

iPhone LoJack

Related posts:
Command Line Twitter
Open GPS Tracker

Posted by Jason Striegel | Apr 26, 2008 08:21 PM
Google Maps, Life, Mapping, iPhone | Permalink | Comments (0) | TrackBack | Digg It | Tag w/del.icio.us

April 24, 2008

Open GPS Tracker

gpstracker_20080424.jpg

Now this looks like fun:

The Open GPS Tracker is a small device which plugs into a $20 prepaid mobile phone to make a GPS tracker. The Tracker responds to text message commands, detects motion, and sends you its exact position, ready for Google Maps or your mapping software. The Tracker firmware is open source and user-customizable.

From the looks of things, the total cost to build a remote-operated GPS tracking unit is on the order of $100. The design uses a prepaid cell phone to receive commands and report its position via SMS.

I'm sure there are a number of boring nefarious application for this that will freak out a lot of folks, but just think about the more interesting possibilities. You could add this to a weather balloon or autonomous flying vehicle easily track it down if there were any flight problems. A bunch of people in any city could put these in their cars on a short time delay and automatically report traffic flow conditions. You could even roll your own "lo-jack" system that would let you find your car if it was stolen, only with this your car's location is only being reported to you instead of a monitoring station, actually increasing your privacy.

Open GPS Tracker

Posted by Jason Striegel | Apr 24, 2008 08:38 PM
Electronics, Google Maps, Mobile Phones, Transportation | Permalink | Comments (1) | TrackBack | Digg It | Tag w/del.icio.us

April 7, 2008

Javascript marker clustering for Google Maps

gmapcluster_20080407.jpg

Everyone who works with large data sets in Google Maps has come across the problem of displaying a bunch of markers in a small area. Not just an eyesore, displaying anything more than a hundred marker icons at a time can bog the browser down on a lot of platforms, Safari on PPC Macs delivering the most pain.

The solution is to cluster nearby markers into an aggregate marker when there are too many markers being displayed, or when markers are so close at a particular zoom level that they completely overlap. For extremely large datasets this is most efficiently done on the back-end, with successive AJAX calls refreshing the marker set from a PHP script that filters out the visible markers from the set.

You can also handle the clustering on the client side, using javascript to scan the entire set of locations and dynamically determine what's visible and what should be clustered. The downside is that you have to download the entire set and store it in the browser's memory, but unless you start getting well into tens of thousands of markers this isn't a big deal. The benefit to the client side method is that it's less complex, it lets you work around large result sets from back-end APIs that you can't control, and with ACME Labs' Clusterer javascript library it's extremely easy to code.

To use Clusterer, first download and include the Clusterer2.js file from the link below in your maps page. Then you need to instantiate a Clusterer object, passing your map object to its constructor:

var clusterManager = new Clusterer(map);

From there, you use it in place of the traditional MarkerManager or any addOverlay calls by calling the Clusterer's addMarker method. It takes two parameters, the marker to add, and a text string that will be listed in the cluster's contents when it is clicked:

clusterManager.AddMarker(marker, "Marker Description");

The cluster manager will take care of all the dirty work, only displaying items when they are within your view, and dynamically clustering them appropriately when there are too many on the screen at once. When one of the clusters is clicked, it will display a list of the locations inside of it. Most of what you'd want to tweak, like the threshold at which to start clustering and the icon used for representing a cluster, are all adjustable through the API via some self-explanatory methods such as SetMaxVisibleMarkers(n) and SetIcon(icon). Follow the link below for more information, or read the source for a few of the less-documented options.

Clusterer documentation
Clusterer source

Posted by Jason Striegel | Apr 7, 2008 09:56 PM
Google Maps, Software Engineering | Permalink | Comments (2) | TrackBack | Digg It | Tag w/del.icio.us

March 10, 2008

SketchUp has a Ruby API

gsruby_20080310.jpg

I guess it's been available for a few months, but I just noticed that there's a Ruby API for Google SketchUp. Looks like a cool tool for extending the building interface, integrating SketchUp entities with external software, and building procedural stuff, like making terrain or stairs.

Here's a video of SketchUp developer Mark Limber talking about some of the possible ways to extend the software with the Ruby API.

Google SketchUp Ruby API - Link
SketchUp API Blog - Link

Posted by Jason Striegel | Mar 10, 2008 07:05 PM
Google, Google Earth, Google Maps, Software Engineering | Permalink | Comments (2) | TrackBack | Digg It | Tag w/del.icio.us

March 2, 2008

Point polygon intersection in SQL

pointpoly_20080302.jpg

update: As readers noted, it's not the 0 degrees longitude that's the problem, it's at 180 degrees where you could encounter issues. I've also escaped the gt and lt symbols. Sorry about that.

I spent the weekend participating in the F1 Website Challenge, a coding marathon in which competing teams each produce a mythical man-month's worth of web site for a worthy non-profit organization—all in the space of 24 hours.

One of the challenges my team faced during development was finding an efficient way for detecting a particular service region for a given address. Our client, Metro Meals on Wheels, has a number of different regions in which they deliver meals, with each region being served by a particular Meals on Wheels organization. These regions are defined by non-overlapping complex polygons. It's not as simple as a normal vendor search, where you return the nearest location to the requested address. Instead you need to search a database of polygons to find the particular one which intersects the address location.

One of my teammates, Mark Seemann, ended up providing a fairly elegant solution to the problem, and was able to implement it in a simple SQL query. To find out if a point intersects a polygon, it's as simple as drawing a vector from the point and seeing how many line segments of the polygon it crosses. If the number is even, it's outside the polygon. If it's odd, you have an intersection.

So let's say you have a polygon database which has a row for each line segment of a polygon. You can quickly pull all segments that intersect a vector pointing directly east of your geocoded location like this:

SELECT poly_id, segment_id
    FROM segments
    WHERE ( lnga > thelng OR lngb > thelng )
          AND ( (lata > thelat AND latb < thelat )
              OR (latb > thelat AND lata < thelat ) )

That will return you a list of all line segments that you would cross if you walked directly east from the location at [thelat,thelng] (yes, this assumes you don't cross 180 degrees longitude). To determine the polygon (or polygons) that intersect our address, it's as simple as grouping by poly and returning all rows that have an odd number of matches:

SELECT poly_id, COUNT(segment_id) AS segment_count
    FROM segments
    WHERE ( lnga > thelng OR lngb > thelng )
          AND ( (lata > thelat AND latb < thelat )
              OR (latb > thelat AND lata < thelat ) )
          AND segment_count%2 = 1
    GROUP BY poly_id

Of course, the world isn't flat, though I've treated it this way for simplicity. If you wanted this to work for all cases, you'd need to limit your search to a particular distance and translate the coordinates so that the search didn't cross 180 degrees longitude.

Posted by Jason Striegel | Mar 2, 2008 07:15 PM
Google Maps, Mapping, SQL | Permalink | Comments (16) | TrackBack | Digg It | Tag w/del.icio.us

February 18, 2008

Actionscript mapping APIs

flashmap_20080218.jpg

Yahoo recently released an official AS3 API for Yahoo! Maps, which provides another option for Flash-based GIS applications. This adds to Mapquest's official AS3 API and a couple of partially-complete, open source AS2 APIs for Google Maps.

All of these services provide the traditional AJAX APIs, of course, and that's perfect for a lot of uses. By using Flash as the rendering engine, though, there are new options available for the developer. Things like incremental scaling between tile sets, map rotation, and more advanced multi-level vector and raster overlays immediately come to mind.

Yahoo! Maps for ActionScript 3.0 - Link
Google Maps Flash Interface - Link
MapQuest AS3 API - Link
UMap: Google Maps Flash Overlay (flash above above AJAX map) - Link

Posted by Jason Striegel | Feb 18, 2008 07:07 PM
Flash, Google Maps, Mapping, Yahoo! | Permalink | Comments (0) | TrackBack | Digg It | Tag w/del.icio.us

December 1, 2007

The hackers in your neighborhood

gmaps_collabmapping2_200712.jpg

Google recently added a collaboration feature to the "My Maps" area of Google Maps. Similar to the collaborative document editing in Google Docs, when you've made a map you can click the "Collaborate" link and share your map with specific people or the entire world. What's cool is that when you do the latter, you've effectively created a map wiki that anyone can edit, expand upon, and help maintain.

After messing around with the new collaboration feature for a bit, it occurred to me that we should make a map where we hackers can add our own markers and share interests and projects with each other. It might be a good way to network with people around you, and it's also just cool to see what projects people are working on around the world.

gmaps_collabmapping3_200712.jpg

So I went ahead and created the hackers in your neighborhood, an open-access collaborative map that we can use to map the hacker world. Some of my favorite hackers at Make and Craft have added themselves to the map already, but I'd love to see how far we can push this... maybe it'll become too many data points for gmaps to handle.

Just connect to the map, log in to your Google account, and you'll find an "Edit" button on the left. Clicking this will put the map in edit mode, where you can drag a new marker onto the map for yourself. Toss your name into the title and put your interests and project websites in the description field.

If you have a programming or robotics club, toss that in there too and give it a red marker or something.

gmaps_collabmapping_2007120.jpg

I should mention something else about the collaborative feature. As you can see above, it looks like PT from Makezine has tagged my digital hood with some mapfiti.

The one downside of the collaboration feature is that someone might end up vandalizing your work. In reality, though, most of these open-collaborative projects end up working really well just on good faith and community policing. It's why large open source projects work. It's why Wikipedia works. Frankly, I think Phil's Make: tag looks pretty sweet over Minneapolis anyway.

The Hackers in Your Neighborhood - Link

Posted by Jason Striegel | Dec 1, 2007 05:39 PM
Google Maps, Lifehacker, Mapping | Permalink | Comments (4) | TrackBack | Digg It | Tag w/del.icio.us

October 29, 2007

WikiPediaVision

wikivision_20071029.jpg

Here's another fun real-time Google Maps mashup, inspired by flickrvision and twittervision. WikiPediaVision displays recent anonymous edits to WikiPedia, showing you the article being edited, and where on the globe the edit came from. It's a nice way to passively graze interesting topics that someone else just got done thinking about. Why are these simple little maps hacks so addictive?

WikiPediaVision - Link

Posted by Jason Striegel | Oct 29, 2007 09:38 PM
Google Maps | Permalink | Comments (1) | TrackBack | Digg It | Tag w/del.icio.us

October 22, 2007

iPhone OpenStreetMap

iphoneosm_20071022.jpg

If you have a jailbreak'd iPhone, you can update the Maps.app database with tiles from OpenStreetMap. Mikel Maron figured out how to update the Maps sqlite DB and was able to import the street tiles for London.

My first idea was to modify the configuration or constant that the Maps App used for constructing Google Maps tile requests. Andrew helped with decompiling and pointers to other files, but we had no luck as yet. But looking at the app or at the GMM module in a hex editor, there appeared to be SQL inserts of tile pointers .. perhaps Maps was using a database to cache requested tiles. Searching through the filesystem found MapTiles.sqlitedb. That db has just two tables..

This is slick. You still use the built-in Maps interface, but you can add whatever you like to its database. Technically you could alter the database with any map tiles you like. One idea would be to make an alternate database file and fill it with topo-maps. Just swap the file out and you can use the Maps application when you're backpacking.

OpenStreetMap on the iPhone - Link
OpenStreetMap - Link
SQLite Tutorial - Link

Posted by Jason Striegel | Oct 22, 2007 06:47 PM
Google Maps, Mapping, iPhone | Permalink | Comments (0) | TrackBack | Digg It | Tag w/del.icio.us

Page 1 of 3 1 2 3

Bloggers

Welcome to the Hacks Blog!

Brian Jepson.Brian Jepson


Jason Striegel.Jason Striegel


Philip Torrone.Phillip Torrone



See all of the books in the Hacks Series!
Advertise here.

Recent Posts

www.flickr.com
photos in Hacks More photos in Hacks