<?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>Google Data &#187; Monica Trean</title>
	<atom:link href="/author/monica-trean/feed/" rel="self" type="application/rss+xml" />
	<link>https://googledata.org</link>
	<description>Everything Google: News, Products, Services, Content, Culture</description>
	<lastBuildDate>Fri, 10 Apr 2015 22:28:52 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.1.1</generator>
	<item>
		<title>abbyputinski.com — Google Maps with a twist</title>
		<link>https://googledata.org/google-maps/abbyputinski-com-google-maps-with-a-twist/</link>
		<comments>https://googledata.org/google-maps/abbyputinski-com-google-maps-with-a-twist/#comments</comments>
		<pubDate>Fri, 04 Oct 2013 18:45:00 +0000</pubDate>
		<dc:creator><![CDATA[Monica Trean]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=56a25cc33cd8130446a8a2d56f2e5397</guid>
		<description><![CDATA[<i>We love the teamwork behind <a href="http://abbyputinski.com/">AbbyPutinski.com</a>, designed by San Francisco illustrator Abby Putinski, and developed by her husband Adam. In this guest blog post, Adam will walk us through how he worked with Abby to give the map a unique, illustrated look, as well as fun-to-use animations.</i><br /><i><br /></i> Abby is a designer and illustrator living in San Francisco. In building her site, Abby wanted to take users on a journey to discover and explore some of her favorite places in San Francisco, in a way that reflected her illustration style. Taking Abby&#8217;s design direction into account, I began building the site, working with the Google Maps API to make the visual experience come to life for visitors of the site. The app is powered by Ember.js, so the application template includes a helper to render a MapView. <a href="https://developers.google.com/maps/documentation/javascript/overlays?utm_source=welovemapsdevelopers&#38;utm_campaign=mdr-motw#CustomOverlays">Custom Overlays</a> are used to take users on a journey around San Francisco.<br /><br /><div>
<a href="http://2.bp.blogspot.com/--z9F1Gl8ZJk/Ukzw_d1fpHI/AAAAAAAADUs/EmucpLtyggE/s1600/Screen+Shot+2013-10-02+at+6.21.50+PM.png"><img border="0" height="132" src="http://2.bp.blogspot.com/--z9F1Gl8ZJk/Ukzw_d1fpHI/AAAAAAAADUs/EmucpLtyggE/s320/Screen+Shot+2013-10-02+at+6.21.50+PM.png" width="320"></a></div>
<br /><b>Designing in Reverse&#160;</b><br />
To make the map feel like an illustration, Abby used the <a href="http://gmaps-samples-v3.googlecode.com/svn/trunk/styledmaps/wizard/index.html?utm_source=welovemapsdevelopers&#38;utm_campaign=mdr-motw">Styled Maps Wizard</a> to play with colors of the map. By using very few colors and disabling most of the roads and landmarks, she was able to give the map a flat, simple look. After exporting the JSON from the Styled Maps Wizard, Abby worked with screenshots of the map to design the rest of the experience.<br /><br /><div>
<a href="http://abbyputinski.com/assets/img/landmark-chinatown.png"><img border="0" src="http://abbyputinski.com/assets/img/landmark-chinatown.png"></a>&#160;<a href="http://abbyputinski.com/assets/img/painted-ladies.png"><img border="0" src="http://abbyputinski.com/assets/img/painted-ladies.png"></a><a href="http://abbyputinski.com/assets/img/landmark-golden-gate-bridge.png"><img border="0" src="http://abbyputinski.com/assets/img/landmark-golden-gate-bridge.png"></a><a href="http://abbyputinski.com/assets/img/trolley.png"><img border="0" src="http://abbyputinski.com/assets/img/trolley.png"></a></div>
<div>
<i>Some of Abby&#8217;s favorite landmarks in San Francisco</i></div>
<br /><br /><div>
<div>
<img border="0" height="225" src="http://1.bp.blogspot.com/-s6WR_NysSHE/Uk3FfzI7_RI/AAAAAAAAAFw/tCJ9e_p4qws/s400/motw-chinatown.gif" width="400"></div>
<br /></div>
<div>
<i>The animated GIF in situ on the map as a custom overlay.</i></div>
<i><br /></i> <b>Defining a custom overlay&#160;</b><br />
To create a fullscreen overlay, the bounds are set to the Southwest and Northeast corners.<br /><br /><div>
<span></span></div>
<div>
<br /></div>
<b>Positioning the overlay on the map&#160;</b><br />
The MapView has two child views. The DOM element for a custom overlay actually needs to reside inside the markup generated by Google Maps, but the overlay is an Ember.View so the MapOverlayView is actually rendered as a sibling of the MapCanvas and then moved into the correct spot later.<br /><br /><span></span><br /><br /><b>Keep the overlay centered while panning&#160;</b><br />
The default behavior for a custom overlay is to re-calculate the styles when the map is panned, but to build an overlay that stays centered on the map, the overlay should only be drawn once and then pan with the map.<br /><br /><span></span><br /><div>
<span><br /></span></div>
<div>
<b>Creating the overlay&#160;</b><br />
Finally, once the overlay has been created and rendered, resolve a promise letting the application know the map is ready.<br /><br /><span></span><br /><br /><b>Final Thoughts&#160;</b><br />
This project was extremely fun and was successful due to the collaboration between design and development. The Google Maps API gave us the creative freedom to completely customize the map, while Custom Overlays really pulled the experience together.<br /><br /><i>Posted by Monica Tran, Google Maps API Marketing</i><br /><br /><i>Adam and Abby Putinski are a husband and wife design/dev team located in San Francisco. Learn more about their work at <a href="http://abbyputinski.com/">abbyputinski.com</a></i></div>
<div>
<br /></div>]]></description>
				<content:encoded><![CDATA[<i>We love the teamwork behind <a href="http://abbyputinski.com/">AbbyPutinski.com</a>, designed by San Francisco illustrator Abby Putinski, and developed by her husband Adam. In this guest blog post, Adam will walk us through how he worked with Abby to give the map a unique, illustrated look, as well as fun-to-use animations.</i><br />
<i><br />
</i> Abby is a designer and illustrator living in San Francisco. In building her site, Abby wanted to take users on a journey to discover and explore some of her favorite places in San Francisco, in a way that reflected her illustration style. Taking Abby’s design direction into account, I began building the site, working with the Google Maps API to make the visual experience come to life for visitors of the site. The app is powered by Ember.js, so the application template includes a helper to render a MapView. <a href="https://developers.google.com/maps/documentation/javascript/overlays?utm_source=welovemapsdevelopers&amp;utm_campaign=mdr-motw#CustomOverlays">Custom Overlays</a> are used to take users on a journey around San Francisco.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/--z9F1Gl8ZJk/Ukzw_d1fpHI/AAAAAAAADUs/EmucpLtyggE/s1600/Screen+Shot+2013-10-02+at+6.21.50+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="132" src="http://2.bp.blogspot.com/--z9F1Gl8ZJk/Ukzw_d1fpHI/AAAAAAAADUs/EmucpLtyggE/s320/Screen+Shot+2013-10-02+at+6.21.50+PM.png" width="320" /></a></div>
<br />
<b>Designing in Reverse&nbsp;</b><br />
To make the map feel like an illustration, Abby used the <a href="http://gmaps-samples-v3.googlecode.com/svn/trunk/styledmaps/wizard/index.html?utm_source=welovemapsdevelopers&amp;utm_campaign=mdr-motw">Styled Maps Wizard</a> to play with colors of the map. By using very few colors and disabling most of the roads and landmarks, she was able to give the map a flat, simple look. After exporting the JSON from the Styled Maps Wizard, Abby worked with screenshots of the map to design the rest of the experience.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://abbyputinski.com/assets/img/landmark-chinatown.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://abbyputinski.com/assets/img/landmark-chinatown.png" /></a>&nbsp;<a href="http://abbyputinski.com/assets/img/painted-ladies.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://abbyputinski.com/assets/img/painted-ladies.png" /></a><a href="http://abbyputinski.com/assets/img/landmark-golden-gate-bridge.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://abbyputinski.com/assets/img/landmark-golden-gate-bridge.png" /></a><a href="http://abbyputinski.com/assets/img/trolley.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://abbyputinski.com/assets/img/trolley.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<i>Some of Abby’s favorite landmarks in San Francisco</i></div>
<br />
<br />
<div style="text-align: center;">
<div class="separator" style="clear: both; text-align: center;">
<img border="0" height="225" src="http://1.bp.blogspot.com/-s6WR_NysSHE/Uk3FfzI7_RI/AAAAAAAAAFw/tCJ9e_p4qws/s400/motw-chinatown.gif" width="400" /></div>
<br /></div>
<div style="text-align: center;">
<i>The animated GIF in situ on the map as a custom overlay.</i></div>
<i><br />
</i> <b>Defining a custom overlay&nbsp;</b><br />
To create a fullscreen overlay, the bounds are set to the Southwest and Northeast corners.<br />
<br />
<div style="text-align: left;">
<span style="background-color: yellow;"><script src="https://gist.github.com/ManoMarks/6810934.js"></script></span></div>
<div>
<br /></div>
<b>Positioning the overlay on the map&nbsp;</b><br />
The MapView has two child views. The DOM element for a custom overlay actually needs to reside inside the markup generated by Google Maps, but the overlay is an Ember.View so the MapOverlayView is actually rendered as a sibling of the MapCanvas and then moved into the correct spot later.<br />
<br />
<span style="background-color: yellow;"><script src="https://gist.github.com/ManoMarks/6810963.js"></script></span><br />
<br />
<b>Keep the overlay centered while panning&nbsp;</b><br />
The default behavior for a custom overlay is to re-calculate the styles when the map is panned, but to build an overlay that stays centered on the map, the overlay should only be drawn once and then pan with the map.<br />
<br />
<span style="background-color: yellow;"><script src="https://gist.github.com/ManoMarks/6810984.js"></script></span><br />
<div>
<span style="background-color: yellow;"><br />
</span></div>
<div>
<b>Creating the overlay&nbsp;</b><br />
Finally, once the overlay has been created and rendered, resolve a promise letting the application know the map is ready.<br />
<br />
<span style="background-color: yellow;"><script src="https://gist.github.com/ManoMarks/6811008.js"></script></span><br />
<br />
<b>Final Thoughts&nbsp;</b><br />
This project was extremely fun and was successful due to the collaboration between design and development. The Google Maps API gave us the creative freedom to completely customize the map, while Custom Overlays really pulled the experience together.<br />
<br />
<i>Posted by Monica Tran, Google Maps API Marketing</i><br />
<br />
<i>Adam and Abby Putinski are a husband and wife design/dev team located in San Francisco. Learn more about their work at <a href="http://abbyputinski.com/">abbyputinski.com</a></i></div>
<div>
<br /></div>
]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/abbyputinski-com-google-maps-with-a-twist/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Sun Surveyor shines with Street View</title>
		<link>https://googledata.org/google-maps/sun-surveyor-shines-with-street-view/</link>
		<comments>https://googledata.org/google-maps/sun-surveyor-shines-with-street-view/#comments</comments>
		<pubDate>Mon, 16 Sep 2013 18:31:00 +0000</pubDate>
		<dc:creator><![CDATA[Monica Trean]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=4de2f6e5b28d493e691a66c0747059aa</guid>
		<description><![CDATA[<i>In this guest blog post, we hear from Adam Ratana, a hobbyist photographer and software engineer by day, and developer of the <a href="https://play.google.com/store/apps/details?id=com.ratana.sunsurveyor">Android</a> and <a href="https://itunes.apple.com/us/app/sun-surveyor/id525176875?ls=1&#38;mt=8">iOS</a> Sun Surveyor apps by night. In this tutorial, Adam talks about his creative implementation of custom polylines on Street View panoramas in the Google Maps SDK for iOS.</i><br /><div>
<br /></div>
<a href="http://1.bp.blogspot.com/-s6LQ5V3oku0/UjXrQDR61yI/AAAAAAAADRM/Jl3kgFWWiZ4/s1600/sun_surveyor_icon.png"><img border="0" height="100" src="http://1.bp.blogspot.com/-s6LQ5V3oku0/UjXrQDR61yI/AAAAAAAADRM/Jl3kgFWWiZ4/s200/sun_surveyor_icon.png" width="100"></a>&#160;<span>As a photography enthusiast, I&#8217;m always looking to capture images at the </span><a href="http://en.wikipedia.org/wiki/Golden_hour_(photography)">magic hour</a><span>. My goal when creating&#160;<span><a href="http://www.sunsurveyor.com/">Sun Surveyor</a></span>&#160;was to give users an immersive way of visualizing the location of the sun and the moon, making it easy for anyone to figure out when the natural lighting is just right for the perfect shot.</span><br /><br />
When I set out to build Sun Surveyor, I knew I wanted to give users an easy way of visualizing the location of the sun and the moon. Sun Surveyor has an augmented reality (AR) feature, which overlays sun and moon paths on top of the device camera&#8217;s view. This is useful for understanding how light will change over time at a particular location. While I also created a Map View to show the paths on a Google Map for remote locations, it was not as intuitive as augmented reality.<br /><br /><div>
<a href="http://1.bp.blogspot.com/-Y4ohzJsduyc/UjXrK09iOOI/AAAAAAAADQA/oWqjl7HYzVw/s1600/app_screen_2_ar.png"><img border="0" height="400" src="http://1.bp.blogspot.com/-Y4ohzJsduyc/UjXrK09iOOI/AAAAAAAADQA/oWqjl7HYzVw/s400/app_screen_2_ar.png" width="232"></a><a href="http://4.bp.blogspot.com/-NzMeanPLNJU/UjXrLXHfTFI/AAAAAAAADQM/4F4Tln6bi9I/s1600/app_screen_1_map.png"><img border="0" height="400" src="http://4.bp.blogspot.com/-NzMeanPLNJU/UjXrLXHfTFI/AAAAAAAADQM/4F4Tln6bi9I/s400/app_screen_1_map.png" width="232"></a></div>
<div>
<i>Visualizing the sun and moon paths in augmented reality and map views</i></div>
<br />
When Street View launched in the <a href="https://developers.google.com/maps/documentation/ios/?utm_source=welovemapsdevelopersutm_campaign=mdr-motw">Google Maps SDK for iOS</a> in v1.4.0 (July, 2013), I couldn&#8217;t wait to visualize the sun and moon paths within an interactive panorama.  Street View panoramas bridge the gap between Sun Surveyor&#8217;s Map View and AR experiences by giving users an augmented reality experience, wherever they want to go.<br /><br /><div>
<a href="http://4.bp.blogspot.com/-ZDdS_lbT5KY/UjXrK_DqazI/AAAAAAAADQI/1jEphBO3LYY/s1600/app_screen_3_panorama.png"><img border="0" height="400" src="http://4.bp.blogspot.com/-ZDdS_lbT5KY/UjXrK_DqazI/AAAAAAAADQI/1jEphBO3LYY/s400/app_screen_3_panorama.png" width="232"></a></div>
<div>
<i>Sun and moon paths with Street View panoramas</i></div>
<br /><b>Implementing a sun path Overlay on Street View</b><br />
I took a creative approach to working with the&#160;<a href="https://developers.google.com/maps/documentation/ios/?utm_source=welovemapsdevelopersutm_campaign=mdr-motw">Google Maps SDK for iOs</a>.&#160; While polylines can be implemented in Map View, this isn&#8217;t yet possible in a <a href="https://developers.google.com/maps/documentation/ios/streetview?utm_source=welovemapsdevelopers&#38;utm_campaign=mdr-motw">Street View</a> panorama. To display paths and other items that move with the Street View panorama, I needed to:<br /><ol><li>Create an overlay on top of the panorama upon which to draw the items</li>
<li>Synchronize the positions of the overlay items with the panorama as it moves</li>
<li>Determine which data are visible and where on the screen to draw them</li>
</ol>
For this tutorial, I have provided a <b><a href="https://github.com/ratana/streetview-panorama-demo">sample project</a> </b>that will get anyone started doing the same.  Let&#8217;s walk through the steps.<br /><br /><b>I. Creating an Overlay</b><br /><br />
In our main <code>UIViewController</code>, we add a subclass of <code>UIView</code> for the overlay, make its background color transparent, and place the <code>GMSPanoramaView</code> below it in the view hierarchy.<br /><br /><br /><b>Representing Overlay Items</b><br />
We represent the overlay items with a protocol having two methods: <code>updateWithPanoramaView</code> and draw. The <code>updateWithPanoramaView</code> method updates an item&#8217;s screen location geometry, while draw draws it to the current graphics context.<br /><div dir="ltr">
</div>
<div>
<a href="http://1.bp.blogspot.com/-bjom2OM-Rgo/UjXrO3tIK6I/AAAAAAAADRg/azoMY2iF0fY/s1600/overlay_items_list.png"><img border="0" src="http://1.bp.blogspot.com/-bjom2OM-Rgo/UjXrO3tIK6I/AAAAAAAADRg/azoMY2iF0fY/s1600/overlay_items_list.png"></a></div>
<br />
We store all items to be drawn in a collection, update their positions based on the panorama position, and draw the collection in our view&#8217;s standard <code>drawRect</code> method.<br /><br />
If we want to make sure these items are drawn in a certain order that might change based on the data, we can add z-indexes to them and then sort the collection by z-index after we update them and before drawing.<br /><br /><b>II. Syncing the Overlay with the Panorama</b><br />
To make sure this overlay view stays updated as the panorama moves beneath it, we can update the view&#8217;s data in an implementation of <code>GMSPanoramaViewDelegate&#8217;s</code> <code><a href="https://developers.google.com/maps/documentation/ios/reference/protocol_g_m_s_panorama_view_delegate-p#a312231b5bb75f57e7929c8c4ef92a9cc?utm_source=welovemapsdevelopers&#38;utm_campaign=mdr-motw">didMoveCamera</a></code> method.  We can use a <code><a href="https://developer.apple.com/library/ios/documentation/QuartzCore/Reference/CADisplayLink_ClassRef/Reference/Reference.html?utm_source=welovemapsdevelopers&#38;utm_campaign=mdr-motw">CADisplayLink</a></code> to ensure the overlay view is redrawn at regular intervals, and use a flag to make sure it is only redrawn when necessary.<br /><br /><br /><b>Optimization</b><br /><code>CoreGraphics</code> can be a bottleneck. <code>[UIBezierPath strokePath]</code> and <code>[NSString drawAtPoint]</code> are expensive as you can see by profiling with Instruments.  For performance intensive applications, an alternative is to use OpenGL.  Avoiding overdraw is always a good idea, so the first optimization, if needed, is to carefully examine what is being drawn to the screen, and draw only what is necessary.<br /><br /><b>III. Mapping data to the panorama view</b><br />
The <code><a href="https://developers.google.com/maps/documentation/ios/reference/interface_g_m_s_projection#a8822e27ca2557b7f2f484781f956ff5c?utm_source=welovemapsdevelopers&#38;utm_campaign=mdr-motw">GMSProjection</a></code> class has a <code>pointForCoordinate</code> method that returns the screen pixel location for a coordinate on the Map. This is useful for overlaying elements on top of a <code>GMSMapView</code>, and is used in the Sun Surveyor Map View to draw text related to sun and moon paths on top of the Map.<br /><br /><code>GMSPanoramaView</code> has a similar method, <code>pointForOrientation</code>.  This method allows us to query the panorama for a screen pixel location given a <code>GMSOrientation</code> (bearing and pitch tuple) relative to the panorama location, where the camera is stationed, at ground level.  This is useful to make sure an item we overlay onto the view remains in the same location relative to the scene, even as the camera moves and the view shifts.<br /><br />
Because the camera has a Field of View that determines what is visible on the screen, some orientations are not visible (such as behind the camera position).  <code>pointForOrientation</code> helpfully returns <code>NAN</code> (not a number) for such orientations, so we know the given orientation is not visible.<br /><br />
With sun path data already expressed in terms of orientation relative to the ground level of the viewer, drawing corresponding paths with screen pixel locations is easy.  We map our data with <code>pointForOrientation</code>, and draw what is visible by checking the result for <code>NAN</code>.<br /><br /><br /><br />
The sample project uses a panorama of Sydney, Australia, looking west, with a sun path for 12/20/2013.<br /><br /><div>
<a href="http://2.bp.blogspot.com/-VPCRjbawCxI/UjXrMTw3KEI/AAAAAAAADQk/l7R7dVZ34ZI/s1600/fov_sydney_90.png"><img border="0" height="400" src="http://2.bp.blogspot.com/-VPCRjbawCxI/UjXrMTw3KEI/AAAAAAAADQk/l7R7dVZ34ZI/s400/fov_sydney_90.png" width="225"></a></div>
<div>
<br /></div>
<b>Bonus: altering the Field of View</b><br />
Version 1.4.1 of the SDK added support for changing the <code>GMSPanoramaCamera&#8217;s</code> field of view (FOV). The field of view determines how much of the scene is visible on a device screen, as well as how much distortion around the edges of the view is present.  Smaller values for FOV are the equivalent of having a telephoto lens on a real camera: it brings distant objects closer.<br /><br /><br /><div>
<a href="http://4.bp.blogspot.com/-W4F8jEsmwyE/UjXutqmcBcI/AAAAAAAADRo/weTYlKIMgi4/s1600/ss_post_screenshots.jpg"><img border="0" height="240" src="http://4.bp.blogspot.com/-W4F8jEsmwyE/UjXutqmcBcI/AAAAAAAADRo/weTYlKIMgi4/s400/ss_post_screenshots.jpg" width="400"></a></div>
<div>
<i>Left: FOV of 60 degrees. Middle: 90 degrees (default). Right: 130 degrees.</i></div>
<br /><br /><b>Street View Panoramas are awesome and easy</b><br />
The Street View panorama viewer in the Google Maps SDK for iOS is an example of a great API. The <code>GMSPanoramaView</code> class is simple to understand and use. In the course of a weekend, I was able to deliver a fun, interactive and highly requested feature to Sun Surveyor&#8217;s iOS users. I can&#8217;t wait to see what people are able to do with this new Street View Panorama feature in my app, and I look forward to seeing all the other implementations that others develop!<br /><br /><div>
<a href="http://2.bp.blogspot.com/-unIn24DtDoA/UjXrNhLaLWI/AAAAAAAADQ8/qgGhPBBbJu0/s1600/interesting_3_stonehenge.png"><img border="0" height="291" src="http://2.bp.blogspot.com/-unIn24DtDoA/UjXrNhLaLWI/AAAAAAAADQ8/qgGhPBBbJu0/s400/interesting_3_stonehenge.png" width="400"></a></div>
<div>
<i>Stonehenge, as seen from a Street View panorama in Sun Surveyor</i></div>
<br /><br />
Posted by Monica Tran, Google Maps API<br /><br /><a href="http://3.bp.blogspot.com/-ec9q-f8X41s/UjZzWhWnMJI/AAAAAAAADR4/Spd8vS8bbHQ/s1600/adam_wrct.jpg"><img border="0" height="200" src="http://3.bp.blogspot.com/-ec9q-f8X41s/UjZzWhWnMJI/AAAAAAAADR4/Spd8vS8bbHQ/s200/adam_wrct.jpg" width="200"></a><i><a href="http://www.sunsurveyor.com/">Sun Surveyor</a> visualizes the sun and moon in a variety of ways for photographers, filmmakers, solar industry professionals, architects, homebuyers, gardeners, and anyone needing to predict or understand the movement of the sun and moon.</i><br /><br /><i><a href="https://plus.google.com/116424031489192232480">Adam Ratana</a> is a Carnegie Mellon University graduate living in, and loving, Pittsburgh, PA.  He produces dance music as a member of Pittsburgh Track Authority, enjoys photography, traveling with his wife, and writing fun software in his free time.  Adam also enjoys attending the <a href="http://cocoaheads.org/us/PittsburghPennsylvania/">Pittsburgh Cocoaheads</a> chapter meetings.</i><br /><i><br /></i>]]></description>
				<content:encoded><![CDATA[<i>In this guest blog post, we hear from Adam Ratana, a hobbyist photographer and software engineer by day, and developer of the <a href="https://play.google.com/store/apps/details?id=com.ratana.sunsurveyor">Android</a> and <a href="https://itunes.apple.com/us/app/sun-surveyor/id525176875?ls=1&amp;mt=8">iOS</a> Sun Surveyor apps by night. In this tutorial, Adam talks about his creative implementation of custom polylines on Street View panoramas in the Google Maps SDK for iOS.</i><br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<a href="http://1.bp.blogspot.com/-s6LQ5V3oku0/UjXrQDR61yI/AAAAAAAADRM/Jl3kgFWWiZ4/s1600/sun_surveyor_icon.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"><img border="0" height="100" src="http://1.bp.blogspot.com/-s6LQ5V3oku0/UjXrQDR61yI/AAAAAAAADRM/Jl3kgFWWiZ4/s200/sun_surveyor_icon.png" width="100" /></a>&nbsp;<span style="text-align: center;">As a photography enthusiast, I’m always looking to capture images at the </span><a href="http://en.wikipedia.org/wiki/Golden_hour_(photography)" style="text-align: center;">magic hour</a><span style="text-align: center;">. My goal when creating&nbsp;<span style="text-align: start;"><a href="http://www.sunsurveyor.com/">Sun Surveyor</a></span>&nbsp;was to give users an immersive way of visualizing the location of the sun and the moon, making it easy for anyone to figure out when the natural lighting is just right for the perfect shot.</span><br />
<br />
When I set out to build Sun Surveyor, I knew I wanted to give users an easy way of visualizing the location of the sun and the moon. Sun Surveyor has an augmented reality (AR) feature, which overlays sun and moon paths on top of the device camera’s view. This is useful for understanding how light will change over time at a particular location. While I also created a Map View to show the paths on a Google Map for remote locations, it was not as intuitive as augmented reality.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-Y4ohzJsduyc/UjXrK09iOOI/AAAAAAAADQA/oWqjl7HYzVw/s1600/app_screen_2_ar.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="http://1.bp.blogspot.com/-Y4ohzJsduyc/UjXrK09iOOI/AAAAAAAADQA/oWqjl7HYzVw/s400/app_screen_2_ar.png" width="232" /></a><a href="http://4.bp.blogspot.com/-NzMeanPLNJU/UjXrLXHfTFI/AAAAAAAADQM/4F4Tln6bi9I/s1600/app_screen_1_map.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="http://4.bp.blogspot.com/-NzMeanPLNJU/UjXrLXHfTFI/AAAAAAAADQM/4F4Tln6bi9I/s400/app_screen_1_map.png" width="232" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<i>Visualizing the sun and moon paths in augmented reality and map views</i></div>
<br />
When Street View launched in the <a href="https://developers.google.com/maps/documentation/ios/?utm_source=welovemapsdevelopersutm_campaign=mdr-motw">Google Maps SDK for iOS</a> in v1.4.0 (July, 2013), I couldn’t wait to visualize the sun and moon paths within an interactive panorama.  Street View panoramas bridge the gap between Sun Surveyor’s Map View and AR experiences by giving users an augmented reality experience, wherever they want to go.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-ZDdS_lbT5KY/UjXrK_DqazI/AAAAAAAADQI/1jEphBO3LYY/s1600/app_screen_3_panorama.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="http://4.bp.blogspot.com/-ZDdS_lbT5KY/UjXrK_DqazI/AAAAAAAADQI/1jEphBO3LYY/s400/app_screen_3_panorama.png" width="232" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<i>Sun and moon paths with Street View panoramas</i></div>
<br />
<b>Implementing a sun path Overlay on Street View</b><br />
I took a creative approach to working with the&nbsp;<a href="https://developers.google.com/maps/documentation/ios/?utm_source=welovemapsdevelopersutm_campaign=mdr-motw">Google Maps SDK for iOs</a>.&nbsp; While polylines can be implemented in Map View, this isn’t yet possible in a <a href="https://developers.google.com/maps/documentation/ios/streetview?utm_source=welovemapsdevelopers&amp;utm_campaign=mdr-motw">Street View</a> panorama. To display paths and other items that move with the Street View panorama, I needed to:<br />
<ol>
<li>Create an overlay on top of the panorama upon which to draw the items</li>
<li>Synchronize the positions of the overlay items with the panorama as it moves</li>
<li>Determine which data are visible and where on the screen to draw them</li>
</ol>
For this tutorial, I have provided a <b><a href="https://github.com/ratana/streetview-panorama-demo">sample project</a> </b>that will get anyone started doing the same.  Let’s walk through the steps.<br />
<br />
<b>I. Creating an Overlay</b><br />
<br />
In our main <code>UIViewController</code>, we add a subclass of <code>UIView</code> for the overlay, make its background color transparent, and place the <code>GMSPanoramaView</code> below it in the view hierarchy.<br />
<br />
<script src="https://gist.github.com/broady/e53e9ec759e9922b0897.js?file=1.mm"></script><br />
<b>Representing Overlay Items</b><br />
We represent the overlay items with a protocol having two methods: <code>updateWithPanoramaView</code> and draw. The <code>updateWithPanoramaView</code> method updates an item’s screen location geometry, while draw draws it to the current graphics context.<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<script src="https://gist.github.com/broady/e53e9ec759e9922b0897.js?file=2.mm"></script></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-bjom2OM-Rgo/UjXrO3tIK6I/AAAAAAAADRg/azoMY2iF0fY/s1600/overlay_items_list.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-bjom2OM-Rgo/UjXrO3tIK6I/AAAAAAAADRg/azoMY2iF0fY/s1600/overlay_items_list.png" /></a></div>
<br />
We store all items to be drawn in a collection, update their positions based on the panorama position, and draw the collection in our view’s standard <code>drawRect</code> method.<br />
<script src="https://gist.github.com/broady/e53e9ec759e9922b0897.js?file=3.mm"></script><br />
If we want to make sure these items are drawn in a certain order that might change based on the data, we can add z-indexes to them and then sort the collection by z-index after we update them and before drawing.<br />
<br />
<b>II. Syncing the Overlay with the Panorama</b><br />
To make sure this overlay view stays updated as the panorama moves beneath it, we can update the view’s data in an implementation of <code>GMSPanoramaViewDelegate’s</code> <code><a href="https://developers.google.com/maps/documentation/ios/reference/protocol_g_m_s_panorama_view_delegate-p#a312231b5bb75f57e7929c8c4ef92a9cc?utm_source=welovemapsdevelopers&amp;utm_campaign=mdr-motw">didMoveCamera</a></code> method.  We can use a <code><a href="https://developer.apple.com/library/ios/documentation/QuartzCore/Reference/CADisplayLink_ClassRef/Reference/Reference.html?utm_source=welovemapsdevelopers&amp;utm_campaign=mdr-motw">CADisplayLink</a></code> to ensure the overlay view is redrawn at regular intervals, and use a flag to make sure it is only redrawn when necessary.<br />
<script src="https://gist.github.com/broady/e53e9ec759e9922b0897.js?file=4.mm"></script><br />
<script src="https://gist.github.com/broady/e53e9ec759e9922b0897.js?file=5.mm"></script><br />
<b>Optimization</b><br />
<code>CoreGraphics</code> can be a bottleneck. <code>[UIBezierPath strokePath]</code> and <code>[NSString drawAtPoint]</code> are expensive as you can see by profiling with Instruments.  For performance intensive applications, an alternative is to use OpenGL.  Avoiding overdraw is always a good idea, so the first optimization, if needed, is to carefully examine what is being drawn to the screen, and draw only what is necessary.<br />
<br />
<b>III. Mapping data to the panorama view</b><br />
The <code><a href="https://developers.google.com/maps/documentation/ios/reference/interface_g_m_s_projection#a8822e27ca2557b7f2f484781f956ff5c?utm_source=welovemapsdevelopers&amp;utm_campaign=mdr-motw">GMSProjection</a></code> class has a <code>pointForCoordinate</code> method that returns the screen pixel location for a coordinate on the Map. This is useful for overlaying elements on top of a <code>GMSMapView</code>, and is used in the Sun Surveyor Map View to draw text related to sun and moon paths on top of the Map.<br />
<br />
<code>GMSPanoramaView</code> has a similar method, <code>pointForOrientation</code>.  This method allows us to query the panorama for a screen pixel location given a <code>GMSOrientation</code> (bearing and pitch tuple) relative to the panorama location, where the camera is stationed, at ground level.  This is useful to make sure an item we overlay onto the view remains in the same location relative to the scene, even as the camera moves and the view shifts.<br />
<br />
Because the camera has a Field of View that determines what is visible on the screen, some orientations are not visible (such as behind the camera position).  <code>pointForOrientation</code> helpfully returns <code>NAN</code> (not a number) for such orientations, so we know the given orientation is not visible.<br />
<br />
With sun path data already expressed in terms of orientation relative to the ground level of the viewer, drawing corresponding paths with screen pixel locations is easy.  We map our data with <code>pointForOrientation</code>, and draw what is visible by checking the result for <code>NAN</code>.<br />
<script src="https://gist.github.com/broady/e53e9ec759e9922b0897.js?file=6.mm"></script><br />
<br />
<script src="https://gist.github.com/broady/e53e9ec759e9922b0897.js?file=7.mm"></script><br />
The sample project uses a panorama of Sydney, Australia, looking west, with a sun path for 12/20/2013.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-VPCRjbawCxI/UjXrMTw3KEI/AAAAAAAADQk/l7R7dVZ34ZI/s1600/fov_sydney_90.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="http://2.bp.blogspot.com/-VPCRjbawCxI/UjXrMTw3KEI/AAAAAAAADQk/l7R7dVZ34ZI/s400/fov_sydney_90.png" width="225" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<b>Bonus: altering the Field of View</b><br />
Version 1.4.1 of the SDK added support for changing the <code>GMSPanoramaCamera’s</code> field of view (FOV). The field of view determines how much of the scene is visible on a device screen, as well as how much distortion around the edges of the view is present.  Smaller values for FOV are the equivalent of having a telephoto lens on a real camera: it brings distant objects closer.<br />
<br />
<script src="https://gist.github.com/broady/e53e9ec759e9922b0897.js?file=8.mm"></script><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-W4F8jEsmwyE/UjXutqmcBcI/AAAAAAAADRo/weTYlKIMgi4/s1600/ss_post_screenshots.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://4.bp.blogspot.com/-W4F8jEsmwyE/UjXutqmcBcI/AAAAAAAADRo/weTYlKIMgi4/s400/ss_post_screenshots.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<i>Left: FOV of 60 degrees. Middle: 90 degrees (default). Right: 130 degrees.</i></div>
<br />
<br />
<b>Street View Panoramas are awesome and easy</b><br />
The Street View panorama viewer in the Google Maps SDK for iOS is an example of a great API. The <code>GMSPanoramaView</code> class is simple to understand and use. In the course of a weekend, I was able to deliver a fun, interactive and highly requested feature to Sun Surveyor’s iOS users. I can’t wait to see what people are able to do with this new Street View Panorama feature in my app, and I look forward to seeing all the other implementations that others develop!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-unIn24DtDoA/UjXrNhLaLWI/AAAAAAAADQ8/qgGhPBBbJu0/s1600/interesting_3_stonehenge.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="291" src="http://2.bp.blogspot.com/-unIn24DtDoA/UjXrNhLaLWI/AAAAAAAADQ8/qgGhPBBbJu0/s400/interesting_3_stonehenge.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<i>Stonehenge, as seen from a Street View panorama in Sun Surveyor</i></div>
<br />
<br />
Posted by Monica Tran, Google Maps API<br />
<br />
<a href="http://3.bp.blogspot.com/-ec9q-f8X41s/UjZzWhWnMJI/AAAAAAAADR4/Spd8vS8bbHQ/s1600/adam_wrct.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"><img border="0" height="200" src="http://3.bp.blogspot.com/-ec9q-f8X41s/UjZzWhWnMJI/AAAAAAAADR4/Spd8vS8bbHQ/s200/adam_wrct.jpg" width="200" /></a><i><a href="http://www.sunsurveyor.com/">Sun Surveyor</a> visualizes the sun and moon in a variety of ways for photographers, filmmakers, solar industry professionals, architects, homebuyers, gardeners, and anyone needing to predict or understand the movement of the sun and moon.</i><br />
<br />
<i style="text-align: center;"><a href="https://plus.google.com/116424031489192232480">Adam Ratana</a> is a Carnegie Mellon University graduate living in, and loving, Pittsburgh, PA.  He produces dance music as a member of Pittsburgh Track Authority, enjoys photography, traveling with his wife, and writing fun software in his free time.  Adam also enjoys attending the <a href="http://cocoaheads.org/us/PittsburghPennsylvania/">Pittsburgh Cocoaheads</a> chapter meetings.</i><br />
<i><br />
</i> ]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/sun-surveyor-shines-with-street-view/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Map of the Week: Orbitz</title>
		<link>https://googledata.org/google-maps/map-of-the-week-orbitz/</link>
		<comments>https://googledata.org/google-maps/map-of-the-week-orbitz/#comments</comments>
		<pubDate>Fri, 23 Aug 2013 18:00:00 +0000</pubDate>
		<dc:creator><![CDATA[Monica Trean]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=cf608813e1d02d3866b9055c071cfa59</guid>
		<description><![CDATA[<i>In today&#8217;s guest blog post, we hear from Monika Szymanski and Mike Kelley, of Orbitz' Android engineering team, who recently migrated from version 1 to version 2 of the&#160;<a href="https://developers.google.com/maps/documentation/android/?utm_source=welovemapsdevelopers&#38;utm_campaign=mdr-motw">Google Maps Android API</a>.&#160;</i><br /><br /><div>
<a href="http://4.bp.blogspot.com/fJJF-vHAKPeqWA_A0V11nNWWqeoQVYpOdOzZu-xgxRsxtkMVkLMzjkrtvUZTDg9650ul=w300-rw"><img border="0" height="200" src="http://4.bp.blogspot.com/fJJF-vHAKPeqWA_A0V11nNWWqeoQVYpOdOzZu-xgxRsxtkMVkLMzjkrtvUZTDg9650ul=w300-rw" width="200"></a></div>
<b>About Orbitz</b><br />
Nearly 30% of Orbitz.com hotel bookings are now made via mobile devices, fueled in part by the growth of the Android platform. The recently released 3rd-generation update of the <a href="https://play.google.com/store/apps/details?id=com.orbitz">Orbitz - Flights, Hotels, Cars</a> app for Android brings major speed and ease of use improvements along with the latest Android UI design patterns to the app. The&#160;<a href="https://developers.google.com/maps/documentation/android/?utm_source=welovemapsdevelopers&#38;utm_campaign=mdr-motw">Google Maps Android API v2</a>&#160;is also integrated into the hotel search experience. Read on to find out how we did it, with tips and sample code along the way.<br /><br /><b>Migrating&#160;</b><b>from v1 to v2 of the</b><b>&#160;Google Maps Android API&#160;</b><br />
While users of the Orbitz.com Android app will notice some changes to the app&#8217;s user interface for maps, the changes to our code are more than skin deep. New classes offered in v2 of the Google Maps Android API like <a href="https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/MapFragment?utm_source=welovemapsdevelopers&#38;utm_campaign=mdr-motw">MapFragment</a> and <a href="https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/SupportMapFragment?utm_source=welovemapsdevelopers&#38;utm_campaign=mdr-motw">SupportMapFragment</a>, the transition from ItemizedOverlays to <a href="https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/model/Marker?utm_source=welovemapsdevelopers&#38;utm_campaign=mdr-motw">Markers</a>, and the addition of a well-supported info window pattern have made including a Google Map in an Android app much easier.<br /><br /><table align="center" cellpadding="0" cellspacing="0"><tbody><tr><td><a href="http://4.bp.blogspot.com/-eBGzFdcG9qA/Uha7DWXxv0I/AAAAAAAADLU/K6bYGz0o7pw/s1600/3131d611-10c1-42f5-a9f9-ff436bc31c7c+copy.png"><img border="0" height="377" src="http://4.bp.blogspot.com/-eBGzFdcG9qA/Uha7DWXxv0I/AAAAAAAADLU/K6bYGz0o7pw/s640/3131d611-10c1-42f5-a9f9-ff436bc31c7c+copy.png" width="640"></a></td></tr><tr><td>Say hello to the 3rd generation of&#160;Orbitz - Flights, Hotels, Cars app, using the Google Maps Android API v2</td></tr></tbody></table><b><br /></b> <b>Featuring Fragments&#160;</b><br />
Prior to the introduction of&#160;<a href="https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/MapFragment?utm_source=welovemapsdevelopers&#38;utm_campaign=mdr-motw">MapFragment</a>&#160;(and&#160;<a href="https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/SupportMapFragment?utm_source=welovemapsdevelopers&#38;utm_campaign=mdr-motw">SupportMapFragment</a>)&#160; in v2, we had to write a lot of code to manually show/hide the map view in our app. Only one instance of MapView could be created per activity, so we had to be overly clever about persisting that instance in our Activity. Lack of proper Fragment support was a common <a href="http://code.google.com/p/android/issues/detail?id=15347">pain point</a> for developers integrating v1 of the Google Maps Android API in their application.<br /><br />
When Fragment support was added in v2, we essentially rewrote our map code to take advantage of the new features of MapFragment. Let&#8217;s start by taking a look at our hotel results Activity layout:<br /><br />You&#8217;ll notice that we&#8217;re not including the actual fragment in the layout - we add the Fragment at runtime, because we don&#8217;t want to pay the cost of the fragment transaction and add all the markers on the map, unless the user requests it.<br /><br />
You&#8217;ll also notice a bit of a hack at the bottom of the layout. In testing, we found that the MapFragment would leave a black box artifact on the screen on certain devices when the user opened our sliding menu navigation. Adding a simple FrameLayout &#8220;above&#8221; the map seems to fix the problem.<br /><br />
Extending&#160;<a href="https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/SupportMapFragment?utm_source=welovemapsdevelopers&#38;utm_campaign=mdr-motw">SupportMapFragment</a>&#160;makes it much easier to separate the map display logic from our Activity and list fragment. Our SupportMapFragment (and its inner classes) is responsible for:<br /><ul><li>Adding markers representing each available hotel&#160;</li>
<li>Customizing the GoogleMap UI options&#160;</li>
<li>Centering and animating the map to show the added markers&#160;</li>
<li>Showing an info window when a marker is clicked&#160;</li>
<li>Launching an Intent to display more details when an info window is clicked&#160;</li>
</ul>
Next up, we&#8217;ll talk about how we add markers to the map and keep memory usage down.<br /><br /><b>Managing Markers&#160;</b><br />
One of the challenges in migrating from v1 to v2 of the Google Maps Android API was figuring out the best way to know which hotel&#8217;s info to display when a marker is tapped. To solve this, we place each &#60;Marker, Hotel&#62; pair in a HashMap when adding the markers to the Google Map. Later, we can use this HashMap to look up a marker's corresponding hotel info.<br /><br />
The code snippets below illustrate how we do it.<br /><br /><br /><div>
This HashMap allows us to look up the selected hotel in our InfoWindowAdapter, enabling us to display more information about it.</div>
<br /><br /><div>
We place quite a few markers on the map for hotel results and each marker can have a different custom image. It's really easy to run out of memory and we were getting quite a few OutOfMemoryExceptions early in development. To manage memory more effectively, we made sure we didn't create a new new Bitmap and BitmapDescriptor for every marker placed on the map. We also ensured that the resources were recycled after we were done with them.</div>
<br /><br /><div>
When the user taps a marker, we want to show more information; that&#8217;s where info windows come in handy.&#160;</div>
<div>
<br /></div>
<div>
<b>Introducing Info Windows&#160;</b></div>
<div>
Aside from simply viewing the location of all available hotels on a map, users are typically interested in the name and price of the hotel. The architecture for implementing this information window changed considerably from version 1 to version 2 of the Google Maps Android API.&#160;</div>
<div>
<br /></div>
<div>
<div>
<table align="center" cellpadding="0" cellspacing="0"><tbody><tr><td><a href="http://3.bp.blogspot.com/-7B24VuTNgOI/Uha2xDs6_6I/AAAAAAAADLA/5N9yuMh6oJs/s1600/orbitz-old.png"><img border="0" height="320" src="http://3.bp.blogspot.com/-7B24VuTNgOI/Uha2xDs6_6I/AAAAAAAADLA/5N9yuMh6oJs/s320/orbitz-old.png" width="207"></a></td></tr><tr><td>Before: Info windows in the Google Maps Android API v1</td></tr></tbody></table></div>
</div>
<div>
When using v1 of the Google Maps Android API, our app displayed more detailed hotel information in a custom info view when the user tapped on a hotel marker. That custom view displayed the hotel name and price, and triggered a custom animation when the view was added to the screen. This animation made it appear that the view was growing from inside the pin on the map.</div>
<div>
<br /></div>
<div>
We achieved this effect by setting the LayoutParams to MapView.LayoutParams.BOTTOM_CENTER and MapView.LayoutParams.MODE_MAP, which centered the bottom of the custom view on top of the tapped hotel marker.</div>
<div>
<br /></div>
<div>
With the introduction of the Google Maps Android API v2, MapView.LayoutParams.MODE_MAP was removed, so we explored alternative treatments to show the hotel information when the user clicks on a result. For our purposes, the best alternative was to use the new info window interface.&#160;</div>
<div>
<br /></div>
<div>
<table align="center" cellpadding="0" cellspacing="0"><tbody><tr><td><a href="http://3.bp.blogspot.com/-oQalTpWe-MY/Uha3KzfJvsI/AAAAAAAADLI/8pbJKDN__vU/s1600/orbitz-new.png"><img border="0" height="320" src="http://3.bp.blogspot.com/-oQalTpWe-MY/Uha3KzfJvsI/AAAAAAAADLI/8pbJKDN__vU/s320/orbitz-new.png" width="191"></a></td></tr><tr><td>After: Info windows in the Google Maps Android API v2</td></tr></tbody></table></div>
<div>
Creating an <a href="https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/GoogleMap.InfoWindowAdapter?utm_source=welovemapsdevelopers&#38;utm_campaign=mdr-motw">InfoWindowAdapter</a> is pretty straightforward. The API provides two ways to populate the info window; either by supplying the contents of the info window (shown in the default window stylec) or creating a full View. Because we wanted to have a custom window background, loaded from a 9-patch, we opted to build a complete View for the info window by overriding the getInfoContents() method to return null, and by returning a custom View from getInfoWindow().</div>
<div>
<br /></div>
<div>
Here&#8217;s a sample of our code:</div>
<div>
<br /></div>
<br /><div>
We could further simplify this code by having our HotelView take a Hotel model as a parameter in the constructor.&#160;</div>
<div>
<br /></div>
<div>
A caveat with info windows is that even though they are populated by the returned View, the info window is not treated like a *live* View object. The system will call the view&#8217;s draw() method only once, then use that cached rendering as the user continues to interact with the map. Our existing animation didn&#8217;t work in the Google Maps Android API v2, but we decided to be consistent with the platform and remove the animation rather than try to hack around this limitation.</div>
<div>
<br /></div>
<div>
<b>We &#60;3 Google Maps Android API v2</b></div>
<div>
Upgrading from version 1 to version 2 of the Google Maps Android API was virtually painless and fun to do! The introduction of MapFragment helped us separate the map display logic from the rest of the code and made code reuse much easier. Using custom info views was very straightforward with the new info window interface. We look forward to adding even more Google Map features to our app.<br /><br />
Posted by Monica Tran, Maps Developer Marketing<br /><br />
Monika Szymanski is a Lead Engineer on the Android team at Orbitz, where she works on apps that are friendly, fast, and easy to use. In her free time, she enjoys outdoors, running, red wine, and anything chocolate.<br /><br />
Mike Kelley is a Software Engineer at Orbitz, where he works on Android travel tools to help people travel smarter. He's a Michigan grad, transportation and technology enthusiast and craft beer buff. Some of Mike's ideas and projects live online at theelfismike.com.<br /><span><i><br /></i></span> <span><i>Orbitz Worldwide (NYSE: OWW) is a leading global online travel company that uses innovative technology to enable leisure and business travelers to search for, plan and book a broad range of travel products and services including airline tickets, hotels, car rentals, cruises, and vacation packages. Orbitz Worldwide owns a portfolio of consumer brands that includes Orbitz, CheapTickets, ebookers, and HotelClub. Also within the Orbitz Worldwide family, Orbitz Partner Network delivers private label travel solutions to a broad range of partners including many of the world's largest airlines, and Orbitz for Business delivers managed corporate travel solutions for corporations.</i></span></div>]]></description>
				<content:encoded><![CDATA[<i>In today’s guest blog post, we hear from Monika Szymanski and Mike Kelley, of Orbitz' Android engineering team, who recently migrated from version 1 to version 2 of the&nbsp;<a href="https://developers.google.com/maps/documentation/android/?utm_source=welovemapsdevelopers&amp;utm_campaign=mdr-motw">Google Maps Android API</a>.&nbsp;</i><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/fJJF-vHAKPeqWA_A0V11nNWWqeoQVYpOdOzZu-xgxRsxtkMVkLMzjkrtvUZTDg9650ul=w300-rw" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="200" src="http://4.bp.blogspot.com/fJJF-vHAKPeqWA_A0V11nNWWqeoQVYpOdOzZu-xgxRsxtkMVkLMzjkrtvUZTDg9650ul=w300-rw" width="200" /></a></div>
<b>About Orbitz</b><br />
Nearly 30% of Orbitz.com hotel bookings are now made via mobile devices, fueled in part by the growth of the Android platform. The recently released 3rd-generation update of the <a href="https://play.google.com/store/apps/details?id=com.orbitz">Orbitz - Flights, Hotels, Cars</a> app for Android brings major speed and ease of use improvements along with the latest Android UI design patterns to the app. The&nbsp;<a href="https://developers.google.com/maps/documentation/android/?utm_source=welovemapsdevelopers&amp;utm_campaign=mdr-motw">Google Maps Android API v2</a>&nbsp;is also integrated into the hotel search experience. Read on to find out how we did it, with tips and sample code along the way.<br />
<br />
<b>Migrating&nbsp;</b><b>from v1 to v2 of the</b><b>&nbsp;Google Maps Android API&nbsp;</b><br />
While users of the Orbitz.com Android app will notice some changes to the app’s user interface for maps, the changes to our code are more than skin deep. New classes offered in v2 of the Google Maps Android API like <a href="https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/MapFragment?utm_source=welovemapsdevelopers&amp;utm_campaign=mdr-motw">MapFragment</a> and <a href="https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/SupportMapFragment?utm_source=welovemapsdevelopers&amp;utm_campaign=mdr-motw">SupportMapFragment</a>, the transition from ItemizedOverlays to <a href="https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/model/Marker?utm_source=welovemapsdevelopers&amp;utm_campaign=mdr-motw">Markers</a>, and the addition of a well-supported info window pattern have made including a Google Map in an Android app much easier.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-eBGzFdcG9qA/Uha7DWXxv0I/AAAAAAAADLU/K6bYGz0o7pw/s1600/3131d611-10c1-42f5-a9f9-ff436bc31c7c+copy.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="377" src="http://4.bp.blogspot.com/-eBGzFdcG9qA/Uha7DWXxv0I/AAAAAAAADLU/K6bYGz0o7pw/s640/3131d611-10c1-42f5-a9f9-ff436bc31c7c+copy.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Say hello to the 3rd generation of&nbsp;Orbitz - Flights, Hotels, Cars app, using the Google Maps Android API v2</td></tr>
</tbody></table>
<b><br />
</b> <b>Featuring Fragments&nbsp;</b><br />
Prior to the introduction of&nbsp;<a href="https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/MapFragment?utm_source=welovemapsdevelopers&amp;utm_campaign=mdr-motw">MapFragment</a>&nbsp;(and&nbsp;<a href="https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/SupportMapFragment?utm_source=welovemapsdevelopers&amp;utm_campaign=mdr-motw">SupportMapFragment</a>)&nbsp; in v2, we had to write a lot of code to manually show/hide the map view in our app. Only one instance of MapView could be created per activity, so we had to be overly clever about persisting that instance in our Activity. Lack of proper Fragment support was a common <a href="http://code.google.com/p/android/issues/detail?id=15347">pain point</a> for developers integrating v1 of the Google Maps Android API in their application.<br />
<br />
When Fragment support was added in v2, we essentially rewrote our map code to take advantage of the new features of MapFragment. Let’s start by taking a look at our hotel results Activity layout:<br />
<br />
<script src="https://gist.github.com/c9e278060c5e1ce09e8d.js?file=activity.xml" type="text/javascript"></script>You’ll notice that we’re not including the actual fragment in the layout - we add the Fragment at runtime, because we don’t want to pay the cost of the fragment transaction and add all the markers on the map, unless the user requests it.<br />
<br />
You’ll also notice a bit of a hack at the bottom of the layout. In testing, we found that the MapFragment would leave a black box artifact on the screen on certain devices when the user opened our sliding menu navigation. Adding a simple FrameLayout “above” the map seems to fix the problem.<br />
<br />
Extending&nbsp;<a href="https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/SupportMapFragment?utm_source=welovemapsdevelopers&amp;utm_campaign=mdr-motw">SupportMapFragment</a>&nbsp;makes it much easier to separate the map display logic from our Activity and list fragment. Our SupportMapFragment (and its inner classes) is responsible for:<br />
<ul>
<li>Adding markers representing each available hotel&nbsp;</li>
<li>Customizing the GoogleMap UI options&nbsp;</li>
<li>Centering and animating the map to show the added markers&nbsp;</li>
<li>Showing an info window when a marker is clicked&nbsp;</li>
<li>Launching an Intent to display more details when an info window is clicked&nbsp;</li>
</ul>
Next up, we’ll talk about how we add markers to the map and keep memory usage down.<br />
<br />
<b>Managing Markers&nbsp;</b><br />
One of the challenges in migrating from v1 to v2 of the Google Maps Android API was figuring out the best way to know which hotel’s info to display when a marker is tapped. To solve this, we place each &lt;Marker, Hotel&gt; pair in a HashMap when adding the markers to the Google Map. Later, we can use this HashMap to look up a marker's corresponding hotel info.<br />
<br />
The code snippets below illustrate how we do it.<br />
<br />
<script src="https://gist.github.com/c9e278060c5e1ce09e8d.js?file=markermangement.java" type="text/javascript"></script><br />
<div>
This HashMap allows us to look up the selected hotel in our InfoWindowAdapter, enabling us to display more information about it.</div>
<br />
<script src="https://gist.github.com/c9e278060c5e1ce09e8d.js?file=HotelInfoWindowAdapter.java" type="text/javascript"></script><br />
<div>
We place quite a few markers on the map for hotel results and each marker can have a different custom image. It's really easy to run out of memory and we were getting quite a few OutOfMemoryExceptions early in development. To manage memory more effectively, we made sure we didn't create a new new Bitmap and BitmapDescriptor for every marker placed on the map. We also ensured that the resources were recycled after we were done with them.</div>
<br />
<script src="https://gist.github.com/c9e278060c5e1ce09e8d.js?file=addhotelmarkers.java" type="text/javascript"></script><br />
<div>
When the user taps a marker, we want to show more information; that’s where info windows come in handy.&nbsp;</div>
<div>
<br /></div>
<div>
<b>Introducing Info Windows&nbsp;</b></div>
<div>
Aside from simply viewing the location of all available hotels on a map, users are typically interested in the name and price of the hotel. The architecture for implementing this information window changed considerably from version 1 to version 2 of the Google Maps Android API.&nbsp;</div>
<div>
<br /></div>
<div>
<div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td><a href="http://3.bp.blogspot.com/-7B24VuTNgOI/Uha2xDs6_6I/AAAAAAAADLA/5N9yuMh6oJs/s1600/orbitz-old.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="http://3.bp.blogspot.com/-7B24VuTNgOI/Uha2xDs6_6I/AAAAAAAADLA/5N9yuMh6oJs/s320/orbitz-old.png" width="207" /></a></td></tr>
<tr><td class="tr-caption" style="font-size: 13px;">Before: Info windows in the Google Maps Android API v1</td></tr>
</tbody></table>
</div>
</div>
<div>
When using v1 of the Google Maps Android API, our app displayed more detailed hotel information in a custom info view when the user tapped on a hotel marker. That custom view displayed the hotel name and price, and triggered a custom animation when the view was added to the screen. This animation made it appear that the view was growing from inside the pin on the map.</div>
<div>
<br /></div>
<div>
We achieved this effect by setting the LayoutParams to MapView.LayoutParams.BOTTOM_CENTER and MapView.LayoutParams.MODE_MAP, which centered the bottom of the custom view on top of the tapped hotel marker.</div>
<div>
<br /></div>
<div>
With the introduction of the Google Maps Android API v2, MapView.LayoutParams.MODE_MAP was removed, so we explored alternative treatments to show the hotel information when the user clicks on a result. For our purposes, the best alternative was to use the new info window interface.&nbsp;</div>
<div>
<br /></div>
<div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-oQalTpWe-MY/Uha3KzfJvsI/AAAAAAAADLI/8pbJKDN__vU/s1600/orbitz-new.png" imageanchor="1" style="margin-left: auto; margin-right: auto; text-align: center;"><img border="0" height="320" src="http://3.bp.blogspot.com/-oQalTpWe-MY/Uha3KzfJvsI/AAAAAAAADLI/8pbJKDN__vU/s320/orbitz-new.png" width="191" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">After: Info windows in the Google Maps Android API v2</td></tr>
</tbody></table>
</div>
<div>
Creating an <a href="https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/GoogleMap.InfoWindowAdapter?utm_source=welovemapsdevelopers&amp;utm_campaign=mdr-motw">InfoWindowAdapter</a> is pretty straightforward. The API provides two ways to populate the info window; either by supplying the contents of the info window (shown in the default window stylec) or creating a full View. Because we wanted to have a custom window background, loaded from a 9-patch, we opted to build a complete View for the info window by overriding the getInfoContents() method to return null, and by returning a custom View from getInfoWindow().</div>
<div>
<br /></div>
<div>
Here’s a sample of our code:</div>
<div>
<br /></div>
<script src="https://gist.github.com/c9e278060c5e1ce09e8d.js?file=HotelInfoWindowAdapter2.java" type="text/javascript"></script><br />
<div>
We could further simplify this code by having our HotelView take a Hotel model as a parameter in the constructor.&nbsp;</div>
<div>
<br /></div>
<div>
A caveat with info windows is that even though they are populated by the returned View, the info window is not treated like a *live* View object. The system will call the view’s draw() method only once, then use that cached rendering as the user continues to interact with the map. Our existing animation didn’t work in the Google Maps Android API v2, but we decided to be consistent with the platform and remove the animation rather than try to hack around this limitation.</div>
<div>
<br /></div>
<div>
<b>We &lt;3 Google Maps Android API v2</b></div>
<div>
Upgrading from version 1 to version 2 of the Google Maps Android API was virtually painless and fun to do! The introduction of MapFragment helped us separate the map display logic from the rest of the code and made code reuse much easier. Using custom info views was very straightforward with the new info window interface. We look forward to adding even more Google Map features to our app.<br />
<br />
Posted by Monica Tran, Maps Developer Marketing<br />
<br />
Monika Szymanski is a Lead Engineer on the Android team at Orbitz, where she works on apps that are friendly, fast, and easy to use. In her free time, she enjoys outdoors, running, red wine, and anything chocolate.<br />
<br />
Mike Kelley is a Software Engineer at Orbitz, where he works on Android travel tools to help people travel smarter. He's a Michigan grad, transportation and technology enthusiast and craft beer buff. Some of Mike's ideas and projects live online at theelfismike.com.<br />
<span style="color: #999999; font-size: x-small;"><i><br />
</i></span> <span style="color: #999999; font-size: x-small;"><i>Orbitz Worldwide (NYSE: OWW) is a leading global online travel company that uses innovative technology to enable leisure and business travelers to search for, plan and book a broad range of travel products and services including airline tickets, hotels, car rentals, cruises, and vacation packages. Orbitz Worldwide owns a portfolio of consumer brands that includes Orbitz, CheapTickets, ebookers, and HotelClub. Also within the Orbitz Worldwide family, Orbitz Partner Network delivers private label travel solutions to a broad range of partners including many of the world's largest airlines, and Orbitz for Business delivers managed corporate travel solutions for corporations.</i></span></div>
]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/map-of-the-week-orbitz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Street View, indoor maps, and an updated map design in the Google Maps SDK for iOS</title>
		<link>https://googledata.org/uncategorized/street-view-indoor-maps-and-an-updated-map-design-in-the-google-maps-sdk-for-ios/</link>
		<comments>https://googledata.org/uncategorized/street-view-indoor-maps-and-an-updated-map-design-in-the-google-maps-sdk-for-ios/#comments</comments>
		<pubDate>Wed, 17 Jul 2013 05:01:00 +0000</pubDate>
		<dc:creator><![CDATA[Monica Trean]]></dc:creator>
		
		<guid isPermaLink="false">https://googledata.org/?guid=be31a665e1119b007d64230084d6557c</guid>
		<description><![CDATA[Since the launch of the <a href="https://developers.google.com/maps/documentation/ios/?utm_source=welovemapsdevelopers&#38;utm_campaign=mdr-launch">Google Maps SDK for iOS</a> last December, we&#8217;ve brought over a dozen of the most requested features to the platform and today, alongside the update to the Google Maps for iOS app, we&#8217;re announcing v1.4 of the SDK. <b><a href="https://developers.google.com/maps/documentation/ios/releases?utm_source=welovemapsdevelopers&#38;utm_campaign=mdr-launch">Download the SDK</a></b> to add an immersive mapping experience to your app, powered by accurate data from Google Maps.<br /><br />
With this update, developers can write a few lines of code to access popular features of Google Maps including: Street View in 50 countries, more than one billion square feet of indoor floor plans, and an updated design of our map tiles. For an overview of the new features in this release, watch this introduction from Google Maps Developer Relations team, <a href="http://google.com/+ManoMarks">Mano Marks</a> and <a href="https://plus.google.com/103941029855445812852/posts">Luke Mahe</a>:<br /><br /><div><br /></div><div><br /></div><b>Street View</b><br />
Why drive 5 million miles of roads when you can use a few lines of code to bring Street View to your app? Use Street View panoramas to give users additional visual cues about a location. Try embedding Street View alongside a map or business photos to give your app real-world context. Or find inspiration in some our creative Javascript Street View implementations: <a href="http://geoguessr.com/">GeoGuessr</a>, <a href="http://www.pickmyelantra.com/">Driveway Decision Maker</a>, and <a href="http://www.footlocker.eu/conversestreetready/#play-the-game">Converse Street Ready</a>.<br /><br /><div><a href="http://1.bp.blogspot.com/-_rwSyxXe1n8/Ud-f5Imm3MI/AAAAAAAAAEI/M02FGwp1b14/s1600/streetview.png"><img border="0" height="512px" src="http://1.bp.blogspot.com/-_rwSyxXe1n8/Ud-f5Imm3MI/AAAAAAAAAEI/M02FGwp1b14/s1600/streetview.png"></a></div><br /><b>Indoor Floor Plans</b><br />
Indoor floor plans let you bring your users one level deeper by giving them access to floor plans inside shopping malls, airports, train stations and more. In a store finder, imagine showing users the inside of the building where your store is located, rather than just street level.<br /><br /><div><a href="http://4.bp.blogspot.com/-mZMwM_43CTM/Ud-c_AqC0pI/AAAAAAAAAD4/VmvukkYLrq4/s1600/indoor.png"><img border="0" height="512px" src="http://4.bp.blogspot.com/-mZMwM_43CTM/Ud-c_AqC0pI/AAAAAAAAAD4/VmvukkYLrq4/s1600/indoor.png"></a></div><div><br /></div><b>Updated Map Design</b><br />
One point of feedback that we&#8217;ve heard consistently is that you want a map that blends seamlessly with your app UI. This version of the Google Maps SDK for iOS includes an update to the map tiles, that draws design inspiration from the new Google Maps. We&#8217;ve removed the yellow roads, which gives the map a more neutral palette, so that your app&#8217;s colors, styles, and map markers can stand out.<br /><div><br /></div><div><a href="http://2.bp.blogspot.com/-b8yiOfEp0nw/Ud-gu3eCU2I/AAAAAAAAAEU/d4DLm_fKDx0/s1600/updatedmapdesign.png"><img border="0" height="512px" src="http://2.bp.blogspot.com/-b8yiOfEp0nw/Ud-gu3eCU2I/AAAAAAAAAEU/d4DLm_fKDx0/s640/updatedmapdesign.png"></a></div><div><i>The updated map design (right) is inspired by the new Google Maps and has a more neutral palette, so that your app UI can shine.</i></div><br />
We&#8217;re continuing to iterate rapidly to add features that you want. Let us know what you&#8217;d like to see in the next release of the Google Maps SDK for iOS using the <a href="https://code.google.com/p/gmaps-api-issues/#Google_Maps_SDK_for_iOS">issue tracker</a>, and if you have questions, post them to the Google Maps API <a href="https://developers.google.com/maps/forum/?utm_source=welovemapsdevelopers&#38;utm_campaign=mdr-launch">Developer Community</a>.<br /><br />
Posted by <a href="https://plus.google.com/108844766916817507356/posts">Daniel Schramm</a>, Associate Product Manager, Google Maps.]]></description>
				<content:encoded><![CDATA[Since the launch of the <a href="https://developers.google.com/maps/documentation/ios/?utm_source=welovemapsdevelopers&amp;utm_campaign=mdr-launch">Google Maps SDK for iOS</a> last December, we’ve brought over a dozen of the most requested features to the platform and today, alongside the update to the Google Maps for iOS app, we’re announcing v1.4 of the SDK. <b><a href="https://developers.google.com/maps/documentation/ios/releases?utm_source=welovemapsdevelopers&amp;utm_campaign=mdr-launch">Download the SDK</a></b> to add an immersive mapping experience to your app, powered by accurate data from Google Maps.<br />
<br />
With this update, developers can write a few lines of code to access popular features of Google Maps including: Street View in 50 countries, more than one billion square feet of indoor floor plans, and an updated design of our map tiles. For an overview of the new features in this release, watch this introduction from Google Maps Developer Relations team, <a href="http://google.com/+ManoMarks">Mano Marks</a> and <a href="https://plus.google.com/103941029855445812852/posts">Luke Mahe</a>:<br />
<br />
<div style="text-align: center;"><iframe allowfullscreen="" frameborder="0" height="315" src="http://www.youtube.com/embed/nY2XEBT6Tak" width="560"></iframe><br />
</div><div style="text-align: center;"><br />
</div><b>Street View</b><br />
Why drive 5 million miles of roads when you can use a few lines of code to bring Street View to your app? Use Street View panoramas to give users additional visual cues about a location. Try embedding Street View alongside a map or business photos to give your app real-world context. Or find inspiration in some our creative Javascript Street View implementations: <a href="http://geoguessr.com/">GeoGuessr</a>, <a href="http://www.pickmyelantra.com/">Driveway Decision Maker</a>, and <a href="http://www.footlocker.eu/conversestreetready/#play-the-game">Converse Street Ready</a>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-_rwSyxXe1n8/Ud-f5Imm3MI/AAAAAAAAAEI/M02FGwp1b14/s1600/streetview.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="512px" src="http://1.bp.blogspot.com/-_rwSyxXe1n8/Ud-f5Imm3MI/AAAAAAAAAEI/M02FGwp1b14/s1600/streetview.png" /></a></div><br />
<b>Indoor Floor Plans</b><br />
Indoor floor plans let you bring your users one level deeper by giving them access to floor plans inside shopping malls, airports, train stations and more. In a store finder, imagine showing users the inside of the building where your store is located, rather than just street level.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-mZMwM_43CTM/Ud-c_AqC0pI/AAAAAAAAAD4/VmvukkYLrq4/s1600/indoor.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="512px" src="http://4.bp.blogspot.com/-mZMwM_43CTM/Ud-c_AqC0pI/AAAAAAAAAD4/VmvukkYLrq4/s1600/indoor.png" /></a></div><div class="separator" style="clear: both; text-align: center;"><br />
</div><b>Updated Map Design</b><br />
One point of feedback that we’ve heard consistently is that you want a map that blends seamlessly with your app UI. This version of the Google Maps SDK for iOS includes an update to the map tiles, that draws design inspiration from the new Google Maps. We’ve removed the yellow roads, which gives the map a more neutral palette, so that your app’s colors, styles, and map markers can stand out.<br />
<div class="separator" style="clear: both; text-align: center;"><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-b8yiOfEp0nw/Ud-gu3eCU2I/AAAAAAAAAEU/d4DLm_fKDx0/s1600/updatedmapdesign.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="512px" src="http://2.bp.blogspot.com/-b8yiOfEp0nw/Ud-gu3eCU2I/AAAAAAAAAEU/d4DLm_fKDx0/s640/updatedmapdesign.png" /></a></div><div style="text-align: center;"><i>The updated map design (right) is inspired by the new Google Maps and has a more neutral palette, so that your app UI can shine.</i></div><br />
We’re continuing to iterate rapidly to add features that you want. Let us know what you’d like to see in the next release of the Google Maps SDK for iOS using the <a href="https://code.google.com/p/gmaps-api-issues/#Google_Maps_SDK_for_iOS">issue tracker</a>, and if you have questions, post them to the Google Maps API <a href="https://developers.google.com/maps/forum/?utm_source=welovemapsdevelopers&amp;utm_campaign=mdr-launch">Developer Community</a>.<br />
<br />
Posted by <a href="https://plus.google.com/108844766916817507356/posts">Daniel Schramm</a>, Associate Product Manager, Google Maps.]]></content:encoded>
			<wfw:commentRss>https://googledata.org/uncategorized/street-view-indoor-maps-and-an-updated-map-design-in-the-google-maps-sdk-for-ios/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Behind the Map at Google I/O</title>
		<link>https://googledata.org/uncategorized/behind-the-map-at-google-io/</link>
		<comments>https://googledata.org/uncategorized/behind-the-map-at-google-io/#comments</comments>
		<pubDate>Wed, 08 May 2013 19:30:00 +0000</pubDate>
		<dc:creator><![CDATA[Monica Trean]]></dc:creator>
		
		<guid isPermaLink="false">https://googledata.org/?guid=945c61087a843abbdcae9a10429a5a5a</guid>
		<description><![CDATA[<div dir="ltr">
<div>
<a href="http://1.bp.blogspot.com/-VqQRexjtOng/UYklSL-o-VI/AAAAAAAACws/RODh5VwTNn0/s1600/Screen+Shot+2013-05-07+at+9.00.49+AM.png"><img border="0" height="320" src="http://1.bp.blogspot.com/-VqQRexjtOng/UYklSL-o-VI/AAAAAAAACws/RODh5VwTNn0/s320/Screen+Shot+2013-05-07+at+9.00.49+AM.png" width="239"></a></div>
It&#8217;s hard to believe that it&#8217;s been seven years since our first Geo Developer Day, which has since grown into a little event we now know as <a href="https://developers.google.com/events/io/?utm_source=welovemapsdevelopers&#38;utm_campaign=mdr-io13">Google I/O</a>. This year, we plan on bringing the best of Google Maps to <i>every</i> screen, including demos from the dashboard of a Mercedes-Benz to all seven screens of our latest <a href="http://liquidgalaxy.endpoint.com/">Liquid Galaxy</a> installation. Read on for a behind-the-map preview of the sessions, sandbox partners and events you won&#8217;t want to miss at Google I/O 2013.<br /><br /><b>Sessions</b><br />
Join us for <a href="https://developers.google.com/events/io/sessions/326458345?utm_source=welovemapsdevelopers&#38;utm_campaign=mdr-io13">Google Maps: Into the Future</a>, where our Product Managers and Developer Advocates will take at look at the present and future of Google Maps on our three platforms, the JavaScript Maps API, Android API, and the iOS SDK. Don&#8217;t forget to check out the <a href="https://developers.google.com/events/io/sessions?utm_source=welovemapsdevelopers&#38;utm_campaign=mdr-io13#t-google-maps">Maps session schedule</a> for more live I/O Live sessions and mark your favorites. And remember, all sessions will be available on YouTube after Google I/O.<br /><br /><b>Developer Sandbox</b><br />
The Developer Sandbox at Google I/O gives you a chance to check out demos from developers who have built applications based on Google technologies and products--here are our favorites from Google Maps.<br /><br /><div dir="ltr">
<img height="280" src="https://lh3.googleusercontent.com/H6CLtE44EBL1oir4slP49xP7fLut9d5J7idj7gRXcwRiJeIsX94ydo-x0sXV50m5RZE6xDKDBtJpmHEyxo-SQpQ7kg3KND1gfyxe7ljsboJlhpcsbbfCGYPy" width="400"></div>
The developers behind <b>Mercedes-Benz&#8217;s Digital DriveStyle</b> will be on hand to walk you through their latest integration of the <a href="https://developers.google.com/places/documentation/?utm_source=welovemapsdevelopers&#38;utm_campaign=mdr-io13">Places API</a>, using the <a href="https://developers.google.com/maps/documentation/ios?utm_source=welovemapsdevelopers&#38;utm_campaign=mdr-io13">Google Maps SDK for iOS</a>. Did we mention that the demo takes place from behind the wheel of a 2013 Mercedes-Benz SL550?<br /><br /><div dir="ltr">
<img border="0" height="220" src="http://4.bp.blogspot.com/-7W4bRATCXNk/UYkme21Jf6I/AAAAAAAACw4/In7oZ9c3LRU/s640/Downloads6.jpg" width="600"></div>
You can also take a look behind the lens of the Street View <a href="http://maps.google.com/help/maps/streetview/learn/cars-trikes-and-more.html">Trekker</a> and <a href="http://www.catlinseaviewsurvey.com/#technology">SVII cameras</a>, which have made their way from the <a href="http://maps.google.com/intl/en/help/maps/streetview/gallery/the-worlds-highest-peaks/">peaks of Everest</a> and the coral reefs of the <a href="http://maps.google.com/intl/en/help/maps/streetview/gallery/ocean/">Great Barrier Reef</a>, to join us at Google I/O--you can even take the Trekker backpack on a hike through the Grand Canyon. Navigate different areas using the Wii Street U&#8482; powered by Google available on <a href="http://www.nintendo.com/wiiu/downloads/wii-street-u/">Nintendo&#8217;s Wii U</a>&#8482; console.<br /><br /><div dir="ltr">
<br /></div>
Our other two partners will let you get hands-on, quite literally, with our Geo APIs. Try flying through Google Earth with a <a href="https://www.leapmotion.com/">Leap Motion</a> controller. And get an early demo of Map Diving on <a href="https://developers.google.com/live/shows/515634695/?utm_source=welovemapsdevelopers&#38;utm_campaign=mdr-io13">Google Developers Live this Thursday</a>, where Instrument&#8217;s developers will walk you through how they built it using multiple instances of Chrome mashed up with the <a href="https://developers.google.com/maps/documentation/javascript/?utm_source=welovemapsdevelopers&#38;utm_campaign=mdr-io13">Google Maps Javascript API </a>v3, Web GL, 3D CSS, web sockets and node.js.<br /><br /><b>Office Hours</b><br />
As always, the Google Maps engineering and developer relations teams will be on hand to meet with you for office hours at our Developer Sandbox on the second floor of Moscone West. &#160;Stop by on any one of the three days and chat with one of the members of the team on a variety of topics, including new APIs and features, questions about our APIs in your apps, or simply to learn more about how our technology works.<br /><br /><b>GeoMeetup</b><br />
On Thursday, May 16, our friends at <b>GeoMeetup</b> and <b>O'Reilly</b> are hosting an event in San Francisco. While the <a href="http://www.meetup.com/geomeetup/events/117191152/">GeoMeetup</a> is fully booked, we're stil taking <a href="https://docs.google.com/a/google.com/spreadsheet/viewform?formkey=dGVkSzYtMWFGbmhhSEZDaldfSldiSEE6MA#gid=0">applications for speakers</a> at the Ignite sesssions.<br /><br /><b>I/O Live</b><br />
For those of you joining us online, we&#8217;ll be bringing you highlights from the event on <b>I/O Live</b>. Look for the camera icon on the <a href="https://developers.google.com/events/io/sessions?utm_source=welovemapsdevelopers&#38;utm_campaign=mdr-io13#t-google-maps">session schedule</a> and follow us at <a href="https://plus.google.com/+GoogleMapsAPI/posts">+Google Maps API</a>, where we&#8217;ll let you know when to tune in for a tour of the Maps Sandbox. In the meantime, we&#8217;ll look forward to seeing you on <a href="https://developers.google.com/events/485749892/?utm_source=welovemapsdevelopers&#38;utm_campaign=mdr-io13">Google Developers Live</a> this Thursday for a demo of Map Diving!<br /><br /><br /><span>Posted by <a href="https://google.com/+ManoMarks">Mano Marks</a>, Maps Developer Relations Team</span></div>]]></description>
				<content:encoded><![CDATA[<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-VqQRexjtOng/UYklSL-o-VI/AAAAAAAACws/RODh5VwTNn0/s1600/Screen+Shot+2013-05-07+at+9.00.49+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="320" src="http://1.bp.blogspot.com/-VqQRexjtOng/UYklSL-o-VI/AAAAAAAACws/RODh5VwTNn0/s320/Screen+Shot+2013-05-07+at+9.00.49+AM.png" width="239" /></a></div>
It’s hard to believe that it’s been seven years since our first Geo Developer Day, which has since grown into a little event we now know as <a href="https://developers.google.com/events/io/?utm_source=welovemapsdevelopers&amp;utm_campaign=mdr-io13" style="text-decoration: none;">Google I/O</a>. This year, we plan on bringing the best of Google Maps to <i>every</i> screen, including demos from the dashboard of a Mercedes-Benz to all seven screens of our latest <a href="http://liquidgalaxy.endpoint.com/" style="text-decoration: none;">Liquid Galaxy</a> installation. Read on for a behind-the-map preview of the sessions, sandbox partners and events you won’t want to miss at Google I/O 2013.<br />
<br />
<b>Sessions</b><br />
Join us for <a href="https://developers.google.com/events/io/sessions/326458345?utm_source=welovemapsdevelopers&amp;utm_campaign=mdr-io13" style="text-decoration: none;">Google Maps: Into the Future</a>, where our Product Managers and Developer Advocates will take at look at the present and future of Google Maps on our three platforms, the JavaScript Maps API, Android API, and the iOS SDK. Don’t forget to check out the <a href="https://developers.google.com/events/io/sessions?utm_source=welovemapsdevelopers&amp;utm_campaign=mdr-io13#t-google-maps" style="text-decoration: none;">Maps session schedule</a> for more live I/O Live sessions and mark your favorites. And remember, all sessions will be available on YouTube after Google I/O.<br />
<br />
<b>Developer Sandbox</b><br />
The Developer Sandbox at Google I/O gives you a chance to check out demos from developers who have built applications based on Google technologies and products--here are our favorites from Google Maps.<br />
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<img height="280" src="https://lh3.googleusercontent.com/H6CLtE44EBL1oir4slP49xP7fLut9d5J7idj7gRXcwRiJeIsX94ydo-x0sXV50m5RZE6xDKDBtJpmHEyxo-SQpQ7kg3KND1gfyxe7ljsboJlhpcsbbfCGYPy" width="400" /></div>
The developers behind <b>Mercedes-Benz’s Digital DriveStyle</b> will be on hand to walk you through their latest integration of the <a href="https://developers.google.com/places/documentation/?utm_source=welovemapsdevelopers&amp;utm_campaign=mdr-io13" style="font-weight: normal; text-decoration: none;">Places API</a>, using the <a href="https://developers.google.com/maps/documentation/ios?utm_source=welovemapsdevelopers&amp;utm_campaign=mdr-io13" style="font-weight: normal; text-decoration: none;">Google Maps SDK for iOS</a>. Did we mention that the demo takes place from behind the wheel of a 2013 Mercedes-Benz SL550?<br />
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<img border="0" height="220" src="http://4.bp.blogspot.com/-7W4bRATCXNk/UYkme21Jf6I/AAAAAAAACw4/In7oZ9c3LRU/s640/Downloads6.jpg" width="600" /></div>
You can also take a look behind the lens of the Street View <a href="http://maps.google.com/help/maps/streetview/learn/cars-trikes-and-more.html" style="text-decoration: none;">Trekker</a> and <a href="http://www.catlinseaviewsurvey.com/#technology" style="text-decoration: none;">SVII cameras</a>, which have made their way from the <a href="http://maps.google.com/intl/en/help/maps/streetview/gallery/the-worlds-highest-peaks/" style="text-decoration: none;">peaks of Everest</a> and the coral reefs of the <a href="http://maps.google.com/intl/en/help/maps/streetview/gallery/ocean/" style="text-decoration: none;">Great Barrier Reef</a>, to join us at Google I/O--you can even take the Trekker backpack on a hike through the Grand Canyon. Navigate different areas using the Wii Street U™ powered by Google available on <a href="http://www.nintendo.com/wiiu/downloads/wii-street-u/">Nintendo’s Wii U</a>™ console.<br />
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="http://www.youtube.com/embed/LPW1ORZxHYw" width="560"></iframe><br /></div>
Our other two partners will let you get hands-on, quite literally, with our Geo APIs. Try flying through Google Earth with a <a href="https://www.leapmotion.com/" style="text-decoration: none;">Leap Motion</a> controller. And get an early demo of Map Diving on <a href="https://developers.google.com/live/shows/515634695/?utm_source=welovemapsdevelopers&amp;utm_campaign=mdr-io13">Google Developers Live this Thursday</a>, where Instrument’s developers will walk you through how they built it using multiple instances of Chrome mashed up with the <a href="https://developers.google.com/maps/documentation/javascript/?utm_source=welovemapsdevelopers&amp;utm_campaign=mdr-io13" style="text-decoration: none;">Google Maps Javascript API </a>v3, Web GL, 3D CSS, web sockets and node.js.<br />
<br />
<b>Office Hours</b><br />
As always, the Google Maps engineering and developer relations teams will be on hand to meet with you for office hours at our Developer Sandbox on the second floor of Moscone West. &nbsp;Stop by on any one of the three days and chat with one of the members of the team on a variety of topics, including new APIs and features, questions about our APIs in your apps, or simply to learn more about how our technology works.<br />
<br />
<b>GeoMeetup</b><br />
On Thursday, May 16, our friends at <b>GeoMeetup</b> and <b>O'Reilly</b> are hosting an event in San Francisco. While the <a href="http://www.meetup.com/geomeetup/events/117191152/">GeoMeetup</a> is fully booked, we're stil taking <a href="https://docs.google.com/a/google.com/spreadsheet/viewform?formkey=dGVkSzYtMWFGbmhhSEZDaldfSldiSEE6MA#gid=0">applications for speakers</a> at the Ignite sesssions.<br />
<br />
<b>I/O Live</b><br />
For those of you joining us online, we’ll be bringing you highlights from the event on <b>I/O Live</b>. Look for the camera icon on the <a href="https://developers.google.com/events/io/sessions?utm_source=welovemapsdevelopers&amp;utm_campaign=mdr-io13#t-google-maps" style="font-weight: normal; text-decoration: none;">session schedule</a> and follow us at <a href="https://plus.google.com/+GoogleMapsAPI/posts" style="font-weight: normal; text-decoration: none;">+Google Maps API</a>, where we’ll let you know when to tune in for a tour of the Maps Sandbox. In the meantime, we’ll look forward to seeing you on <a href="https://developers.google.com/events/485749892/?utm_source=welovemapsdevelopers&amp;utm_campaign=mdr-io13" style="font-weight: normal; text-decoration: none;">Google Developers Live</a> this Thursday for a demo of Map Diving!<br />
<br />
<br />
<span class="post-author">Posted by <a href="https://google.com/+ManoMarks">Mano Marks</a>, Maps Developer Relations Team</span></div>
]]></content:encoded>
			<wfw:commentRss>https://googledata.org/uncategorized/behind-the-map-at-google-io/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>An update to the Google Maps SDK for iOS</title>
		<link>https://googledata.org/google-maps/an-update-to-the-google-maps-sdk-for-ios/</link>
		<comments>https://googledata.org/google-maps/an-update-to-the-google-maps-sdk-for-ios/#comments</comments>
		<pubDate>Thu, 21 Feb 2013 20:00:00 +0000</pubDate>
		<dc:creator><![CDATA[Monica Trean]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=dff9f8f615b27459e3284a00194d1eea</guid>
		<description><![CDATA[<b><span>Today we&#8217;re happy to announce of an updated version of the </span><a href="https://developers.google.com/maps/documentation/ios/"><span>Google Maps SDK for iOS</span></a><span>.</span><br /><span></span><br /><span>This version of the SDK includes support for ground overlays, gesture control and geodesic polylines. &#160;To get started, enable the Google Maps SDK for iOS service in the </span><a href="https://code.google.com/apis/console/?pli=1"><span>Google APIs Console</span></a><span> alongside other Google APIs.</span><br /><span></span><br /><span>We&#8217;ve also included a new sample app to make it even easier to learn how to use Google maps in your app. &#160;Here&#8217;s a video with </span><a href="http://manomarks.net/+"><span>Mano Marks</span></a><span> and </span><a href="https://plus.sandbox.google.com/116049289435132333203/posts"><span>Paul Saxman</span></a> <span>demonstrating the capabilities of the Google Maps SDK for iOS 1.1 release.  </span></b><br /><br /><br /><br /><b><span>We hope these updates will enable you to enhance your app with Google maps (or create some new ones!). &#160;As always, keep sending us your </span><a href="http://code.google.com/p/gmaps-api-issues/"><span>feedback and ideas</span></a><span>, as we continue to make improvements to the SDK based on ideas that you&#8217;ve suggested and starred. For additional support, head over to </span><a href="http://stackoverflow.com/questions/tagged/google-maps-sdk-ios"><span>Stack Overflow</span></a><span> with your technical questions or watch our </span><a href="https://developers.google.com/live/maps/"><span>Google Maps Developers Live</span></a><span> shows for tips, tricks and news about using the Google Maps APIs.</span> <span></span>&#160;</b> <b><span> </span></b><br /><br /><div><b><span>Posted by Andrew Foster, Senior Product Manager, Google Maps</span></b></div>]]></description>
				<content:encoded><![CDATA[<b id="internal-source-marker_0.26784309884533286" style="font-weight: normal;"><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">Today we’re happy to announce of an updated version of the </span><a href="https://developers.google.com/maps/documentation/ios/"><span style="color: #1155cc; font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">Google Maps SDK for iOS</span></a><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">.</span><br />
<span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">This version of the SDK includes support for ground overlays, gesture control and geodesic polylines. &nbsp;To get started, enable the Google Maps SDK for iOS service in the </span><a href="https://code.google.com/apis/console/?pli=1"><span style="color: #1155cc; font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">Google APIs Console</span></a><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"> alongside other Google APIs.</span><br />
<span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">We’ve also included a new sample app to make it even easier to learn how to use Google maps in your app. &nbsp;Here’s a video with </span><a href="http://manomarks.net/+"><span style="color: #1155cc; font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">Mano Marks</span></a><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"> and </span><a href="https://plus.sandbox.google.com/116049289435132333203/posts"><span style="color: #1155cc; font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">Paul Saxman</span></a> <span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">demonstrating the capabilities of the Google Maps SDK for iOS 1.1 release.  </span></b><br />
<br />
<iframe width="560" height="315" src="http://www.youtube.com/embed/hgArTPaQM6U" frameborder="0" allowfullscreen></iframe><br />
<br />
<b style="font-weight: normal;"><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">We hope these updates will enable you to enhance your app with Google maps (or create some new ones!). &nbsp;As always, keep sending us your </span><a href="http://code.google.com/p/gmaps-api-issues/"><span style="color: #1155cc; font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">feedback and ideas</span></a><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">, as we continue to make improvements to the SDK based on ideas that you’ve suggested and starred. For additional support, head over to </span><a href="http://stackoverflow.com/questions/tagged/google-maps-sdk-ios"><span style="color: #1155cc; font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">Stack Overflow</span></a><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"> with your technical questions or watch our </span><a href="https://developers.google.com/live/maps/"><span style="color: #1155cc; font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">Google Maps Developers Live</span></a><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"> shows for tips, tricks and news about using the Google Maps APIs.</span> <span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span>&nbsp;</b> <b style="font-weight: normal;"><span style="font-family: Arial; font-size: 15px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;"> </span></b><br />
<br />
<div><b style="font-weight: normal;"><span style="font-family: Arial; font-size: 15px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;">Posted by Andrew Foster, Senior Product Manager, Google Maps</span></b></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/an-update-to-the-google-maps-sdk-for-ios/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
	</channel>
</rss>
