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

<channel>
	<title>In usability we trust &#187; Articles</title>
	<atom:link href="http://www.svennerberg.com/category/articles/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.svennerberg.com</link>
	<description>Web Applications Designed for Humans</description>
	<lastBuildDate>Mon, 14 Nov 2011 10:29:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Is your site mobile friendly?</title>
		<link>http://www.svennerberg.com/2011/11/is-your-site-mobile-friendly/</link>
		<comments>http://www.svennerberg.com/2011/11/is-your-site-mobile-friendly/#comments</comments>
		<pubDate>Tue, 01 Nov 2011 20:05:47 +0000</pubDate>
		<dc:creator>Gabriel Svennerberg</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.svennerberg.com/?p=3709</guid>
		<description><![CDATA[Google has recently launched a new site to encourage Mobile Friendly Websites. It&#8217;s called GoMo and contains, among lots of useful information, also a test to see how mobile friendly your site is. I tested In usability we trust on &#8230; <a href="http://www.svennerberg.com/2011/11/is-your-site-mobile-friendly/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://media.svennerberg.com/2011/11/score.png"><img src="http://media.svennerberg.com/2011/11/score-160.png" alt="" class="alignright size-full wp-image-3713" /></a>Google has recently launched a new site to encourage Mobile Friendly Websites. It&#8217;s called <strong>GoMo</strong> and contains, among lots of useful information, also a test to see how mobile friendly your site is. I tested <strong>In usability we trust</strong> on it and I&#8217;m happy to report that <strong>it scored 4 out of 4 on the mobile-friendliness scale</strong>.</p>
<p><span id="more-3709"></span></p>
<h2>How big is the mobile web?</h2>
<p>The amount of web pages that are being accessed by mobile devices is increasing day by day. In fact traffic to mobile websites in 2010 grew by 600%, the year before that it grew by 300%. In the last quarter of 2010 it out-shipped the combined global market of laptop, desktop and notebook computers This happened 2 years earlier than analysts had calculated. So it seems that the mobile web is really exploding and at an accelerating speed. (Statistics from <a href="http://www.abookapart.com/products/mobile-first">Mobile First</a> by Luke Wroblewski)</p>
<div id="attachment_3711" class="wp-caption alignright" style="width: 255px"><a href="http://media.svennerberg.com/2011/11/report.jpg"><img src="http://media.svennerberg.com/2011/11/report-245x300.jpg" alt="" class="size-medium wp-image-3711 frame" /></a><p class="wp-caption-text">The test produces a 6 page pdf-report with your test result as well as personalized advice and best practices for creating mobile web sites.</p></div>
<h2>GoMo</h2>
<p>With the background of these numbers it&#8217;s not surprising that Google is encouraging companies and organizations to create mobile-friendly sites. After all, Google&#8217;s entire business model is dependent on that people can use the web effectively.</p>
<p>If you not convinced yet, here are some more statistics from the GoMo site. For example: </p>
<ul>
<li>&#8220;By 2013, more people will use there mobile phones than PCs to get online&#8221;</li>
<li>&#8220;Mobile Searches have grown by 4X since 2010&#8243;</li>
<li>&#8220;There will be one mobile device for every person on earth by 2010&#8243;</li>
</ul>
<p class="footnote">Source: <a href="http://www.howtogomo.com/en/#why-go-mo">GoMo &#8211; Reasons Mobile Matters</a></p>
<h2>Test your site</h2>
<p>I encourage you to <a href="http://www.howtogomo.com/en/#test-your-site" title="GoMoMeter">test your own site on GoMo</a>. Not the least for the fancy pdf report that you will get. You will also get personalized advice for your specific site as well as some best practices for building mobile websites.</p>
<h2>Need help?</h2>
<p>If you find yourself with a site that doesn&#8217;t score so well on the mobile-friendliness scale, don&#8217;t hesitate to <a href="/contact/">contact me</a> for a free quote. Maybe I can help you bring that score up.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.svennerberg.com/2011/11/is-your-site-mobile-friendly/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to balance different interests within a project</title>
		<link>http://www.svennerberg.com/2011/04/how-to-balance-different-interests-within-a-project/</link>
		<comments>http://www.svennerberg.com/2011/04/how-to-balance-different-interests-within-a-project/#comments</comments>
		<pubDate>Wed, 27 Apr 2011 11:45:22 +0000</pubDate>
		<dc:creator>Gabriel Svennerberg</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Project management]]></category>
		<category><![CDATA[UX]]></category>

		<guid isPermaLink="false">http://www.svennerberg.com/?p=2757</guid>
		<description><![CDATA[In every web and software project it&#8217;s important to find a good balance between different interests in order to produce a successful product or service. My biggest takeaway from reading A Project Guide to UX Design was the idea of &#8230; <a href="http://www.svennerberg.com/2011/04/how-to-balance-different-interests-within-a-project/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://media.svennerberg.com/2011/04/balance-front.png" alt="" class="alignright size-full wp-image-3159" />In every web and software project it&#8217;s important to find a good balance between different interests in order to produce a successful product or service. My biggest takeaway from reading <a href="http://www.amazon.com/gp/product/0321607376?ie=UTF8&#038;tag=inusabiwetrus-20&#038;linkCode=as2&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0321607376" title="Buy A project Guide to UX from Amazon.com">A Project Guide to UX Design</a> was the idea of maintaining a good tension between different interests in a project group. </p>
<p>In this article I will describe what those interests are and what will happen when any of them becomes too dominant. I will also share my thoughts on how to overcome imbalances.</p>
<p><span id="more-2757"></span></p>
<h2>The three major interests within a project</h2>
<p>In any development project there are at least three different interests at play:</p>
<ul>
<li><strong>Business goals</strong><br />
The business goals of the product. For example to sell more products, to reduce the number of support calls or to strengthen brand awareness.</li>
<li><strong>Development opportunities</strong><br />
The interests that the developers that actually builds the application have. Examples of these might be fast development, code reuse and maintainable code.</li>
<li><strong>User needs</strong><br />
The needs of the end users. It might be a problem they want to solve or the need for an easy way to perform at certain task.
</li>
</ul>
<p>The image below illustrates a project with a balanced tension between the different needs. This is the ideal state in a project. Often it&#8217;s impossible to maintain a perfect balance but It&#8217;s important to always strive for it, at least if you want a successful project.</p>
<div id="attachment_3132" class="wp-caption alignnone" style="width: 420px"><a href="http://media.svennerberg.com/2011/04/balanced.png"><img src="http://media.svennerberg.com/2011/04/balanced-410x396.png" alt="" class="size-medium wp-image-3132" /></a><p class="wp-caption-text">The three basic needs in every development project</p></div>
<h2>Unbalanced projects</h2>
<h3 class="clear"><div id="attachment_3134" class="wp-caption alignright" style="width: 160px"><a href="http://media.svennerberg.com/2011/04/stakeholder-domination.png"><img src="http://media.svennerberg.com/2011/04/stakeholder-domination-150.png" alt="" class="size-full wp-image-3134" /></a><p class="wp-caption-text">Stakeholder domination</p></div>Stakeholder domination</h3>
<p>Although the business goals are really important, since they are the very reason that the application exists, it must  not be a too dominant interest. When that happens the result is a product that <strong>fulfills business goals but are expensive, buggy and fails to meet user needs</strong>. </p>
<p>Failing to meet user needs often lead to that the business goals are ultimately not met. A product that&#8217;s unusable or doesn&#8217;t make it worthwhile to use will probably be abandoned sooner a later. </p>
<p>An example of this could be that a business goal is to collect as much user data as possible with an extensive sign-up form to get good sale leads. The user on the other hand wants to try out the application before making a big commitment. The huge form seems daunting and the user is reluctant to give away personal information this early in the process. This leads to fewer users actually signing up, and business goals are not met.</p>
<h3 class="clear"><div id="attachment_3140" class="wp-caption alignright" style="width: 160px"><a href="http://media.svennerberg.com/2011/04/developer-domination.png"><img src="http://media.svennerberg.com/2011/04/developer-domination-150.png" alt="" class="size-full wp-image-3140" /></a><p class="wp-caption-text">Developer domination</p></div>Developer domination</h3>
<p>If developer needs dominates the end result is<strong> a cheap solution of high quality that fails too meet business goals or to address user needs</strong>. </p>
<p>Having the perfect application with brilliant algorithms and perfectly tuned databases is never a mean to an end. It doesn&#8217;t matter how awesome your solution is if it fails to meet business goals. This means that the application probably can no longer exist, since its ultimate success depends on business goals being fulfilled.</p>
<h3 class="clear"><div id="attachment_3142" class="wp-caption alignright" style="width: 160px"><a href="http://media.svennerberg.com/2011/04/user-domination.png"><img src="http://media.svennerberg.com/2011/04/user-domination-150.png" alt="" class="size-full wp-image-3142" /></a><p class="wp-caption-text">User domination</p></div>User domination</h3>
<p>While it&#8217;s important to focus on user needs the project must never lose sight of business goals and developer needs. What happens is that you end up with a solution that indeed <strong>fulfill user needs but is expensive, buggy and fails to meet business goals</strong>.</p>
<p>This is, in my experience, rarely a problem. More often I think the problem is that user needs are totally neglected. Fulfilling user needs often goes hand in hand with meeting business goals. But there are of course often compromises that needs to be made between the two. </p>
<p>So also with developer needs. Some functions that would have been perfect for the user might be to complicated or expensive to develop to be a viable solution.</p>
<h2>My thoughts on keeping a good balance</h2>
<p>I personally think that good communication within a project, combined with an awareness of the different needs, is key for a successful project. The biggest mistake to make is to isolate developers and designers from the stake holders. There&#8217;s everything to win in keeping them involved in this process so they also have an awareness of business goals and how the customer thinks. </p>
<p>This goes both ways. Having a dialog between stakeholders, developers and designer leads to better understanding of all the different needs. My experience is that it also leads to stronger commitment within the team and that it can lead to new great ideas that neither party would have come up with in isolation.</p>
<p>Finally I think it&#8217;s important to have a dedicated member of the team that has the users interests in mind. Be it a UX-designer, and interaction designer or one of the developers. Far to often this is the one interest that is forgotten altogether. One way to raise the awareness of user needs is to conduct usability tests with the whole project team as observers. That&#8217;s usually a real eye opener.</p>
<p>How does your projects work? Are they dominated by any particular interest or is one interest totally forgotten? How do you keep the interests balanced?</p>
<h2>Read more</h2>
<p>If you want to read more about the tension between different interest in a project and techniques to find a good balance, I suggest you check out the excellent book <a href="http://www.amazon.com/gp/product/0321607376?ie=UTF8&#038;tag=inusabiwetrus-20&#038;linkCode=as2&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0321607376" title="Buy A project Guide to UX from Amazon.com">A Project Guide to UX Design</a>. Pay special attention to <em>Chapter 9 &#8211; Transition: From Defining to Designing</em>, where this process is described in detail. You can also check out my <a href="http://www.svennerberg.com/2010/03/a-project-guide-to-ux-design-book-review/" title="A Project Guide to UX Design">full review of the book</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.svennerberg.com/2011/04/how-to-balance-different-interests-within-a-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>4 Books on UX that I&#8217;ve read recently</title>
		<link>http://www.svennerberg.com/2011/04/4-books-on-ux-that-ive-read-recently/</link>
		<comments>http://www.svennerberg.com/2011/04/4-books-on-ux-that-ive-read-recently/#comments</comments>
		<pubDate>Fri, 15 Apr 2011 13:00:48 +0000</pubDate>
		<dc:creator>Gabriel Svennerberg</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Book]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[UX]]></category>

		<guid isPermaLink="false">http://www.svennerberg.com/?p=3002</guid>
		<description><![CDATA[I&#8217;ve recently read a few books on User Experience design and this is a run down of them. Although they&#8217;re all about UX Design, they&#8217;re still very different in their approach to the subject. I list them here, from the &#8230; <a href="http://www.svennerberg.com/2011/04/4-books-on-ux-that-ive-read-recently/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://media.svennerberg.com/2011/04/IMG_16311_1.jpg"><img class="alignright size-full wp-image-3026" title="user-experience-books-160" src="http://media.svennerberg.com/2011/04/user-experience-books-160.jpg" alt="" width="160" height="160" /></a>I&#8217;ve recently read a few books on User Experience design and this is a run down of them.</p>
<p>Although they&#8217;re all about UX Design, they&#8217;re still very different in their approach to the subject. I list them here, from the most practical to the most theoretical.</p>
<p><span id="more-3002"></span></p>
<h2 class="clear">Undercover User Experience Design</h2>
<div id="attachment_3017" class="wp-caption alignright" style="width: 170px"><a href="http://www.amazon.com/gp/product/0321719905/ref=as_li_ss_tl?ie=UTF8&amp;tag=inusabiwetrus-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0321719905"><img class="size-full wp-image-3017" title="Buy Undercover User Experience Design from Amazon.com" src="http://media.svennerberg.com/2011/04/undercover-user-experience-design-160.png" alt="" width="160" height="240" /></a><p class="wp-caption-text">Buy from Amazon.com</p></div>
<p>The first book out is <strong>Undercover User Experience Design</strong> by <strong>Cennydd Bowles</strong> and <strong>James Box</strong>. Both designers at the renowned web agency <a href="http://clearleft.com/">Clearleft</a>. This book takes a pragmatic approach to the UX process. The authors recognize that it can be hard to do UX-work in an organization that has not yet realized the benefits of UX. This book is all about how you can sneak in this kind of work anyway to slowly get the organization in the know.</p>
<p>Undercover User Experience Design offer very practical and cheap approaches for conducting:</p>
<ul>
<li>User research</li>
<li>Idea generation</li>
<li>Prototyping</li>
<li>User testing</li>
</ul>
<h3>Who is this book for</h3>
<p>If you want a hands-on book with practical suggestions on how to perform UX work, this is a good book to start with. Also if your dealing with clients that don&#8217;t get UX or work within an organization that don&#8217;t get it, I highly recommend you buy it.</p>
<h3>Book information</h3>
<dl class="book-info">
<dt>Title:</dt>
<dd>Undercover User Experience Design</dd>
<dt>Authors:</dt>
<dd>Cennydd Bowles and James Box</dd>
<dt>Publisher:</dt>
<dd>New Riders Press; 1 edition (September 27, 2010)</dd>
<dt>Pages:</dt>
<dd>192</dd>
<dt>ISBN:</dt>
<dd> 0321719905</dd>
<dt>ISBN-13:</dt>
<dd>978-032171990</dd>
</dl>
<p><a title="Buy Undercover User Experience Design from Amazon.com" href="http://www.amazon.com/gp/product/0321719905/ref=as_li_ss_tl?ie=UTF8&amp;tag=inusabiwetrus-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0321719905">Buy from Amazon.com</a><img style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.com/e/ir?t=&amp;l=as2&amp;o=1&amp;a=0321719905" border="0" alt="" width="1" height="1" /><br />
<a title="Buy from Adlibris.com" href="http://clkuk.tradedoubler.com/click?p(21)a(1897042)g(16159304)url(http://www.adlibris.com/se/product.aspx?isbn=0321719905)" target="_blank">Buy from Adlibris.com</a><img src="http://impgb.tradedoubler.com/imp?type(inv)g(16159304)a(1897042)" alt="" /> (Sweden)</p>
<h3>Sketching User Experiences</h3>
<div id="attachment_3029" class="wp-caption alignright" style="width: 170px"><a href="http://www.amazon.com/gp/product/0123740371/ref=as_li_ss_tl?ie=UTF8&amp;tag=inusabiwetrus-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0123740371"><img class="size-full wp-image-3029" title="Buy  Sketching User Experiences from Amazon.com" src="http://media.svennerberg.com/2011/04/sketching-the-user-experience-160.jpg" alt="" width="160" height="190" /></a><p class="wp-caption-text">Buy from Amazon.com</p></div>
<p><strong>Sketching User Experiences</strong> was not at all what I expected it to be. I thought it would be a book on how to use sketches on paper for designing user interfaces. It turned out that the author <strong>Bill Buxton</strong> means sketching in a much broader sense. In his definition a sketch is:</p>
<ol>
<li>Quick: quick to make</li>
<li>Timely: can be provided whenever needed</li>
<li>Inexpensive</li>
<li>Disposable</li>
<li>Plentiful</li>
<li>Clear vocabulary: the style makes it clear that it is a sketch and not a finished product</li>
<li>Distinct gesture: similar to the vocabulary, sketches are distinctly open and free</li>
<li>Minimal detail</li>
<li>Appropriate degree of refinement</li>
<li>Suggest and explore rather than confirm</li>
<li>(Intentional) Ambiguity</li>
</ol>
<p>With this definition a sketch can be anything from a carved out piece of wood that represents a PDA to an actual sketch on a piece of paper. What he proposes is that you should always do different types of prototyping to test a product out before starting to actually create it. What this process aims for is to not only <strong>get the design right</strong> but also <strong>to create the right design</strong>.</p>
<p>That the book wasn&#8217;t what I expected wasn&#8217;t a bad thing. I think Buxtons thoughts on the design process is very interesting and all viable if you&#8217;re in an organization with big budgets for this kind of work. And even if you&#8217;re not, there&#8217;s still a lot of interesting ideas in it that you can apply to your work.</p>
<p>The book is both very practical and theoretical. While it discusses the design process from both a design, development and business perspective on a fairly theoretical level it also supplies lots of hands on examples and approaches.</p>
<h3>Who is this book for</h3>
<p>If you&#8217;re interested in the design process not only from a designers perspective but also from a development and business perspective this book is definitely for you. Also if you&#8217;re interested in prototyping on different levels, this might be an interesting book for you.</p>
<h3>Book information</h3>
<dl class="book-info">
<dt> Title:</dt>
<dd>Sketching User Experiences</dd>
<dt>Author:</dt>
<dd>Bill Buxton</dd>
<dt>Publisher:</dt>
<dd>Morgan Kaufmann (March 30, 2007)</dd>
<dt>Pages:</dt>
<dd>448</dd>
<dt>ISBN:</dt>
<dd>9780123740373</dd>
<dt>ISBN-13:</dt>
<dd>978-0123740373</dd>
</dl>
<p><a title="Buy  Sketching User Experiences from Amazon.com" href="http://www.amazon.com/gp/product/0123740371/ref=as_li_ss_tl?ie=UTF8&amp;tag=inusabiwetrus-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0123740371">Buy from Amazon.com</a><img style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.com/e/ir?t=&amp;l=as2&amp;o=1&amp;a=0123740371" border="0" alt="" width="1" height="1" /><br />
<a title="Buy from Adlibris.com" href="http://clkuk.tradedoubler.com/click?p(21)a(1897042)g(16159304)url(http://www.adlibris.com/se/product.aspx?isbn=0123740371)" target="_blank">Buy from Adlibris.com</a><img src="http://impgb.tradedoubler.com/imp?type(inv)g(16159304)a(1897042)" alt="" /> (Sweden)</p>
<h2>Simple and Usable Web, Mobile, and Interaction Design</h2>
<div id="attachment_3013" class="wp-caption alignright" style="width: 170px"><a href="http://www.amazon.com/gp/product/0321703545/ref=as_li_ss_tl?ie=UTF8&amp;tag=inusabiwetrus-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0321703545"><img class="size-full wp-image-3013" title="Buy Simple and Usable Web, Mobile, and Interaction Design from Amazon.com" src="http://media.svennerberg.com/2011/04/simple-and-usable-160.png" alt="" width="160" height="213" /></a><p class="wp-caption-text">Buy from Amazon.com</p></div>
<p>The book <strong>Simple and Usable</strong> is about creating simple and usable digital products and services without dumbing down. According to<strong> Giles Colborne</strong>, the author of the book, there are essentially 4 strategies for reducing complexity without losing important features:</p>
<ul>
<li>Organizing</li>
<li>Removing</li>
<li>Hiding</li>
<li>Displacing</li>
</ul>
<p>These 4 strategies is the core of the book and they&#8217;re beautifully illustrated by applying them to the design of a complex remote control. There&#8217;s also lots of other examples.</p>
<p>The book is organized into 8 parts which each consists of several chapters. Each chapter is just one page long which I think is an interesting approach. It makes the book really easy to digest and also makes it easy to later look up things.</p>
<h3>Who is this book for</h3>
<p>If you have already have some experience in design and wants a fresh perspectives on interaction design for web and mobile platforms, this book will be good for you. Apart from the four core strategies for reducing complexity it contains a lot of other gems that you can use to improve you designs.</p>
<h3>Book information</h3>
<dl class="book-info">
<dt>Title:</dt>
<dd>Simple and Usable Web, Mobile, and Interaction Design</dd>
<dt>Author:</dt>
<dd>Giles Colborne</dd>
<dt>Publisher:</dt>
<dd>New Riders Press; 1 edition (September 26, 2010)</dd>
<dt>Pages:</dt>
<dd>208</dd>
<dt>ISBN:</dt>
<dd> 9780321703545</dd>
<dt>ISBN-13:</dt>
<dd>978-0321703545</dd>
</dl>
<p><a title="Buy Simple and Usable Web, Mobile, and Interaction Design" href="http://www.amazon.com/gp/product/0321703545/ref=as_li_ss_tl?ie=UTF8&amp;tag=inusabiwetrus-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0321703545">Buy from Amazon.com</a><img style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.com/e/ir?t=&amp;l=as2&amp;o=1&amp;a=0321703545" border="0" alt="" width="1" height="1" /><br />
<a title="Buy from Adlibris.com" href="http://clkuk.tradedoubler.com/click?p(21)a(1897042)g(16159304)url(http://www.adlibris.com/se/product.aspx?isbn=0321703545)" target="_blank">Buy from Adlibris.com</a><img src="http://impgb.tradedoubler.com/imp?type(inv)g(16159304)a(1897042)" alt="" /> (Sweden)</p>
<h2>Living with Complexity</h2>
<div id="attachment_3020" class="wp-caption alignright" style="width: 170px"><a href="http://www.amazon.com/gp/product/0262014866/ref=as_li_ss_tl?ie=UTF8&amp;tag=inusabiwetrus-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0262014866"><img class="size-full wp-image-3020" title="Buy Living with Complexity from Amazon.com" src="http://media.svennerberg.com/2011/04/living-with-complexity-160.jpg" alt="" width="160" height="235" /></a><p class="wp-caption-text">Buy from Amazon.com</p></div>
<p><strong>Living with Complexity</strong> is the latest book by <strong>Don Norman</strong>. If you&#8217;re not already familiar with his work he&#8217;s written several seminal books on usability and is one of the pioneers in the field. (You should definitely check out <a title="Buy The Design of Everyday Things on Amazon.com" href="http://www.amazon.com/gp/product/0465067107/ref=as_li_ss_tl?ie=UTF8&amp;tag=inusabiwetrus-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0465067107">The Design of Everyday Things</a><img style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.com/e/ir?t=inusabiwetrus-20&amp;l=as2&amp;o=1&amp;a=0465067107" border="0" alt="" width="1" height="1" />) In <strong>Living with Complexity</strong> he addresses the fact that we live in a complex world. Norman writes about the dilemma that we crave simplicity but in reality need complexity.</p>
<p>A good metaphor for this is the cockpit of an airplane. For an untrained person it looks very complicated with its vast arrays of dials and instruments. For the trained pilot on the other hand, it looks very well organized and suited for their needs. A cockpit can&#8217;t be dumbed down to a single instrument, because all the instruments are needed for the pilot to take the plane safely from one airport to another. Therefore other strategies are required, training for example.</p>
<h3>Who is this book for</h3>
<p>This book is more academic and theoretical in nature than the others. If you&#8217;re looking for a practical book on how to do design, this book is not for you. But if you more interested in the philosophical side of design, I strongly recommend it.</p>
<h3>Book information</h3>
<dl class="book-info">
<dt>Title:</dt>
<dd>Living with Complexity</dd>
<dt>Author:</dt>
<dd>Donald A. Norman</dd>
<dt>Publisher:</dt>
<dd>The MIT Press (October 31, 2010)</dd>
<dt>Pages:</dt>
<dd>280</dd>
<dt>ISBN:</dt>
<dd>0262014866</dd>
<dt>ISBN-13:</dt>
<dd>978-0262014861</dd>
</dl>
<p><a title="Buy Living with Complexity from Amazon.com" href="http://www.amazon.com/gp/product/0262014866/ref=as_li_ss_tl?ie=UTF8&amp;tag=inusabiwetrus-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0262014866">Buy from Amazon.com</a><img style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.com/e/ir?t=&amp;l=as2&amp;o=1&amp;a=0262014866" border="0" alt="" width="1" height="1" /><br />
<a title="Buy from Adlibris.com" href="http://clkuk.tradedoubler.com/click?p(21)a(1897042)g(16159304)url(http://www.adlibris.com/se/product.aspx?isbn=0262014866)" target="_blank">Buy from Adlibris.com</a><img src="http://impgb.tradedoubler.com/imp?type(inv)g(16159304)a(1897042)" alt="" /> (Sweden)</p>
<h2>Conclusion</h2>
<p>These were a few of the books that I&#8217;ve read recently. I think they all have something to bring to the table in their own unique ways. Personally I believe that reading books is one of the best ways to get better at what you do. It not only expands your horizons but also confirms the knowledge you already have and can spark new ideas that you can use in your work. If you&#8217;re interested in more book on usability and UX you might want to read <a href="../2008/07/5-essential-books-on-usability/">5 Essential Books on Usability</a>, an article I wrote a couple of years ago.</p>
<p>So what do you think? Have you read any of these books or any others on UX recently?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.svennerberg.com/2011/04/4-books-on-ux-that-ive-read-recently/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Action-Confirm Design Pattern</title>
		<link>http://www.svennerberg.com/2011/04/action-confirm-design-pattern/</link>
		<comments>http://www.svennerberg.com/2011/04/action-confirm-design-pattern/#comments</comments>
		<pubDate>Fri, 01 Apr 2011 10:42:50 +0000</pubDate>
		<dc:creator>Gabriel Svennerberg</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Design patterns]]></category>
		<category><![CDATA[Interaction design]]></category>
		<category><![CDATA[UX]]></category>

		<guid isPermaLink="false">http://www.svennerberg.com/?p=2958</guid>
		<description><![CDATA[Inspired by the User Interfaces of mobile apps on the iOS and Android platforms, I created a delete button using a design pattern that I&#8217;ve named the Action-Confirm design pattern. I created this for a web application that I recently &#8230; <a href="http://www.svennerberg.com/2011/04/action-confirm-design-pattern/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://media.svennerberg.com/2011/04/action-confirm-post-image.png" alt="" class="alignright size-full wp-image-2987" />Inspired by the User Interfaces of mobile apps on the iOS and Android platforms, I created a delete button using a design pattern that I&#8217;ve named the <strong>Action-Confirm design pattern</strong>. I created this for a web application that I recently worked on.</p>
<p>In a nutshell it&#8217;s an <em>Action button</em> that transforms into a <em>Confirm button</em> when clicked. It&#8217;s a compact solution that provides the user with a way to confirm a possibly destructive action without interrupting the flow of the application. </p>
<p><span id="more-2958"></span></p>
<h3>What problem does it solve</h3>
<p>The problem with confirmation dialogs is that they interrupt the flow of the application. Often these dialogs are modal so the user has to stop and deal with them to get on with whatever it was she was doing. The<strong> Action-Confirm design pattern</strong> presents a less intrusive solution that also is very compact. It keeps the user in the flow and is very quick to act on. </p>
<h3>When to use</h3>
<p>Use this design pattern when:</p>
<ul>
<li>The user needs to confirm an action</li>
<li>Screen estate is limited</li>
<li>You want something less intrusive than a regular confirm dialog</li>
</ul>
<h3>The solution</h3>
<p>The user is presented with a list of items. Each item has one or several actions. In this example the action is a <em>Delete icon</em>.</p>
<div id="attachment_2969" class="wp-caption alignnone" style="width: 420px"><a href="http://media.svennerberg.com/2011/03/delete-button-1.png"><img src="http://media.svennerberg.com/2011/03/delete-button-1-410x136.png" alt="" class="size-medium wp-image-2969" /></a><p class="wp-caption-text">A list with items that can be deleted</p></div>
<p>When the user clicks the <em>Delete icon</em> it transforms into a <em>Confirm button</em> that looks distinctively different. The user can now either click the <em>Confirm button</em> to proceed with the action or click outside it (or press Esc) to revert to the previous state.</p>
<div id="attachment_2971" class="wp-caption alignnone" style="width: 420px"><a href="http://media.svennerberg.com/2011/03/delete-button-2.png"><img src="http://media.svennerberg.com/2011/03/delete-button-2-410x136.png" alt="" title="delete-button-2" width="410" height="136" class="size-medium wp-image-2971" /></a><p class="wp-caption-text">A Confirm button appears in place of the Delete icon</p></div>
<p>If the user clicks the button it&#8217;s replaced by a loader animation. It&#8217;s important to provide this feedback so the user knows that work is being done under the hood.</p>
<div id="attachment_2972" class="wp-caption alignnone" style="width: 420px"><a href="http://media.svennerberg.com/2011/03/delete-button-3.png"><img src="http://media.svennerberg.com/2011/03/delete-button-3-410x136.png" alt="" class="size-medium wp-image-2972" /></a><p class="wp-caption-text">A loader animation is displayed while the item is being deleted.</p></div>
<p>After the item has been deleted on the back-end the item is being removed from the list. </p>
<div id="attachment_2976" class="wp-caption alignnone" style="width: 420px"><a href="http://media.svennerberg.com/2011/03/delete-button-4.png"><img src="http://media.svennerberg.com/2011/03/delete-button-4-410x115.png" alt="" class="size-medium wp-image-2976" /></a><p class="wp-caption-text">The item has been deleted and removed from the list</p></div>
<p>If something would go wrong and the item couldn&#8217;t be deleted, the item is reverted to its original state and an error message is displayed (not shown in an image).</p>
<h3>Caveats</h3>
<h4>Graceful degradation</h4>
<p>In a web environment this design pattern depends on JavaScript to be available. You therefor need to provide a fall back solution in cases when JavaScript and/or CSS aren&#8217;t available (Progressive enhancement). One way to do this, and how I implemented it, is to let the default action of the delete button (which in fact is a &lt;a&gt;-element) be to navigate to a confirmation page that has a form with a submit button. It&#8217;s important that the form is posted using the method POST and not GET. </p>
<div id="attachment_2965" class="wp-caption alignnone" style="width: 338px"><img src="http://media.svennerberg.com/2011/03/confirm-form.png" alt="" class="size-full wp-image-2965" /><p class="wp-caption-text">As a fallback the delete action is confirmed by posting a form</p></div>
<p class="note"><strong>Note: </strong> The reason you should never let a regular link (or a GETrequest) make a destructive action is that it makes the application very vulnerable. Imagine for example a search spider following all delete links. Uh oh!</p>
<h4>Use undo instead</h4>
<p>Naturally one can argue that a better design is to instead of making the user confirm an action, let her easily recover from errors by providing some kind of <em>undo</em>. However, in some circumstances this isn&#8217;t an option because of limitations in the underlying implementation. In these cases the <em>Action-Confirm design pattern</em> could be a viable solution. Read more about using <em>undo</em> in the article <a href="/2008/07/no-undo-redo/">No undo? Redo!</a>.</p>
<h4>Don&#8217;t we want to interrupt the user?</h4>
<p>One can also argue that it&#8217;s a bad thing <strong>not</strong> to interrupt the user with a modal dialog. After all, doesn&#8217;t we want the user to stop and evaluate whether the action was intended or not. Research has showned that users often just click through these dialogs without giving them a second thought. In these cases the dialog becomes useless and nothing more than an annoyance. This design pattern doesn&#8217;t solve that problem but it minimizes the intrusiveness of it.</p>
<h3>Conclusion</h3>
<p>I created this design pattern to solve a common problem: Confirmation of an action. What do you think? Is it better than a regular confirmation dialog? Could it be further enhanced? Are there any other problems with it? </p>
]]></content:encoded>
			<wfw:commentRss>http://www.svennerberg.com/2011/04/action-confirm-design-pattern/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>45° imagery view in Google Maps</title>
		<link>http://www.svennerberg.com/2011/03/45-degree-imagery-view-in-google-maps/</link>
		<comments>http://www.svennerberg.com/2011/03/45-degree-imagery-view-in-google-maps/#comments</comments>
		<pubDate>Thu, 17 Mar 2011 19:39:55 +0000</pubDate>
		<dc:creator>Gabriel Svennerberg</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Geo]]></category>
		<category><![CDATA[Google Maps API 3]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.svennerberg.com/?p=2875</guid>
		<description><![CDATA[In the latest version of Google Maps API 3 (version 3.4) a new exciting feature is introduced: 45° imagery in selected cities around the world. This feature will let you see the world from a whole new angle. This change &#8230; <a href="http://www.svennerberg.com/2011/03/45-degree-imagery-view-in-google-maps/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://media.svennerberg.com/2009/06/gmmlogo.gif" alt="" class="alignright size-full wp-image-1991" />In the latest version of Google Maps API 3 (version 3.4) a new exciting feature is introduced: <strong>45° imagery</strong> in selected cities around the world. This feature will let you see the world from a whole new angle. This change also calls for new properties and controls for the Map Object which will all be explained in this article. As a bonus I will also introduce you to another new feature, the brand new <strong>Map Overview Control</strong>.</p>
<p><span id="more-2875"></span></p>
<h2>New imagery</h2>
<p>To enable this new view there&#8217;s one new property in the <code>MapOptions</code> object that you need to be aware of, it&#8217;s called <code>tilt</code>. It works in cooperation with the Map types <code>SATELLITE </code>and <code>HYBRID</code>. So unless you set the map to use one of these, the map won&#8217;t work. Here&#8217;s how <code>tilt</code> work:</p>
<ul>
<li><strong>tilt</strong><br />
        Enables the 45° imagery view and takes a number as its value. This value must be set to <code>45</code>. Note that the <code>mapTypeId </code> property must be set to either <code>SATELLITE </code>or <code>HYBRID </code>for this property to work.</li>
</ul>
<p>This particular view is only available from zoom level 18. It can be enabled by the user with a drop-down option in the Map Type control. Try hovering the <strong>Satellite</strong> button in the example below to display the option to switch 45° view on and off. If you ascend over zoom level 18 you will notice that this option is grayed out and regular satellite imagery is displayed.</p>
<p>To create the map displayed in the example below this code is used. It opens up a map centered over Stuttgart Schlossplatz at zoom level 18, with <code>tilt</code> enabled:</p>
<pre name="code" class="js">
var options = {
  zoom: 18,
  center: new google.maps.LatLng(48.7783, 9.1807),
  mapTypeId: google.maps.MapTypeId.SATELLITE,
  tilt: 45
};
var map = new google.maps.Map(document.getElementById('map'), options);
</pre>
<p><iframe class="inlineMap" src="http://www.svennerberg.com/examples/45-degree-imagery/index.html"></iframe><br />
<a href="http://www.svennerberg.com/examples/45-degree-imagery/">See example in full size</a></p>
<h3>Rotate Controls</h3>
<p>With this new functionality new controls are needed. When the large navigation controls are displayed an additional circle is displayed around the pan control. It&#8217;s the same that&#8217;s available in street view. You can drag it around to see imagery from different angles. </p>
<div id="attachment_2892" class="wp-caption alignnone" style="width: 420px"><a href="http://media.svennerberg.com/2011/03/large-rotate-controls.png"><img src="http://media.svennerberg.com/2011/03/large-rotate-controls-410x316.png" alt="" class="size-medium wp-image-2892" /></a><p class="wp-caption-text">The new Rotate Controls</p></div>
<p>Additionally there&#8217;s a smaller rotate control positioned right above the zoom control. It rotates the imagery 45 degrees clockwise each time it&#8217;s clicked. This control is available in both regular and compact view.</p>
<div id="attachment_2898" class="wp-caption alignnone" style="width: 420px"><img src="http://media.svennerberg.com/2011/03/small-rotate-control.png" alt="" class="size-full wp-image-2898 border" /><p class="wp-caption-text">Only the small rotate control is available in compact view</p></div>
<h3>Current coverage</h3>
<p>Only selected cities are available at this time but new ones are continuously being added. To see the cities that are currently available, <a href="http://maps.google.com/maps/ms?ie=UTF8&#038;hl=en&#038;msa=0&#038;msid=112099477591857711257.00048ad05c320f746f5c2&#038;t=h&#038;ll=8.787199,-45.827047&#038;spn=85.447389,153.703486&#038;dap=&#038;source=embed" title="45° Imagery on Google Maps">check out this map</a>.</p>
<h2>Overview Map</h2>
<p>Another new feature in API v3 is something that&#8217;s been available in v2 for a long time, an <strong>Overview Map</strong>. It&#8217;s a small fold out map in the lower right corner of the main map that provides an overview of the area you&#8217;re currently watching. To enable it there are two new properties in the <code>MapOptions </code>object: </p>
<ul>
<li><strong>overviewMapControl</strong><br />
        Enables the overview map and can be either <code>true</code> or <code>false</code>. The default value is currently <code>false </code>which means that it&#8217;s not visible. (See note below)</li>
<li><strong>overviewMapControlOptions</strong><br />
        Takes an object literal as its value which has one possible property: <code>opened</code>. Set this to either <code>true </code>or <code>false </code>depending on if you want the map to be folded out when the map loads or not. The default value is <code>false</code>.</li>
</ul>
<p class="note"><strong>Note:</strong> In a few weeks from now (March 17, 2011) the default value of <code>overviewMapControl</code> will be changed from <code>false</code> to <code>true</code>. This means that you need to explicitly set it to <code>false </code>unless you want your maps to be enabled with an overview map.</p>
<p>Below is an example map which has an enabled overview map that opens when the main map loads. The map is centered over Heroes&#8217; Square in Budapest at zoom level 19. Here&#8217;s what the code looks like:</p>
<pre name="code" class="js">
var options = {
  zoom: 18,
  center: new google.maps.LatLng(47.5153, 19.0782),
  mapTypeId: google.maps.MapTypeId.SATELLITE,
  tilt: 45,
  overviewMapControl: true,
  overviewMapControlOptions: {
    opened: true
  }
};
var map = new google.maps.Map(document.getElementById('map'), options);
</pre>
<p><iframe class="inlineMap" src="http://www.svennerberg.com/examples/45-degree-imagery/overviewMap.html"></iframe><br />
<a href="http://www.svennerberg.com/examples/45-degree-imagery/overviewMap.html">See example in full size</a></p>
<h2>More information</h2>
<p>For more information check out <a href="http://googlegeodevelopers.blogspot.com/2011/03/new-angle-on-world-with-45-imagery.html">A new angle on the world with 45° imagery </a> on the Geo Developers Blog.</p>
<p>For a complete list of all new features and fixes in the 3.4 release, check out the <a href="http://code.google.com/p/gmaps-api-issues/wiki/JavascriptMapsAPIv3Changelog" title="Javascript Maps API v3 Changelog">changelog</a>.</p>
<div class="book_push">
<img src="http://media.svennerberg.com/2009/09/bgma3-70.png" alt="" /></p>
<h3>My Google Maps book</h3>
<p>If you found this article useful you might be interested in my book <a href="/bgma3/" title="Read more about my book - Beginning Google Maps API 3"><strong>Beginning Google Maps API 3</strong></a>. It covers everything you need to know to create awesome maps on your web sites. <a href="http://www.amazon.com/gp/product/1430228024?ie=UTF8&#038;tag=inusabiwetrus-20&#038;linkCode=as2&#038;camp=1789&#038;creative=390957&#038;creativeASIN=1430228024" title="Buy Beginning Google Maps Applications from Amazon.com">Buy it on Amazon.com</a><img src="http://www.assoc-amazon.com/e/ir?t=inusabiwetrus-20&#038;l=as2&#038;o=1&#038;a=1430228024" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.svennerberg.com/2011/03/45-degree-imagery-view-in-google-maps/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Extending Google Maps API 3 with libraries</title>
		<link>http://www.svennerberg.com/2011/03/extending-google-maps-api-3-with-libraries/</link>
		<comments>http://www.svennerberg.com/2011/03/extending-google-maps-api-3-with-libraries/#comments</comments>
		<pubDate>Tue, 08 Mar 2011 12:36:37 +0000</pubDate>
		<dc:creator>Gabriel Svennerberg</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Maps API 3]]></category>

		<guid isPermaLink="false">http://www.svennerberg.com/?p=2828</guid>
		<description><![CDATA[Google Maps API 3 is streamlined to include just the core functionality needed to create basic maps. It&#8217;s architected that way too ensure that the API will load as fast as possible. It&#8217;s unnecessary for the browser to download and &#8230; <a href="http://www.svennerberg.com/2011/03/extending-google-maps-api-3-with-libraries/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Google Maps API 3 is streamlined to include just the core functionality needed to create basic maps. It&#8217;s architected that way too ensure that the API will load as fast as possible. It&#8217;s unnecessary for the browser to download and parse functionality that&#8217;s not needed. If, however, you need to use specific functionality such as being able to measure distances or display ads, you can get this additional functionality by including a library in the API. </p>
<p>This article will describe how to do just that and what libraries that are currently available.</p>
<p><span id="more-2828"></span></p>
<h2>Libraries</h2>
<p>There are currently 2 libraries available. These are:</p>
<ul>
<li>The Geometry Library</li>
<li>The AdSense Library</li>
</ul>
<p>This list will likely grow as the API matures. It&#8217;s actually a great plugin architecture that lets the API evolve nicely with side-track functionality without interfering with the core API functionality.</p>
<h3>The Geometry Library</h3>
<p>The <em>Geometry Library</em> includes methods to calculate distances and areas as well as methods to encode and decode the points used in polylines and polygons (Encoding is a technique that&#8217;s used to compress and optimize polylines and polygons). </p>
<h3>The AdSense Library</h3>
<p>If you want to display ads in your map, the <em>AdSense Library</em> provides methods to do just that. Note that it requires that you have an AdSense account that&#8217;s enabled for AdSense for Content. </p>
<p>To see how these might look like, check out <a href="http://code.google.com/intl/sv-SE/apis/maps/documentation/javascript/examples/ads-adunit-format.html">this example from Google</a>. To the left of the map you can choose the format of the ads.</p>
<div id="attachment_2848" class="wp-caption alignnone" style="width: 420px"><a href="http://media.svennerberg.com/2011/03/adsense.png"><img src="http://media.svennerberg.com/2011/03/adsense-410x307.png" alt="" /></a><p class="wp-caption-text">How AdSense might look on a map</p></div>
<h2>Including a library</h2>
<p>To include a library in the API you need to reference it in the <code>&lt;script&gt;</code> tag where you include the main API. This is done by adding an additional parameter in the URL called <code>libraries</code>. This is how to include the Geometry Library.</p>
<pre name="code" class="html">
&lt;script type="text/javascript" src="http://maps.google.com/maps/api/js?libraries=geometry&amp;sensor=true_or_false"&gt;&lt;/script&gt;
</pre>
<p class="note"><strong>Note:</strong> To add more than one library you add them separated with a comma.</p>
<h3>Accessing the methods</h3>
<p>The methods of the library are accessed through the <code>google.maps.<em>libraryName</em></code> namespace. So for instance; to encode the path of a polyline (a feature of the Geometry Library) you write this:</p>
<pre name="code" class="js">
var encodedPath = google.maps.geometry.encoding.encodePath(myPath);
</pre>
<h2>Summary</h2>
<p>Libraries are a powerful way of including more functionality into the Google Maps API. If you have the need for additional geometry functionality or need to include ads in a map, you can start benefiting from them right away. For other needs, I&#8217;m sure that new libraries will gradually be added as the API evolves.</p>
<h2>Resources</h2>
<p>To read more about how to use the Google Maps API 3 Libraries check out these resources:</p>
<ul>
<li><a href="http://code.google.com/intl/sv-SE/apis/maps/documentation/javascript/basics.html#Libraries">Libraries in the V3 Maps API</a></li>
<li><a href="http://code.google.com/intl/sv-SE/apis/maps/documentation/javascript/geometry.html" title="Google Maps Javascript API V3 Geometry Library">Geometry Library &#8211; Documentation</a></li>
<li><a href="http://code.google.com/intl/sv-SE/apis/maps/documentation/javascript/reference.html#encoding">Geometry Library &#8211; API documentation</a></li>
<li><a href="http://code.google.com/intl/sv-SE/apis/maps/documentation/javascript/advertising.html" title="Google Maps Javascript API V3 AdSense Library">AdSense Library &#8211; Documentation</a></li>
<li><a href="http://code.google.com/intl/sv-SE/apis/maps/documentation/javascript/reference.html#AdUnit">AdSense Library &#8211; API documentation</a></li>
</ul>
<div class="book_push">
<img src="http://media.svennerberg.com/2009/09/bgma3-70.png" alt="" /></p>
<h3>My Google Maps book</h3>
<p>If you found this article useful you might be interested in my book <a href="/bgma3/" title="Read more about my book - Beginning Google Maps API 3"><strong>Beginning Google Maps API 3</strong></a>. It covers everything you need to know to create awesome maps on your web sites. <a href="http://www.amazon.com/gp/product/1430228024?ie=UTF8&#038;tag=inusabiwetrus-20&#038;linkCode=as2&#038;camp=1789&#038;creative=390957&#038;creativeASIN=1430228024" title="Buy Beginning Google Maps Applications from Amazon.com">Buy it on Amazon.com</a><img src="http://www.assoc-amazon.com/e/ir?t=inusabiwetrus-20&#038;l=as2&#038;o=1&#038;a=1430228024" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.svennerberg.com/2011/03/extending-google-maps-api-3-with-libraries/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Dancing markers</title>
		<link>http://www.svennerberg.com/2010/12/dancing-markers/</link>
		<comments>http://www.svennerberg.com/2010/12/dancing-markers/#comments</comments>
		<pubDate>Wed, 08 Dec 2010 23:09:05 +0000</pubDate>
		<dc:creator>Gabriel Svennerberg</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Maps API 3]]></category>

		<guid isPermaLink="false">http://www.svennerberg.com/?p=2802</guid>
		<description><![CDATA[The Google Maps API team recently added an eye catching new feature to the Google Maps API v3 which makes it possible to animate markers. This feature has been available in v2 for quite some time and occurs when you &#8230; <a href="http://www.svennerberg.com/2010/12/dancing-markers/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://media.svennerberg.com/2009/06/gmmlogo.gif" alt="" title="gmmlogo" width="48" height="48" class="alignright size-full wp-image-1991" />The Google Maps API team recently added an eye catching new feature to the Google Maps API v3 which makes it possible to animate markers. This feature has been available in v2 for quite some time and occurs when you drag and drop a marker. It rises the marker up when you drag it and then bounces it into position when you drop it. </p>
<p>The API team however, wasn&#8217;t satisfied with just adding what was available in v2. They also added a drop animation similar to the one found in Google Maps on the iPhone. It looks like the marker is being dropped into place from above and then ends with a small bounce. </p>
<p>But they didn&#8217;t stop there either. They also added the ability to animate the markers at will. So now we can trigger the animation whenever we feel like it using the <code>setAnimation()</code> method of the <code>Marker</code> object. </p>
<p><span id="more-2802"></span></p>
<h2>Making the markers drop from above</h2>
<p>When you create a new marker and want it to drop into place on the map, you can set the <code>animation</code> property of the <code>MarkerOptions</code> object to <code>DROP</code>. The marker will then fall from the sky when added. Also notice that I&#8217;ve set the <code>draggable</code> property to <code>true </code> to enables drag and drop functionality. </p>
<pre name="code" class="js">
new google.maps.Marker({
  position: latLng,
  map: map,
  draggable: true,
  animation: google.maps.Animation.DROP
 });
</pre>
<h2>Triggering an animation</h2>
<p>The <code>setAnimation()</code> method takes a constant from the <code>Animation</code> class and can be either <code>BOUNCE</code> or <code>DROP</code>. </p>
<p>To turn an animation on or off you simply call the method on the <code>Marker</code> object:</p>
<pre name="code" class="js">
// Make a marker bouce
marker.setAnimation(google.maps.Animation.BOUNCE);
// Stop the animation by passing null to the method
marker.setAnimation(null);
</pre>
<h2>See it in action</h2>
<p>I&#8217;ve created a demo that demonstrates these new features. It adds markers with a <code>DROP</code> animation and you can then make them dance by triggering the <code>BOUNCE</code> animation. The markers are draggable so you can try dragging them around to see how they behave.</p>
<div class="image">
<a href="/examples/animated_markers/" title="Live demo of the dancing markers"><img src="http://media.svennerberg.com/2010/12/demo-410x363.png" alt="" class="alignnone" /></a></p>
<p><a href="/examples/animated_markers/">Check out the live demo</a></p>
</div>
<h2>Read more</h2>
<p>Be sure to check out the announcement in the article: <a href="http://googlegeodevelopers.blogspot.com/2010/12/map-markers-they-move.html">The map markers! They move!</a> on Google Geo Developers Blog and also check the <a href="http://code.google.com/apis/maps/documentation/javascript/overlays.html#MarkerAnimations">documentation</a> out.</p>
<div class="book_push">
<img src="http://media.svennerberg.com/2009/09/bgma3-70.png" alt="" /></p>
<h3>My Google Maps book</h3>
<p>If you found this article useful you might be interested in my book <a href="/bgma3/" title="Read more about my book - Beginning Google Maps API 3"><strong>Beginning Google Maps API 3</strong></a>. It covers everything you need to know to create awesome maps on your web sites. <a href="http://www.amazon.com/gp/product/1430228024?ie=UTF8&#038;tag=inusabiwetrus-20&#038;linkCode=as2&#038;camp=1789&#038;creative=390957&#038;creativeASIN=1430228024" title="Buy Beginning Google Maps Applications from Amazon.com">Buy it on Amazon.com</a><img src="http://www.assoc-amazon.com/e/ir?t=inusabiwetrus-20&#038;l=as2&#038;o=1&#038;a=1430228024" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.svennerberg.com/2010/12/dancing-markers/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Google Maps API 3 – Mobile devices</title>
		<link>http://www.svennerberg.com/2010/07/google-maps-api-3-%e2%80%93-mobile-devices/</link>
		<comments>http://www.svennerberg.com/2010/07/google-maps-api-3-%e2%80%93-mobile-devices/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 23:06:13 +0000</pubDate>
		<dc:creator>Gabriel Svennerberg</dc:creator>
				<category><![CDATA[Articles]]></category>

		<guid isPermaLink="false">http://www.svennerberg.com/?p=2662</guid>
		<description><![CDATA[A lot of the web browsing these days takes place on mobile devices. Therefore it&#8217;s important to know how to design web pages and maps for these. When it comes to incorporating Google Maps on a web page, it&#8217;s done &#8230; <a href="http://www.svennerberg.com/2010/07/google-maps-api-3-%e2%80%93-mobile-devices/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://media.svennerberg.com/2010/07/iphone-100.png" alt="" class="alignright" />A lot of the web browsing these days takes place on mobile devices. Therefore it&#8217;s important to know how to design web pages and maps for these. When it comes to incorporating Google Maps on a web page, it&#8217;s done pretty much the same way as for desktop browsers, at least for advanced devices like the iPhone and Android based phones. There are however some things to consider. In this article I will explain what these things are and how it&#8217;s done.</p>
<p><span id="more-2662"></span></p>
<p>As opposed to previous version of Google Maps API, version 3 is designed specifically with mobile devices in mind. What this means is that the performance on mobile devices is a lot better. Version 3 of the API loads, for example, more than twice as fast on the iPhone as the old version. This makes it especially well suited for mobile browsing. You don&#8217;t have to do anything particular to make it work on these devices but there are a few things that you need to consider.</p>
<p class="note"><strong>Tip:</strong> If you don&#8217;t yet know how to use the Google Maps API v3, I suggest that you read the previous articles in this series before plunging into this one.</p>
<h2>Maximizing the Viewport</h2>
<p>Since the screens of mobile devices are a lot smaller than on desktop platforms the first thing you want to do is to make sure that as much screen estate as possible is used for the map. This is done by setting the width and the height of the map to <code>100%</code>. Assuming that the element containing the map has the <code>ID="map"</code>, here&#8217;s what the CSS will look like:</p>
<pre name="code" class="css">
html, body {
  height: 100%;
  margin: 0;
}
#map {
  width: 100%;
  height: 100%;
}
</pre>
<p>Notice that the height of the <code>&lt;html&gt;</code> and <code>&lt;body&gt;</code> tags are set to <code>100%</code> with zero margin. The reason for this is to make sure that the web page covers the entire height of the browser and that there&#8217;s no white space around the map.</p>
<div class="image">
<a href="http://media.svennerberg.com/2010/07/both-maps.png"><img src="http://media.svennerberg.com/2010/07/both-maps-410x283.png" alt="" /></a></p>
<p>In the left image the default margin prevents the map from covering the entire screen, whereas in the right image the margin is set to zero.</p>
</div>
<h2>Disabling page zoom</h2>
<p>Mobile devices with touch screens often uses the pinch maneuver for zooming the web page. When you have a map on that page, you probably want the map to zoom rather than the entire web page. Fortunately there&#8217;s a special <code>&lt;meta&gt;</code> tag that can be used to disable page zooming. It must be placed in the <code>&lt;head&gt;</code> section of the page and looks like this:</p>
<pre name="code" class="html">
&lt;meta name="viewport" content="initial-scale=1.0, user-scalable=no" /&gt;
</pre>
<p>Using this you make sure that the map work as expected. Browsers that doesn&#8217;t support this tag will simply ignore it, so it&#8217;s safe to use.</p>
<h2>No hover state</h2>
<p>One final consideration that needs to be made is that there&#8217;s no such thing as hover state (mouseover) on mobile devices. Therefore you need to make sure that you don&#8217;t use this for essential interactions such as showing vital information.</p>
<h2>Live demo</h2>
<p>To see that this demo actually works as expected you need to access it from an iPhone or an Android based phone. But it is of course entirely usable by desktop browsers too. What you get is a web page with a maximized map regardless of what device you use to access it.</p>
<p><a href="http://www.svennerberg.com/examples/mobile-map/">Check out the live demo</a>.</p>
<h2>Conclusion</h2>
<p>Developing maps for mobile devices is really not that different from developing them for desktop browsers. As long as you&#8217;re aware of their limitations you should be fine. If you want to learn more about developing for the iPhone, check out the <a href="http://developer.apple.com/webapps/docs/documentation/AppleApplications/Reference/SafariWebContent/Introduction/Introduction.html">Safari Dev Center</a>. To learn more about developing for Android based phones, check out the <a href="http://developer.android.com/">Android documentation</a>.</p>
<p>Do you know of any other considerations that need to be made when developing maps for mobile devices? Please share in the comments!</p>
<div class="book_push">
<img src="http://media.svennerberg.com/2009/09/bgma3-70.png" alt="" /></p>
<h3>My Google Maps book</h3>
<p>If you found this article useful you might be interested in my book <a href="/bgma3/" title="Read more about my book - Beginning Google Maps API 3"><strong>Beginning Google Maps API 3</strong></a>. It covers everything you need to know to create awesome maps on your web sites. <a href="http://www.amazon.com/gp/product/1430228024?ie=UTF8&#038;tag=inusabiwetrus-20&#038;linkCode=as2&#038;camp=1789&#038;creative=390957&#038;creativeASIN=1430228024" title="Buy Beginning Google Maps Applications from Amazon.com">Buy it on Amazon.com</a><img src="http://www.assoc-amazon.com/e/ir?t=inusabiwetrus-20&#038;l=as2&#038;o=1&#038;a=1430228024" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.svennerberg.com/2010/07/google-maps-api-3-%e2%80%93-mobile-devices/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>The difference between add(), find() and filter() in jQuery</title>
		<link>http://www.svennerberg.com/2009/09/the-difference-between-add-find-and-filter-in-jquery/</link>
		<comments>http://www.svennerberg.com/2009/09/the-difference-between-add-find-and-filter-in-jquery/#comments</comments>
		<pubDate>Sun, 27 Sep 2009 15:39:58 +0000</pubDate>
		<dc:creator>Gabriel Svennerberg</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.svennerberg.com/?p=2236</guid>
		<description><![CDATA[There&#8217;s a few methods used for traversing the DOM-tree in jQuery that is confusingly similar, well at least they were for me. This article will explain the difference between them and when you should use which one. The methods I&#8217;m &#8230; <a href="http://www.svennerberg.com/2009/09/the-difference-between-add-find-and-filter-in-jquery/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://media.svennerberg.com/2009/09/jquery-logo-160.png" alt="" class="alignright size-full wp-image-2289" />There&#8217;s a few methods used for traversing the DOM-tree in jQuery that is confusingly similar, well at least they were for me. This article will explain the difference between them and when you should use which one.</p>
<p><span id="more-2236"></span></p>
<p>The methods I&#8217;m talking about are <code>add()</code>, <code>find()</code> and <code>filter()</code>. They are all used to extend or refine a selection of html objects that you&#8217;ve already got. Typically you&#8217;ve already got a selection using the jQuery method, or $(expression), but need to refine it further. </p>
<p>All three of these methods have, that they take a <em>jQuery expression</em> as an argument, in common. A jQuery expression typically looks like a regular CSS selector like for example &#8220;#content&#8221;. You can use any kind of CSS selector, including the ones found in CSS 3. On top of that you can also use jQuery specific selectors. It&#8217;s a really powerful way of finding the right elements in a HTML document. To read more about how a expression could be constructed, check out the <a href="http://docs.jquery.com/Selectors">section about selectors</a> in the jQuery documentation.</p>
<p>We will take a closer look on how these methods really works in the following section.</p>
<h2>Examples and explanations</h2>
<p>Consider the following HTML.</p>
<pre name="code" class="html">
&lt;div id="div1"&gt;
  &lt;p&gt;Some text&lt;/p&gt;
&lt;/div&gt;
&lt;div id="div2"&gt;
  &lt;p&gt;Some more text&lt;/p&gt;
&lt;/div&gt;
</pre>
<p>We&#8217;re going to use this HTML to do some selections from.</p>
<h3>add()</h3>
<p>As the name implies this method is used to add more elements to a collection that you&#8217;ve already got. So if you have a &lt;div&gt; with the id &#8220;div1&#8243; in your selection and wants to add a &lt;div&gt; with the id &#8220;div2&#8243; to it, <code>add()</code> is the method to use:</p>
<pre name="code" class="js">
// This code will add div2 to the collection that already contains div1
$('#div1').add('#div2');
</pre>
<p><a href="http://docs.jquery.com/Traversing/add">Read about add() in the jQuery documentation</a>.</p>
<h3>find()</h3>
<p><code>Find()</code> on the other hand is used to find descendant element from your selection. So instead of adding more elements to it it narrows it down to fewer elements. It searches what&#8217;s inside the parent element(s) in your selection. In the example below it will search for content inside of the selected &lt;div&gt; that matches the expression.</p>
<pre name="code" class="js">
// Refine the selection to contain only the &lng;p&lt; elements inside of #div1
$('#div1').find('p');
</pre>
<p><a href="http://docs.jquery.com/Traversing/find">Read about find() in the jQuery documentation</a>.</p>
<h3>filter()</h3>
<p><code>Filter()</code> is quite similar to <code>find()</code> but instead of searching the descendant elements of the selection it &#8220;searches&#8221;, or rather filters, the elements that are in the selection. </p>
<pre name="code" class="js">
// Reduces the selection to only contain the &lt;div&gt; with the id "div1"
$('div').filter('#div1');
</pre>
<p><a href="http://docs.jquery.com/Traversing/filter">Read about filter() in the jQuery documentation</a>.</p>
<h2>Demo page</h2>
<p>I&#8217;ve constructed a simple <a href="http://www.svennerberg.com/examples/add_find_filter/">demo page</a> which demonstrates how these methods work. Please try it out.</p>
<h2>Conclusion</h2>
<p>All of these methods are very useful but it&#8217;s important to know which one to choose in a given situation. If you want to <strong>extend your selection</strong> to include more elements you should use <code>add()</code>. If you want to <strong>narrow down your selection</strong> you need too use either <code>find()</code> or <code>filter()</code>.</p>
<p>Of course there are many other useful methods to traverse the DOM in jQuery. Which ones are your favorites? </p>
]]></content:encoded>
			<wfw:commentRss>http://www.svennerberg.com/2009/09/the-difference-between-add-find-and-filter-in-jquery/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Google Maps API 3 – InfoWindows</title>
		<link>http://www.svennerberg.com/2009/09/google-maps-api-3-infowindows/</link>
		<comments>http://www.svennerberg.com/2009/09/google-maps-api-3-infowindows/#comments</comments>
		<pubDate>Mon, 21 Sep 2009 18:10:17 +0000</pubDate>
		<dc:creator>Gabriel Svennerberg</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Maps API 3]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.svennerberg.com/?p=2208</guid>
		<description><![CDATA[Using InfoWindows is a brilliant way to display information about a certain location. Since they provides you with a space to put text or whatever HTML you please, they can be used in very interesting ways. In this article, which &#8230; <a href="http://www.svennerberg.com/2009/09/google-maps-api-3-infowindows/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://media.svennerberg.com/2009/06/gmmlogo.gif" alt="" class="alignright size-full wp-image-1991" />Using InfoWindows is a brilliant way to display information about a certain location. Since they provides you with a space to put text or whatever HTML you please, they can be used in very interesting ways. In this article, which is the fourth in a series about Google Maps API 3,  I will show you how to make good use of this great feature. </p>
<p><span id="more-2208"></span></p>
<h2 class="clear">The InfoWindow object</h2>
<p>The InfoWindow object will open an InfoWindow somewhere on a map. It looks like a speech bubble and the tip of its stem typically points to a certain object on the map. Often it&#8217;s pointing at a marker, but it doesn&#8217;t have to be. It can point at any other object or any coordinate on the map.</p>
<p>The object resides in the <code>google.map.InfoWindow</code> namespace and takes an optional argument which is <code>options</code>. Options is an object literal in which you can define all the properties for the InfoWindow. This means that you can create an empty InfoWindow object for later use, but most of the time you&#8217;ll probably want to fill it with some sort of content right away. To fill it with content you&#8217;ll need to use the property <code>content</code>. It can be set either on creation of the object or afterwards using the <code>setContent()</code> method. It can be either a text string, a string containing HTML, or a reference to an existing HTML node.</p>
<h3>Setting the scene</h3>
<p>We will start with a map with one marker on it. If you don&#8217;t know how to create a map and add markers to it, I suggest that you read the <a href="http://www.svennerberg.com/series/google-maps-api-3/">previous articles in this series</a> first.</p>
<p>For those of you that are already familiar with the concepts, here&#8217;s the code for creating a map and adding a marker to it:</p>
<pre name="code" class="js">
// Creating an option object for the map
var options = {
	zoom: 7,
	center: new google.maps.LatLng(56.83, 15.16),
	mapTypeId: google.maps.MapTypeId.ROADMAP
};
// Initializing the map
var map = new google.maps.Map(document.getElementById('map'), options);
// Creating a marker
var marker = new google.maps.Marker({
  position: new google.maps.LatLng(56.8848, 14.7730),
  map: map,
  title: 'My workplace'
});
</pre>
<p>This will result in a map that looks like this:</p>
<p><img src="http://media.svennerberg.com/2009/09/InfoWindowHidden.png" alt="" class="alignnone size-full wp-image-2256" /></p>
<h3>Adding an InfoWindow</h3>
<p>Now that we have the scene set, lets add an InfoWindow to it. In this example we will instantly fill the InfoWindow with some content, in this case the classic text string &#8220;Hello world&#8221;:</p>
<pre name="code" class="js">
// Creating an InfoWindow object
var infowindow = new google.maps.InfoWindow({
  content: 'Hello world'
});
</pre>
<h3>Showing the InfoWindow</h3>
<p>We have now created an InfoWindow object but not yet added it to the map. To make it appear we have to first open it and that&#8217;s done with its method <code>open()</code>. This method takes two arguments: the map object which it will be added to and optionally an anchor where it will point to. The anchor must be an object on the map that exposes a position property. As of now this will probably be a marker.</p>
<p>If you don&#8217;t pass on the second argument you must provide the InfoWindow object with a position. This is done with either the attribute <code>position</code> in options or via its <code>setPosition()</code> method. In this example however, we will pass our marker as the second argument so that the InfoWindow will point straight at it.</p>
<pre name="code" class="js">
infowindow.open(map, marker);
</pre>
<p>Now the InfoWindow will be visible on the map and will look like this:</p>
<p><img src="http://media.svennerberg.com/2009/09/InfoWindow.png" alt="" class="alignnone size-full wp-image-2254" /></p>
<p>Note that the default behavior of the map is that it pans so that all of the InfoWindow is visible. This behavior can be overridden by setting the property <code>disableAutoPan</code> to <code>false</code>.</p>
<h3>Adding a click event</h3>
<p>As of now our InfoWindow is automatically opened when our map loads. Most of the time we want it to open when something is clicked and that&#8217;s exactly the functionality we&#8217;re going to add next. We&#8217;re going to add a click event to the marker so that when it&#8217;s being clicked the InfoWindow will open.</p>
<p>To add an event to the marker we will need to use the <code>addListener()</code> method found in <code>google.maps.event</code>. This method takes 3 arguments, the first one being the object it will be attached to, in this case the <em>marker</em>. The second argument defines what kind of event we want to add, in this case a <em>click</em> event. The third argument is a function which will be called when the event is being triggered. In this case we will use an anonymous function and we will move the code that opens the InfoWindow inside it.</p>
<p>Doing that the code will look like this:</p>
<pre name="code" class="js">
google.maps.event.addListener(marker, 'click', function() {
  infowindow.open(map, marker);
});
</pre>
<p>Now, when we load our page the InfoWindow will not be visible until we click the marker. Then it will pop up.</p>
<h2>Using multiple InfoWindows</h2>
<p>You may have noticed that we create the InfoWindow outside the click event of the marker. Perhaps you&#8217;re thinking that we might as well could have put all of the code regarding the InfoWindow inside it. But there&#8217;s a good reason for not doing that. By creating the InfoWindow outside the event handler, we ensure that there only exists one InfoWindow at a time. If we had put the code for creating the InfoWindow inside the event handler we would have created a new InfoWindow each time the marker was clicked. Leaving us with several identical InfoWindows on top of each other. </p>
<p>Now there are ways to deal with this. We could for example check if the InfoWindow existed before creating it, but by creating it only once we completely avoid the problem all together.</p>
<p>If you&#8217;ve been programming in version 2 of the Google Maps API you&#8217;ll notice a significant difference here. In the old API we could only have one InfoWindow at a time, but now we can have several. Because of this we have to change how we think about them. There might be occasions when we want to display several of them at once, but often we will only want to display them one at a time.</p>
<h2>More control over the Info Window</h2>
<p>There are some other properties that you can add to options for added control of the InfoWindow. I&#8217;ve already mentioned <code>content</code> which defines what will be displayed inside of it and <code>position</code> which in lack of an anchor defines the position of the InfoWindow. But here&#8217;s all of the properties available for controlling the look and behavior of the InfoWindow:</p>
<h3>content</h3>
<p>This property defines the content of the InfoWindow. It can be either plain text, HTML or a reference to an existing HTML element. The InfoWindow will automatically adjust its size to fit the content.</p>
<h3>disableAutoPan [boolean]</h3>
<p>If set to <code>true</code> the map is no longer automatically panned to fit the InfoWindow. Default value is <code>false</code>. </p>
<h3>maxWidth [number]</h3>
<p>Sets the maximum width of the InfoWindow in pixels. It must be set before the InfoWindow is opened. </p>
<p>Another way of controlling the size of the InfoWindow is to add HTML with certain dimensions to it. This way you can control its size from you CSS.</p>
<h3>pixelOffset [size]</h3>
<p>If position is used to place the InfoWindow, pixelOffset defines how far away from this point the window should be positioned.</p>
<h3>position [LatLng]</h3>
<p>Defines the position the InfoWindow should be pointing at. If an anchor (the second argument of the open() method is set, it will override this property.</p>
<h3>zIndex [number]</h3>
<p>When displaying multiple InfoWindows at the same time, this property will determine the stack order of those.</p>
<h2>Live demo</h2>
<p><a href="http://www.svennerberg.com/examples/google_maps_3/info_windows.html" title="Google Maps API 3 - InfoWindows"><img src="http://media.svennerberg.com/2009/09/screendump_info_windows-410x458.png" alt=""  class="alignnone size-medium wp-image-2261" /></a></p>
<p><a href="http://www.svennerberg.com/examples/google_maps_3/info_windows.html" title="Google Maps API 3 - InfoWindows">Check out the Live Demo</a> showing the example used in this article.</p>
<p>Hopefully this article has provided you with a basic understanding of how to use InfoWindows in your maps but there are a lot more that can be done with them. They still lack a lot of the functionality found in the old API, like displaying a detail map inside it or having tabbed content. Some of these features will probably never find its way into the new API but fortunately it&#8217;s quite easy to build this functionality yourself. Keep your eyes open for my upcoming book where I will explain how to do some of this stuff.</p>
<h2>Further reading</h2>
<p>For more information about the InfoWindow object, check out the <a href="http://code.google.com/intl/sv-SE/apis/maps/documentation/v3/reference.html#InfoWindow" title="Google Maps API V3 Reference - InfoWindow">Official Google Maps Reference</a>. You might also want to check out the section in the documentation about <a href="http://code.google.com/apis/maps/documentation/v3/overlays.html#InfoWindows" title="Maps API V3 Overlays">Overlays</a>.</p>
<div class="book_push">
<img src="http://media.svennerberg.com/2009/09/bgma3-70.png" alt="" /></p>
<h3>My Google Maps book</h3>
<p>If you found this article useful you might be interested in my book <a href="/bgma3/" title="Read more about my book - Beginning Google Maps API 3"><strong>Beginning Google Maps API 3</strong></a>. It covers everything you need to know to create awesome maps on your web sites. <a href="http://www.amazon.com/gp/product/1430228024?ie=UTF8&#038;tag=inusabiwetrus-20&#038;linkCode=as2&#038;camp=1789&#038;creative=390957&#038;creativeASIN=1430228024" title="Buy Beginning Google Maps Applications from Amazon.com">Buy it on Amazon.com</a><img src="http://www.assoc-amazon.com/e/ir?t=inusabiwetrus-20&#038;l=as2&#038;o=1&#038;a=1430228024" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.svennerberg.com/2009/09/google-maps-api-3-infowindows/feed/</wfw:commentRss>
		<slash:comments>72</slash:comments>
		</item>
	</channel>
</rss>

