Skip navigation

Google Maps becoming a gateway

When Google Maps first appeared on the scene, it wasn't a big game-changer in the online-map market. Mapquest was pretty well-established, and Google didn't really seem to have much to offer that Mapquest didn't have, apart from the ability to click and drag the map around (hey, in 2005 that was a big deal). But over time, Google Maps has become less about just maps and has evolved into a visual interface for all kinds of information, a sort of two-dimensional version of Google Earth, the company's 3D satellite-imagery service -- especially with the ever-expanding "Streetview" feature, which shows actual photos of the location you're search for (not available in Canada yet).

It started small, with features such as the ability to integrate Google Maps and the GPS in your phone or BlackBerry -- a feature that has saved me from getting lost many times, and effectively turns your phone into the equivalent of one of those dashboard GPS units, at a fraction of the price. Then Google started allowing you to add "user-generated content," such as your own locations and custom maps (something which has helped the company map remote parts of countries like India). You can do things like clicking two points and Google will calculate the distance between them, or list historical monuments in a certain area.

Now, Google has added some new features that expand the service even further: one is geo-tagged photos from Google-owned photo services Picasa and Panoramio. If you click to turn on the feature, the map you're looking at starts to sprout thumbnail pictures at various spots. It's like a low-rent version of Streetview, with the photos supplied by users instead of being taken by a 360-degree camera mounted on a Volkswagen Beetle. And it can add a surprising amount of colour to your search, especially if you're not familiar with the place you're going (of course, you might have to put up with some photos of people's kids and dogs as well).

You can also turn Google Maps into a real-estate search tool, which allows you to search by location and price, and then sort the results until you find what you want (services such as Housing123.com effectively do the same thing by "mashing up" an MLS feed and a Google Map). And finally, Google has added Wikipedia entries for various locations -- so that when you search Halifax, for example, you can click on the thumbnail of an encyclopedia entry for the city and read about the famous explosion in 1917 that destroyed much of the town.

  1. Robin H From Toronto from Toronto, Canada writes: Google's street-level panorama maps are fantastic. We used it before a trip to Manhattan...we could see everything for blocks - great when looking for specific stores and distances.

    I believe Google began to send camera topped cars around Toronto to provide a street level map last summer and was stopped by the City because of privacy concerns? These maps are still shots, capturing a second in time.
  2. TheWay ISeeIt from Calgary, Canada writes: They may be adding features but some of the base functionality doesn't work well. For example, the Directions function. I recently plotted a route from SFO to Napa, CA, i.e. the Bay area which is pretty much Google's back yard. Google Maps got the directions and turns right but drew the route right across the middle of San Francisco Bay. I guess that's why it's forever labeled as "beta"!
  3. Mathew Ingram from Canada writes: Robin, there have been reports of Google cars driving around Toronto and Montreal over the past six months or so, although I don't think the company has confirmed that they are doing Streetview for those cities. As for the privacy concerns, they were raised by the federal privacy commissioner last year, and Google has since started blurring the faces of people in their photos so they aren't as easily identifiable (license plates are also blurred out).
  4. Albin Forone from Canada writes: Ingram is on to something serious here, to the extent that cultural / social groups could reference a geographical map to find out what's going on in a city or geographic zone. I mean, if I'm a hip hop dude (I mean, Fortune 500 middle manager, okay?) and want to go to the right place after landing at the airport, a "layer" on the Google system could tell me where that is, so I could take the best hotel, go the best place to eat, best place to drink, tune the right radio, get the right hardware, yo (I mean, okay?).
  5. Aynsley Deluce from Toronto, Canada writes: Google maps application goes beyond pure housing real estate and actually into the non-housing area as well. Specifically - parking. www.parkingspots.com is another example of the way in which google maps can be applied and leveraged to help monthly parking seekers and owners connect.

Comments are closed

Thanks for your interest in commenting on this article, however we are no longer accepting submissions. If you would like, you may send a letter to the editor.

Report an abusive comment to our editorial staff

close

Alert us about this comment

Please let us know if this reader’s comment breaks the editor's rules and is obscene, abusive, threatening, unlawful, harassing, defamatory, profane or racially offensive by selecting the appropriate option to describe the problem.

Do not use this to complain about comments that don’t break the rules, for example those comments that you disagree with or contain spelling errors or multiple postings.

Back to Ingram 2.0

Ingram 2.0

Mathew Ingram is the Communities Editor at the Globe and Mail, and this is where he writes about things the Globe is doing to connect with readers online, and the interaction between the Web and media in general. Feel free to send him an email at mingram@globeandmail.com if you come across an interesting link, or post a comment and join in the discussion.

    follow me on Twitter

    Blogroll

    javax.servlet.ServletException: Processing template "tgamv3/v5/story/WBStory.html" with config "null"
    	at GIS.Servlets.HTMLTemplate.processRequest(HTMLTemplate.java:231)
    	at GIS.Servlets.HTMLTemplate.doGet(HTMLTemplate.java:137)
    	at GIS.Servlets.StoryHTMLTemplate.doGet(StoryHTMLTemplate.java:96)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:126)
    	at GIS.Common.Servlet.service(Servlet.java:106)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:103)
    	at com.caucho.server.http.FilterChainServlet.doFilter(FilterChainServlet.java:95)
    	at com.caucho.server.http.Invocation.service(Invocation.java:291)
    	at com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:132)
    	at com.caucho.server.http.RunnerRequest.handleRequest(RunnerRequest.java:341)
    	at com.caucho.server.http.RunnerRequest.handleConnection(RunnerRequest.java:271)
    	at com.caucho.server.TcpConnection.run(TcpConnection.java:136)
    	at java.lang.Thread.run(Thread.java:662)
    
    Nested exception: GIS.Common.GICheckedException: Other exception in file: '/opt/GIS/HTML_Templates/tgamv3/v5/story/WBStory.html'  while processing select element with added parms:{}
    	at GIS.Common.HTMLTemplateParser.generate(HTMLTemplateParser.java:1511)
    	at GIS.Common.HTMLTemplateParser.generate(HTMLTemplateParser.java:782)
    	at GIS.Common.HTMLTemplateParser.generate(HTMLTemplateParser.java:945)
    	at GIS.Common.HTMLTemplateParser.generate(HTMLTemplateParser.java:782)
    	at GIS.Common.HTMLTemplateParser.parse(HTMLTemplateParser.java:751)
    	at GIS.Common.HTMLTemplateParser.generate(HTMLTemplateParser.java:476)
    	at GIS.Servlets.HTMLTemplate.generate(HTMLTemplate.java:316)
    	at GIS.Servlets.HTMLTemplate.processRequest(HTMLTemplate.java:222)
    	at GIS.Servlets.HTMLTemplate.doGet(HTMLTemplate.java:137)
    	at GIS.Servlets.StoryHTMLTemplate.doGet(StoryHTMLTemplate.java:96)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:126)
    	at GIS.Common.Servlet.service(Servlet.java:106)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:103)
    	at com.caucho.server.http.FilterChainServlet.doFilter(FilterChainServlet.java:95)
    	at com.caucho.server.http.Invocation.service(Invocation.java:291)
    	at com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:132)
    	at com.caucho.server.http.RunnerRequest.handleRequest(RunnerRequest.java:341)
    	at com.caucho.server.http.RunnerRequest.handleConnection(RunnerRequest.java:271)
    	at com.caucho.server.TcpConnection.run(TcpConnection.java:136)
    	at java.lang.Thread.run(Thread.java:662)
    
    Nested exception: GIS.Common.GICheckedException: Other exception  while processing transformation element with added parms:{cacheTime=5000, type=xsl, url=/usr/local/web_htdocs/tgamv3/v5/includes/content/blogs/blogroll-wbmingram.opml}
    	at GIS.Common.HTMLTemplateParser.generate(HTMLTemplateParser.java:1625)
    	at GIS.Common.HTMLTemplateParser.generate(HTMLTemplateParser.java:782)
    	at GIS.Common.HTMLTemplateParser.parse(HTMLTemplateParser.java:751)
    	at GIS.Common.HTMLTemplateParser.generate(HTMLTemplateParser.java:476)
    	at GIS.Jel.JELSelectProducer.emitChoiceNode(JELSelectProducer.java:48)
    	at GIS.Jel.JELSelectOneProducer.generate(JELSelectOneProducer.java:92)
    	at GIS.Common.HTMLTemplateParser.generate(HTMLTemplateParser.java:1502)
    	at GIS.Common.HTMLTemplateParser.generate(HTMLTemplateParser.java:782)
    	at GIS.Common.HTMLTemplateParser.generate(HTMLTemplateParser.java:945)
    	at GIS.Common.HTMLTemplateParser.generate(HTMLTemplateParser.java:782)
    	at GIS.Common.HTMLTemplateParser.parse(HTMLTemplateParser.java:751)
    	at GIS.Common.HTMLTemplateParser.generate(HTMLTemplateParser.java:476)
    	at GIS.Servlets.HTMLTemplate.generate(HTMLTemplate.java:316)
    	at GIS.Servlets.HTMLTemplate.processRequest(HTMLTemplate.java:222)
    	at GIS.Servlets.HTMLTemplate.doGet(HTMLTemplate.java:137)
    	at GIS.Servlets.StoryHTMLTemplate.doGet(StoryHTMLTemplate.java:96)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:126)
    	at GIS.Common.Servlet.service(Servlet.java:106)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:103)
    	at com.caucho.server.http.FilterChainServlet.doFilter(FilterChainServlet.java:95)
    	at com.caucho.server.http.Invocation.service(Invocation.java:291)
    	at com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:132)
    	at com.caucho.server.http.RunnerRequest.handleRequest(RunnerRequest.java:341)
    	at com.caucho.server.http.RunnerRequest.handleConnection(RunnerRequest.java:271)
    	at com.caucho.server.TcpConnection.run(TcpConnection.java:136)
    	at java.lang.Thread.run(Thread.java:662)
    
    Nested exception: java.lang.ClassCastException: org.apache.xerces.dom.ElementNSImpl cannot be cast to com.caucho.xml.QElement
    	at com.caucho.xsl.Generator.getXslLocal(Generator.java:2141)
    	at com.caucho.xsl.Generator.generate(Generator.java:294)
    	at com.caucho.xsl.AbstractStylesheetFactory.generate(AbstractStylesheetFactory.java:819)
    	at com.caucho.xsl.AbstractStylesheetFactory.newTemplates(AbstractStylesheetFactory.java:437)
    	at com.caucho.xsl.AbstractStylesheetFactory.newTransformer(AbstractStylesheetFactory.java:312)
    	at GIS.Universal.XMLTransformer.transform(XMLTransformer.java:262)
    	at GIS.Universal.XMLTransformer.transform(XMLTransformer.java:166)
    	at GIS.HTMLComments.HTMLProducers.XSLProducer.generate(XSLProducer.java:85)
    	at GIS.Common.HTMLTemplateParser.generate(HTMLTemplateParser.java:1615)
    	at GIS.Common.HTMLTemplateParser.generate(HTMLTemplateParser.java:782)
    	at GIS.Common.HTMLTemplateParser.parse(HTMLTemplateParser.java:751)
    	at GIS.Common.HTMLTemplateParser.generate(HTMLTemplateParser.java:476)
    	at GIS.Jel.JELSelectProducer.emitChoiceNode(JELSelectProducer.java:48)
    	at GIS.Jel.JELSelectOneProducer.generate(JELSelectOneProducer.java:92)
    	at GIS.Common.HTMLTemplateParser.generate(HTMLTemplateParser.java:1502)
    	at GIS.Common.HTMLTemplateParser.generate(HTMLTemplateParser.java:782)
    	at GIS.Common.HTMLTemplateParser.generate(HTMLTemplateParser.java:945)
    	at GIS.Common.HTMLTemplateParser.generate(HTMLTemplateParser.java:782)
    	at GIS.Common.HTMLTemplateParser.parse(HTMLTemplateParser.java:751)
    	at GIS.Common.HTMLTemplateParser.generate(HTMLTemplateParser.java:476)
    	at GIS.Servlets.HTMLTemplate.generate(HTMLTemplate.java:316)
    	at GIS.Servlets.HTMLTemplate.processRequest(HTMLTemplate.java:222)
    	at GIS.Servlets.HTMLTemplate.doGet(HTMLTemplate.java:137)
    	at GIS.Servlets.StoryHTMLTemplate.doGet(StoryHTMLTemplate.java:96)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:126)
    	at GIS.Common.Servlet.service(Servlet.java:106)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:103)
    	at com.caucho.server.http.FilterChainServlet.doFilter(FilterChainServlet.java:95)
    	at com.caucho.server.http.Invocation.service(Invocation.java:291)
    	at com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:132)
    	at com.caucho.server.http.RunnerRequest.handleRequest(RunnerRequest.java:341)
    	at com.caucho.server.http.RunnerRequest.handleConnection(RunnerRequest.java:271)
    	at com.caucho.server.TcpConnection.run(TcpConnection.java:136)
    	at java.lang.Thread.run(Thread.java:662)
    
    Nested exception: java.lang.ClassCastException: org.apache.xerces.dom.ElementNSImpl cannot be cast to com.caucho.xml.QElement
    	at com.caucho.xsl.Generator.getXslLocal(Generator.java:2141)
    	at com.caucho.xsl.Generator.generate(Generator.java:294)
    	at com.caucho.xsl.AbstractStylesheetFactory.generate(AbstractStylesheetFactory.java:819)
    	at com.caucho.xsl.AbstractStylesheetFactory.newTemplates(AbstractStylesheetFactory.java:437)
    	at com.caucho.xsl.AbstractStylesheetFactory.newTransformer(AbstractStylesheetFactory.java:312)
    	at GIS.Universal.XMLTransformer.transform(XMLTransformer.java:262)
    	at GIS.Universal.XMLTransformer.transform(XMLTransformer.java:166)
    	at GIS.HTMLComments.HTMLProducers.XSLProducer.generate(XSLProducer.java:85)
    	at GIS.Common.HTMLTemplateParser.generate(HTMLTemplateParser.java:1615)
    	at GIS.Common.HTMLTemplateParser.generate(HTMLTemplateParser.java:782)
    	at GIS.Common.HTMLTemplateParser.parse(HTMLTemplateParser.java:751)
    	at GIS.Common.HTMLTemplateParser.generate(HTMLTemplateParser.java:476)
    	at GIS.Jel.JELSelectProducer.emitChoiceNode(JELSelectProducer.java:48)
    	at GIS.Jel.JELSelectOneProducer.generate(JELSelectOneProducer.java:92)
    	at GIS.Common.HTMLTemplateParser.generate(HTMLTemplateParser.java:1502)
    	at GIS.Common.HTMLTemplateParser.generate(HTMLTemplateParser.java:782)
    	at GIS.Common.HTMLTemplateParser.generate(HTMLTemplateParser.java:945)
    	at GIS.Common.HTMLTemplateParser.generate(HTMLTemplateParser.java:782)
    	at GIS.Common.HTMLTemplateParser.parse(HTMLTemplateParser.java:751)
    	at GIS.Common.HTMLTemplateParser.generate(HTMLTemplateParser.java:476)
    	at GIS.Servlets.HTMLTemplate.generate(HTMLTemplate.java:316)
    	at GIS.Servlets.HTMLTemplate.processRequest(HTMLTemplate.java:222)
    	at GIS.Servlets.HTMLTemplate.doGet(HTMLTemplate.java:137)
    	at GIS.Servlets.StoryHTMLTemplate.doGet(StoryHTMLTemplate.java:96)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:126)
    	at GIS.Common.Servlet.service(Servlet.java:106)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:103)
    	at com.caucho.server.http.FilterChainServlet.doFilter(FilterChainServlet.java:95)
    	at com.caucho.server.http.Invocation.service(Invocation.java:291)
    	at com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:132)
    	at com.caucho.server.http.RunnerRequest.handleRequest(RunnerRequest.java:341)
    	at com.caucho.server.http.RunnerRequest.handleConnection(RunnerRequest.java:271)
    	at com.caucho.server.TcpConnection.run(TcpConnection.java:136)
    	at java.lang.Thread.run(Thread.java:662)