tag:blogger.com,1999:blog-85662132375929005752024-03-13T00:46:54.732-07:00Google Maps PlatformProduct updates, customer stories, and tips and tricks on Google Maps Platformewoodhttp://www.blogger.com/profile/12341551220176883769noreply@blogger.comBlogger518125tag:blogger.com,1999:blog-8566213237592900575.post-20791154245061828322018-11-08T11:53:00.000-08:002018-11-08T11:53:32.909-08:00We’ve moved. Come visit us.Over ten years ago, we wrote our first post on our <a href="https://mapsplatform.googleblog.com/2008/05/introducing-our-geo-developers-blog.html">Geo Developers blog</a>, and today we’re sharing our new location for the <a href="https://cloud.google.com/blog/products/maps-platform">Google Maps Platform blog</a>. Our new home will continue to provide the latest Google Maps Platform product news, how to tutorials, perspectives and customer stories that you’re used to, all available on a new, mobile-friendly platform. The new blog also designed to make it easier for you to find exactly what you’re looking for. What’s not new is our goal: to provide you with straightforward, technical content to show you how to build your solutions with Google Maps Platform. To date, we’ve migrated over two year’s worth of Google Maps Platform blog posts to this new home, with more to come. We hope you continue to follow us at our <a href="https://cloud.google.com/blog/products/maps-platform">new location</a>.
MapsDevrelhttp://www.blogger.com/profile/14544408930861314278noreply@blogger.com0tag:blogger.com,1999:blog-8566213237592900575.post-9366657315960864592018-07-10T09:27:00.001-07:002018-07-10T09:27:59.582-07:00Falling Fruit helps urbanites forage for food using Google Maps Platform<span class="post-author"><i>Posted by Ethan Welty, Co-founder, <a href="https://fallingfruit.org/">Falling Fruit</a></i></span><br />
<span class="post-author"><i><br /></i></span>
<span class="post-author"><i>Editor’s note: Today’s post comes from Ethan Welty, Co-founder of <a href="https://fallingfruit.org/">Falling Fruit</a>, a nonprofit that helps city dwellers harvest for food in their neighborhoods. Falling Fruit’s global map marks locations in 111 countries, and its website and mobile apps have been accessed by nearly 1 million people. Falling Fruit was able to access Google Maps Platform through Google for Nonprofits to build its global map.&nbsp Learn more about the products and resources available through <a href="https://www.google.com/nonprofits/">Google for Nonprofits</a>. </i></span><i> </i><br />
<i><br /></i>
We don’t typically think of cities as places to forage for food. But there is fresh food ready for picking on our city streets if you know where to find it. We created Falling Fruit to help people recover food that would otherwise go to waste. The interactive maps on our website and mobile apps are built using Google Maps Platform, helping us create the bridge between our users and the large amounts of data we collect on food-bearing trees, plants, and other foraging opportunities.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<i><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjKGyqB0Uktkr4wJ1rK3SuP9M8zbxVVJlQ2imOhzkFKwjUEGSZbzw6mkNf_oLIx1ZPl6FRbn55-pH89ANczqW_AuGOT6dIAlD4xBAq0nVhHbqm6sjf15kizBBdH03SxkPr3LxYThQ1Z4E/s1600/web-map.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1000" data-original-width="1600" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjKGyqB0Uktkr4wJ1rK3SuP9M8zbxVVJlQ2imOhzkFKwjUEGSZbzw6mkNf_oLIx1ZPl6FRbn55-pH89ANczqW_AuGOT6dIAlD4xBAq0nVhHbqm6sjf15kizBBdH03SxkPr3LxYThQ1Z4E/s640/web-map.png" width="640" /></a></i></div>
My co-founders and I blew minds everytime we harvested fruit in Boulder, Colorado (where we all lived at the time). People said, “Is that edible?” and “I never noticed those were apples!” Excited by our delicious discoveries, and dismayed by the perceptual divide between city dwellers and their food, we were determined to shine light on food growing in cities everywhere.<br />
<br />
Falling Fruit is a type of matchmaking service for urban foragers. People enter an address to find the foraging opportunities that surround them – from fruits and nuts like apples (Malus sp.), plums (Prunus sp.), and pecans (Carya illinoinensis) to edible flowers like elderberry (Sambucus sp.) and black locust (Robinia pseudoacacia), and spices like lavender (Lavendula sp.) or pink peppercorns (Schinus molle, Schinus terebinthifolius).<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<i><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1q_FEY7Gw3tM2T2L1MnR8LBn9X8wofz2YLp8nufyx_R0-mpEvA9ozcCET5Dvj_AuGnsHqYPGZUoNszcQjoFZxtzb7o1UGuDhlhqTARM-1Cogjyw85rmhvr4VLuBEelMWH5yu98MSWNVw/s1600/falling_fruit_framed.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="934" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1q_FEY7Gw3tM2T2L1MnR8LBn9X8wofz2YLp8nufyx_R0-mpEvA9ozcCET5Dvj_AuGnsHqYPGZUoNszcQjoFZxtzb7o1UGuDhlhqTARM-1Cogjyw85rmhvr4VLuBEelMWH5yu98MSWNVw/s640/falling_fruit_framed.png" width="372" /></a></i></div>
While we encourage users to submit new listings, most of our data comes from cities and universities, which often make their tree inventories publicly available. Our worldwide map lists more than 2,300 types of edibles in more than 1.3 million locations. Although most locations are publicly accessible, private property owners sometimes add themselves to the map to share their harvest with others.<br />
<br />
Using Google Maps Platform, a small, volunteer-driven nonprofit like ours can create maps and integrate data sets in less time. We use the <a href="https://developers.google.com/maps/documentation/javascript/tutorial">Maps JavaScript API</a> to display foraging locations within detailed interactive basemaps on our website and mobile apps. The <a href="https://developers.google.com/maps/documentation/geocoding/">Geocoding API</a> converts between map coordinates and human-readable addresses, so, for example, users can add or search for locations based on a street address, and we can list new locations by city. We use the <a href="https://developers.google.com/maps/documentation/directions/">Directions API</a> to allow users to build custom routes between locations.<br />
<div class="separator" style="clear: both; font-style: italic; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLSLtLsCb3JHhxjbPidA_i0Kiseeubk-6Qe06MgL-JAJtmLo05Tt_xeTh9I4j1MITRtLXI5waQvwYLMTq3aaDfiVsYIa0Ru1DhLQ0ENx50SGnbxh1mOHLQ81w8hyp_AOYOSAZIfliPGzk/s1600/mobile-map+%25281%2529_framed.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="934" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLSLtLsCb3JHhxjbPidA_i0Kiseeubk-6Qe06MgL-JAJtmLo05Tt_xeTh9I4j1MITRtLXI5waQvwYLMTq3aaDfiVsYIa0Ru1DhLQ0ENx50SGnbxh1mOHLQ81w8hyp_AOYOSAZIfliPGzk/s640/mobile-map+%25281%2529_framed.png" width="372" /></a></div>
With locations in 111 countries and 6,340 cities (and users scattered across the globe), we rely on other Google APIs to help us break through language barriers. We use the <a href="https://cloud.google.com/translate/">Cloud Translation API</a> to give human translators a head start in translating our user interfaces (the website is available in nine languages). In our larger effort to build a multilingual dictionary of species common names, we use the <a href="https://developers.google.com/custom-search/json-api/v1/overview">Custom Search API</a> to determine which “common names” for a species in a particular language are in fact the most common.<br />
<div class="separator" style="clear: both; font-style: italic; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_i5Q1xUFjQpAfrmKpFqlirHvXYU38y7hm8-ZbkDGK-4xA1NBkpiNgwsJL7SpHRNNorLLkbWzZYZYjGAAOWUfsRiqOvO0v7s5qKTQ94sv3IDPZDehmssHZKGU-edJsCcpJ7LgEDKtNBzA/s1600/web-location-german.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1000" data-original-width="1600" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_i5Q1xUFjQpAfrmKpFqlirHvXYU38y7hm8-ZbkDGK-4xA1NBkpiNgwsJL7SpHRNNorLLkbWzZYZYjGAAOWUfsRiqOvO0v7s5qKTQ94sv3IDPZDehmssHZKGU-edJsCcpJ7LgEDKtNBzA/s640/web-location-german.png" width="640" /></a></div>
With help from Google, we can continue to use the Maps APIs without stretching our small budget too thin. The Google Maps Platform credit covers the usage cost as we attract more users to Falling Fruit. The APIs’ accurate documentation also helps us run Falling Fruit more efficiently. Tasks like converting between map coordinates and addresses now run automatically in the background, which frees up time that we can devote to other projects – like adding new features to the mobile app, importing new city tree inventories, and partnering with nonprofits with similar missions, such as <a href="https://fruitrescue.org/">Community Fruit Rescue</a>.<br />
<br />
Once you start looking for food-bearing plants in your city, you’ll realize that you’ve been surrounded by them all along. We’re excited that Falling Fruit is helping to reimagine cities as a source of food. Over half of the world’s population lives in urban areas: We want them to realize that there is edible bounty ready to be harvested, just down the street or around the corner. As the popularity of urban foraging grows, I hope that we can organize ourselves to cultivate increasingly more food-bearing (rather than just decorative) plants in our cities.
MapsDevrelhttp://www.blogger.com/profile/14544408930861314278noreply@blogger.com0tag:blogger.com,1999:blog-8566213237592900575.post-840453137911182662018-06-26T07:40:00.000-07:002018-06-26T07:40:37.537-07:00How Google Maps helps amateur and professional archaeologists ponder the mysteries of Stonehenge’s burial mounds <span class="post-author"><i>Posted by Simon Banton, “Hengemaster,” <a href="http://web.org.uk/barrowmap/">Stonehenge Barrow Map</a></i></span><br />
<span class="post-author"><br /></span>
<span class="post-author"><i>Editor’s note: Today’s post comes from Simon Banton: software professional, Stonehenge enthusiast, and creator of the <a href="http://web.org.uk/barrowmap/">Stonehenge Barrow Map</a>. With Google Maps Platform products and some help from the Google developer community, Banton built his map in just a few days, compiling the data and adding richer details in his spare time. Discover how you can start using <a href="https://cloud.google.com/maps-platform/">Google Maps Platform</a> to visualize your passion projects.</i></span><br />
<br />
My journey into mapmaking started when I came across a 200-year-old reference to an oddly deformed, 5,500-year-old skull buried in one of the 300 Neolithic and Bronze Age barrows (burial mounds) found within walking distance of the Stonehenge prehistoric monument in Wiltshire, England. When I can spare time away from my software business, I offer tours around this unique landscape and study the barrows myself. It’s fascinating to imagine who the barrows’ inhabitants were—like the one with the intriguingly deformed skull—and what their lives were like thousands of years ago.<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="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaPWkWn1ajknzrB7crfpLk-YiHEYbzsXcmQapcF7lyhUCELuMa-Q1CNl9VL9rZ8u9pEzobMlvN7ln7ma70n7088bZQU8J1Iv9whxn-ttu4G63XWQPM_J7Ds_Oh1cphEPCNOII3Ii_OTfU/s1600/P1050142.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1200" data-original-width="1600" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaPWkWn1ajknzrB7crfpLk-YiHEYbzsXcmQapcF7lyhUCELuMa-Q1CNl9VL9rZ8u9pEzobMlvN7ln7ma70n7088bZQU8J1Iv9whxn-ttu4G63XWQPM_J7Ds_Oh1cphEPCNOII3Ii_OTfU/s640/P1050142.JPG" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Photo provided and licensed by <a href="http://www.stonesofstonehenge.org.uk/">http://www.stonesofstonehenge.org.uk</a></td></tr>
</tbody></table>
In the countryside around Stonehenge, one challenge is finding barrows and identifying them against records and maps that were created over a 200-year period. Early 1800s researchers published excellent guides to the barrows, but there were no authoritative maps and surveys of the area in those days. If you tried now to find a barrow using 200-year-old guides, modern databases wouldn’t have the same reference numbers. And, of course, there were no online sources that correlated and matched the barrow location data.<br />
<br />
This was frustrating, so I pulled together a Google Sheets listing the barrows’ latitudes and longitudes and the numbering systems used by different authorities. I thought somehow this data could be visualized on a map. After some online searching, I discovered that I could use the <a href="https://developers.google.com/maps/documentation/javascript/tutorial">Maps JavaScript API</a> and the <a href="https://developers.google.com/chart/interactive/docs/gallery/map">Google Charts “Map” visualization</a> to pull the data from the spreadsheet, and I built the Stonehenge Barrow Map showing all the barrow locations.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnRZuM0rjlWpY83C5-aIrsWqMmQurPWxv3AUkyR8BgnNUnp9XP2GkpLMs83wTIv6V3iDelz_9npHkIDNb-53CsoQ7zVQAUDLk3cYQhTTKJ2Zg-tj4DCmx32yX0SjTsGMSiz0dRe5IgNFs/s1600/image05.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="780" data-original-width="1381" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnRZuM0rjlWpY83C5-aIrsWqMmQurPWxv3AUkyR8BgnNUnp9XP2GkpLMs83wTIv6V3iDelz_9npHkIDNb-53CsoQ7zVQAUDLk3cYQhTTKJ2Zg-tj4DCmx32yX0SjTsGMSiz0dRe5IgNFs/s640/image05.png" width="640" /></a></div>
It only took two days for me to create the basic map using the Charts visualization. After that, I spent one evening per week, over six months, adding barrow descriptions and images to the Google Sheet. The developers in the Google Maps forums were quick to answer my questions, such as when I needed help customizing pop-up boxes with information about each barrow. When users click on a point on the map, an info window appears with reference numbers and descriptions from 19th-century and modern-day researchers, links to data from government agencies and historical societies, and images of artifacts removed from barrows.<br />
<br />
Using the <a href="https://developers.google.com/chart/interactive/docs/querylanguage">Visualization Query Language</a>, I added a search box to the map, where people can enter keywords to find barrows by all kinds of criteria, including what artifacts were found. Almost all the barrows have been plundered for their contents in the past few centuries, but happily a great many of these treasures eventually found their way into the wonderful museums in <a href="http://www.wiltshiremuseum.org.uk/">Devizes</a> and <a href="http://www.salisburymuseum.org.uk/">Salisbury</a>.
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhL4DYA6TbPjHv0RYs2L3t5hZwNTfV5PT-7jZXJswlVaMWFlymzXflcFy6u4HGrsgv_tfZ_JhJBR5KrVFC5Ln23auH9FjgwDgkmojA6nZwFdlY_brpz1OykL8HGeqeepFn4zD1MGM8Fslk/s1600/stonehenge_barrow_2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="721" data-original-width="1417" height="324" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhL4DYA6TbPjHv0RYs2L3t5hZwNTfV5PT-7jZXJswlVaMWFlymzXflcFy6u4HGrsgv_tfZ_JhJBR5KrVFC5Ln23auH9FjgwDgkmojA6nZwFdlY_brpz1OykL8HGeqeepFn4zD1MGM8Fslk/s640/stonehenge_barrow_2.png" width="640" /></a></div>
Stonehenge enthusiasts and I use the Google Map when we’re carrying out research or conducting tours, and anyone can use it just to explore the barrows for themselves. We can enter the modern reference number for a barrow, like “Wilsford G30” or “MWI12489”, find it was known to the 19th-century antiquaries as barrow “Normanton 173,” and that it was the one which contained that very odd skull.<br />
<br />
Not only are all the research links in one place, but we also get a visualization of the barrows around the Stonehenge landscape. That helps us ponder questions such as why barrows were clustered together, and which materials were buried where and at different times in prehistory.<br />
<br />
I’ve had people ask me to expand my map to include the barrows in the Avebury landscape, or even those in the neighbouring counties of Dorset and Hampshire. That’d be an enormous undertaking, so it’s a project for someone else. To help anyone interested in pursuing that goal, I’ve kept the map code as simple as possible. I’ve posted the Google Docs barrow spreadsheet for download so other people can use it as a template for their own maps.<br />
<br />
While much about the barrows remains a mystery—such as what happened to the skeleton of the person with the deformed skull—I’d like to think that future researchers, using Google Maps like mine, may help to uncover some of the answers.MapsDevrelhttp://www.blogger.com/profile/14544408930861314278noreply@blogger.com0tag:blogger.com,1999:blog-8566213237592900575.post-47745706638369473562018-06-13T08:27:00.002-07:002018-06-13T18:35:16.596-07:00How WhyHunger uses Google Maps to connect people to grassroots community food sources<span class="post-author"><i>Posted by Alison Cohen, Senior Director of Programs, WhyHunger</i></span><br />
<span class="post-author"><br /></span>
<span class="post-author"><i><b>Editor's Note:</b> Today’s blog is the first in a series of posts highlighting our support for Google public programs. Eligible nonprofits, startups, crisis response, and news media organizations may apply for Google Maps Platform credits through <a href="https://www.google.com/nonprofits/">Google for Nonprofits</a>, the <a href="https://startup.google.com/">Google Cloud Startup Program</a>, <a href="https://cloud.google.com/maps-platform/credits/application/crisis-response">Google Crisis Response</a> and the <a href="https://cloud.google.com/maps-platform/credits/application/media">Google News Initiative</a>.</i><br />
<br />
This post comes from Alison Cohen, Senior Director of Programs for WhyHunger. The nonprofit helps communities develop sustainable solutions for ending hunger and poverty. WhyHunger was able to access Google Maps Platform through Google for Nonprofits to build its <a href="https://whyhunger.org/find-food/">Find Food map</a>. Learn more about the products and resources available through <a href="https://www.google.com/nonprofits/">Google for Nonprofits</a>.</span><br />
<br />
When people are hungry, they may not know where to turn for food – and they may be hesitant to ask for help. At WhyHunger, we want to remove the barriers that keep people from getting the help they need to stay healthy and thrive. We support grassroots groups that are tackling hunger in their communities, such as food banks and meal programs. Google Maps brings our database of 23,000 emergency food providers to our website, so no one has to go hungry.<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="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhl8T5qwU8WY1U84QpGp5lq2jBWwlZd-z8D3fCJ7X3vPiD6x9LEV5WyHjrdwTu3ugsoMtv5vjoiiX2JV9mMoITiuaxvNWIVJ0JJO2JG1Jg0HxIi-6ircPylE4bfi3ITJDns5vjYJ1fHL_I/s1600/Why_Hunger.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1066" data-original-width="1600" height="425" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhl8T5qwU8WY1U84QpGp5lq2jBWwlZd-z8D3fCJ7X3vPiD6x9LEV5WyHjrdwTu3ugsoMtv5vjoiiX2JV9mMoITiuaxvNWIVJ0JJO2JG1Jg0HxIi-6ircPylE4bfi3ITJDns5vjYJ1fHL_I/s640/Why_Hunger.JPG" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><i>Photo by Diane Bondareff for WhyHunger</i></td></tr>
</tbody></table>
Many resources for food justice operate at the local level. We work to knit together organizations around the country that have the common goal of alleviating hunger and poverty – for example, sharing ideas for successful programs, and advocating for food as a basic human right. Our database is one way for us to look at food programs at a national level, and break down information so people can discover what’s available in the areas where they live. The WhyHunger <a href="https://whyhunger.org/find-food/">Find Food</a> tool uses Google Maps Platform to display food resources based on a zip code. The search results include phone numbers, addresses, and the type of programs available.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKfc10IJwEvTB54HOffftrPeQi8ip4swNnZhtJBLe3uSdHHy00G92lV4u2p79vwE7MgKoV2IXrhUf-nkLvAyh557OkHr5Q2X-7kEffeW9brP8JmB6nH3wYPOamJzFL75tODCojW5SIevw/s1600/WhyHunger_search+%25281%2529.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="642" data-original-width="1600" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKfc10IJwEvTB54HOffftrPeQi8ip4swNnZhtJBLe3uSdHHy00G92lV4u2p79vwE7MgKoV2IXrhUf-nkLvAyh557OkHr5Q2X-7kEffeW9brP8JmB6nH3wYPOamJzFL75tODCojW5SIevw/s640/WhyHunger_search+%25281%2529.png" width="640" /></a></div>
We applied to Google for Nonprofits to get access to the Google Maps Platform products that help us create and expand the Find Food map. We used the APIs to integrate data sources with the map, such as the U.S. Department of Agriculture’s summer meals database. The <a href="https://developers.google.com/maps/documentation/geocoding/intro">Geocoding API</a> converts addresses for food sources into points on the Find Food map. Because the addresses for the U.S.D.A. meals programs change frequently, the API does the heavy lifting when it comes to converting address data. Then, we use the <a href="https://developers.google.com/maps/documentation/javascript/tutorial">Maps JavaScript API</a> to display the maps once people enter their zip codes.<br />
<br />
Accessing Google Maps through Google for Nonprofits also helps us cover the costs, as more people use the maps to search for food. If we didn’t have access to these programs, it would have taken us much longer to create the map, and we would not be able to quickly connect users to essential resources.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivqLcS6vC5yQHusOpEoPEurSKvIUVbxFSCiifX1O0MpzIVUTfTtNcNW5LlaOYlao9rd4ZT_cLPD4jfEKuZ72MqPpGMQKQlcTgWxD8NtRgAuD7NVRxjona55HrYcIKBq58L1saAIo1frIs/s1600/WhyHunger+%25281%2529+%25281%2529.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1089" data-original-width="1600" height="434" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivqLcS6vC5yQHusOpEoPEurSKvIUVbxFSCiifX1O0MpzIVUTfTtNcNW5LlaOYlao9rd4ZT_cLPD4jfEKuZ72MqPpGMQKQlcTgWxD8NtRgAuD7NVRxjona55HrYcIKBq58L1saAIo1frIs/s640/WhyHunger+%25281%2529+%25281%2529.png" width="640" /></a></div>
We started using Google Maps because the maps are easy to both build and use. People seeking food sources don’t need to wrestle with complicated maps. We briefly considered open-source map APIs, but they did not compare to Google Maps, which are the most accurate and comprehensive ones we’ve used. Accuracy is important for maps that show as many locations as ours do. We want people using our maps to see exact locations for food sources so they get what they need as quickly as possible.<br />
<br />
We also rely on the maps ourselves: When people call our Hunger Hotline at 1-800-5HUNGRY, staff can quickly look at the Find Food map and tell callers what’s available locally and how to get there. People are now increasingly going directly to the maps instead of calling us first. Since the updated Find Food Map launched in 2015 an average of 9,000 people search the map per month, compared with 1,000 callers.<br />
<br />
The time we save on coding maps and managing data is now spent on coming up with new ways to help hungry people get healthy food and address the root causes of hunger. When our Hunger Hotline service isn’t available, people can text a zip code to the hotline, and receive a text message with names and addresses of the 10 closest food sites. In the future, we hope to develop more ways to use Google Maps and our food program data to tackle hunger, community by community.
MapsDevrelhttp://www.blogger.com/profile/14544408930861314278noreply@blogger.com0tag:blogger.com,1999:blog-8566213237592900575.post-21235274413645118102018-06-12T11:03:00.000-07:002018-06-12T11:03:59.310-07:00Expanded support for Google public programs<span class="post-author"><i>Posted by Amit Litsur, Product Manager, Google Maps Platform</i></span><br />
<br />
Google is committed to supporting organizations with public programs that provide access to our products, people and resources. We're proud to support organizations like <a href="http://code.org/">Code.org</a>, <a href="https://www.charitywater.org/">Charity:water</a>, <a href="https://www.hihostels.com/">Hostelling International</a> and more to connect people to resources and help visualize the impact their organizations are making in the communities where they serve.<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="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTYaGZRRC3Rgb5kUkOIXPlsiPxJXyEqZ1DU4_nXgb-NLavK_EDPl6m4UKgFUaoJm0D60cwAZ8qCZWecASnkchMW8qup1y0v6GlXqmWOVnEtXE0tYCsEVESSPBkyc7ROHvOwrywpAUDqYA/s1600/charitywater_hero+copy.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="627" data-original-width="986" height="406" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTYaGZRRC3Rgb5kUkOIXPlsiPxJXyEqZ1DU4_nXgb-NLavK_EDPl6m4UKgFUaoJm0D60cwAZ8qCZWecASnkchMW8qup1y0v6GlXqmWOVnEtXE0tYCsEVESSPBkyc7ROHvOwrywpAUDqYA/s640/charitywater_hero+copy.jpg" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><i><a href="https://www.charitywater.org/">Charity:water </a>created a new way for donors to view exactly where their dollars go</i></td></tr>
</tbody></table>
With our recent launch of Google Maps Platform, in addition to nonprofits, we’re now able to offer startups, crisis responders and news organizations Google Maps Platform at a reduced rate, or at no cost to their organizations. We’re also increasing our availability from seven to <a href="https://support.google.com/nonprofits/answer/1614602">50 countries</a> so we can support even more global communities and programs.<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="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWNYQ2PTiDqkAQs_yqDhicY1ZS3wElAHoqUyidLSUSfFnu4r3pirwy6aeMh0zbeGY9JJktX-FsWHqhCfMEZieoxM0iVANqVUEut6q9mnq8KakrESoSRPpaArhehdw9hzCbC8ZYhy5Barg/s1600/falling_fruit_framed.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1600" data-original-width="934" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWNYQ2PTiDqkAQs_yqDhicY1ZS3wElAHoqUyidLSUSfFnu4r3pirwy6aeMh0zbeGY9JJktX-FsWHqhCfMEZieoxM0iVANqVUEut6q9mnq8KakrESoSRPpaArhehdw9hzCbC8ZYhy5Barg/s640/falling_fruit_framed.png" width="372" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><i><a href="https://fallingfruit.org/">Falling Fruit</a> helps urban foragers find available seasonal produce in their neighborhoods</i></td></tr>
</tbody></table>
Eligible organizations may apply for Google Maps Platform credits to support their organizations' efforts. You can learn more about eligibility and how to apply in our <a href="https://developers.google.com/maps/billing/understanding-public-programs">Understanding Public Programs</a> page. If you are a nonprofit, startup, crisis response, or news media organization, we hope that you take advantage of these programs and apply for Google Maps Platform credits today.MapsDevrelhttp://www.blogger.com/profile/14544408930861314278noreply@blogger.com0tag:blogger.com,1999:blog-8566213237592900575.post-85773476232112570342018-06-04T11:59:00.000-07:002018-06-04T14:22:02.479-07:00Reminder—set-up a Google Cloud Platform Console account <span class="post-author"><i>Posted by the Google Maps Platform team</i></span><br />
<br />
On <a href="https://mapsplatform.googleblog.com/2018/05/introducing-google-maps-platform.html">May 2</a>, we announced changes including our new simplified Maps, Routes, and Places products as well as a new pricing plan to make our products easier to use and more scalable as you grow. Here’s a quick reminder of the three steps you need to take prior to June 11:<br />
<br />
<ol>
<li>Set up a <a href="https://cloud.google.com/console/google/maps-apis/overview">Google Cloud Platform Console account</a> with your billing information.</li>
<li>Ensure that you are using a valid API key to access our core products.</li>
<li>Try the new features and learn more about how to optimize your API usage in our <a href="https://developers.google.com/maps/optimization-guide">Optimization Guide</a>.</li>
</ol>
<br />
To provide you with an additional month of lead time, our new terms and pricing won’t go into effect until July 16. If you have questions about the changes and the new pricing plan, please review the <a href="https://developers.google.com/maps/billing/important-updates">Important Updates</a> page in our documentation. It will help you familiarize yourself with the changes and includes a new pricing calculator to help you understand your usage.
MapsDevrelhttp://www.blogger.com/profile/14544408930861314278noreply@blogger.com0tag:blogger.com,1999:blog-8566213237592900575.post-41138887624193453322018-05-02T12:00:00.000-07:002018-05-02T12:00:25.029-07:00Introducing Google Maps Platform<span class="post-author"><i>Posted by the Google Maps Platform team</i></span><br />
<br />
It’s been thirteen years since we <a href="https://googleblog.blogspot.com/2005/06/world-is-your-javascript-enabled_29.html?utm_source=blog&utm_medium=blog&utm_campaign=FY18-Q2-global-adhoc-website-other-maps_blogpost_introducingmapsplatform">opened up</a> Google Maps to your creativity and passion. Since then, it's been exciting to see how you've transformed your industries and improved people's lives. You’ve changed the way we <a href="https://enterprise.google.com/maps/customers/lyft.html?utm_source=blog&utm_medium=blog&utm_campaign=FY18-Q2-global-adhoc-website-other-maps_blogpost_introducingmapsplatform">ride to work</a>, discover the <a href="https://enterprise.google.com/maps/customers/greatschools.html?utm_source=blog&utm_medium=blog&utm_campaign=FY18-Q2-global-adhoc-website-other-maps_blogpost_introducingmapsplatform">best schools for our children</a>, and search for a <a href="https://enterprise.google.com/maps/customers/trulia.html?utm_source=blog&utm_medium=blog&utm_campaign=FY18-Q2-global-adhoc-website-other-maps_blogpost_introducingmapsplatform">new place to live</a>. We can’t wait to see what you do next. That’s why today we’re introducing a series of updates designed to make it easier for you to start taking advantage of new location-based features and products.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQFBBtvqzokgFV_UZce9KhzxB1SjD4G-SxirhRe92ufJCHIdPZ3A8D4_HSSHp-5exmITw2qqdXAIifumuLhhxq7_S6F-Zdj2lI2QJnwsOf0dHBlCa3xSg8lxOIlFNy-fANVHMzgblgn2M/s1600/Google+Maps+Platfom+images-01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQFBBtvqzokgFV_UZce9KhzxB1SjD4G-SxirhRe92ufJCHIdPZ3A8D4_HSSHp-5exmITw2qqdXAIifumuLhhxq7_S6F-Zdj2lI2QJnwsOf0dHBlCa3xSg8lxOIlFNy-fANVHMzgblgn2M/s640/Google+Maps+Platfom+images-01.png" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
We’re excited to announce Google Maps Platform—the next generation of our Google Maps business—encompassing streamlined API products and new industry solutions to help drive innovation.<br />
<br />
In March, we <a href="https://maps-apis.googleblog.com/2018/03/the-real-world-as-your-playground-build.html?utm_source=blog&utm_medium=blog&utm_campaign=FY18-Q2-global-adhoc-website-other-maps_blogpost_introducingmapsplatform">announced</a> our first industry solution for game studios to create real-world games using Google Maps data. Today, we also offer solutions tailored for ridesharing and asset tracking companies. Ridesharing companies can embed the Google Maps navigation experience directly into their apps to optimize the driver and customer experience. Our asset tracking offering helps businesses improve efficiencies by locating vehicles and assets in real-time, visualizing where assets have traveled, and routing vehicles with complex trips. We expect to bring new solutions to market in the future, in areas where we’re positioned to offer insights and expertise.<br />
<br />
Our core APIs work together to provide the building blocks you need to create location-based apps and experiences. One of our goals is to evolve our core APIs to make them simpler, easier to use and scalable as you grow. That’s why we’ve introduced a number of updates to help you do so.
<br />
<br />
<i>Streamlined products to create new location-based experiences</i><br />
We’re simplifying our 18 individual APIs into three core products—Maps, Routes and Places, to make it easier for you to find, explore and add new features to your apps and sites. And, these new updates will work with your existing code—no changes required.<br />
<br />
<i>One pricing plan, free support, and a single console</i><br />
We’ve heard that you want simple, easy to understand pricing that gives you access to all our core APIs. That’s one of the reasons we merged our Standard and Premium plans to form one pay-as-you go pricing plan for our core products. With this new plan, developers will receive the first $200 of monthly usage for free. We estimate that most of you will have monthly usage that will keep you within this free tier. With this new pricing plan you’ll pay only for the services you use each month with no annual, up-front commitments, termination fees or usage limits. And we’re rolling out free customer support for all. In addition, our products are now integrated with Google Cloud Platform Console to make it easier for you to track your usage, manage your projects, and discover new innovative Cloud products.<br />
<br />
<i>Scale easily as you grow</i><br />
Beginning June 11, you’ll need a valid API key and a Google Cloud Platform billing account to access our core products. Once you enable billing, you will gain access to your $200 of free monthly usage to use for our Maps, Routes, and Places products. As your business grows or usage spikes, our plan will scale with you. And, with Google Maps’ global infrastructure, you can scale without thinking about capacity, reliability, or performance. We’ll continue to partner with Google programs that bring our products to nonprofits, startups, crisis response, and news media organizations. We’ve put new processes in place to help us scale these programs to hundreds of thousands of organizations and more countries around the world.<br />
<br />
We’re excited about all the new location-based experiences you’ll build, and we want to be there to support you along the way. If you're currently using our core APIs, please take a look at our <a href="https://cloud.google.com/maps-platform/user-guide?utm_source=blog&utm_medium=blog&utm_campaign=FY18-Q2-global-adhoc-website-other-maps_blogpost_introducingmapsplatform">Guide for Existing Users</a> to further understand these changes and help you easily transition to the new plan. And if you’re just getting started, you can start your first <a href="https://cloud.google.com/maps-platform/?utm_source=blog&utm_medium=blog&utm_campaign=FY18-Q2-global-adhoc-website-other-maps_blogpost_introducingmapsplatform#get-started">project here</a>. We're here to help.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8566213237592900575.post-67490118358736731232018-03-14T09:02:00.000-07:002018-04-25T13:43:49.997-07:00The real world as your playground: Build real-world games with Google Maps APIs<span class="post-author"><i>Posted by Clementine Jacoby, Product Manager, Google Maps APIs</i></span><br /><br />The mobile gaming landscape is changing as more and more studios develop augmented reality games. In order to mix realities, developers first need to understand the real world — the physical environment around their players. That’s why we’re excited to announce a new offering for building real-world games using Google Maps’ tried-and-tested model of the world.<br /><br /><br /><br />Game studios can easily reimagine our world as a medieval fantasy, a bubble gum candy land, or a zombie-infested post-apocalyptic city. With Google Maps’ real-time updates and rich location data, developers can find the best places for playing games, no matter where their players are.<br /><br /><h4><div class="separator" style="clear: both; text-align: center;"><iframe width="560" height="315" src="https://www.youtube.com/embed/7Bbd5dbuPBc" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe></div></h4><h2><br /><br /></h2><h2>Completely customize your games</h2><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZ6WB4xZbz6c2_4098g78vB7IkmwNSR5MI9Obz2iujEXwOJJiQr1lX5uFa6AI9dkdNI1LTwvGwQVUfcvOJzonLo3YzvzX_iRJJYl4fqRJjNOu3DfScCTYF6OXkb_gaR3L_p8wDcUv4P_c/s1600/Darkcity.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="901" data-original-width="1600" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZ6WB4xZbz6c2_4098g78vB7IkmwNSR5MI9Obz2iujEXwOJJiQr1lX5uFa6AI9dkdNI1LTwvGwQVUfcvOJzonLo3YzvzX_iRJJYl4fqRJjNOu3DfScCTYF6OXkb_gaR3L_p8wDcUv4P_c/s640/Darkcity.png" width="640" /></a></div>To make it easy to get started, we’ve brought the richness of Google Maps to the Unity game engine. We turn buildings, roads, and parks into GameObjects in Unity, where developers can then add texture, style, and customization to match the look and feel of your game. This means that they can focus on building rich, immersive gameplay without the overhead of scaffolding a global-scale game world.<br /><br /><br /><br /><i>“With Google Maps data integrated into Unity, we were able to focus our time and energy on building detailed virtual experiences for our users to find virtual dinosaurs in the real world.” - Alexandre Thabet, CEO, Ludia</i><br /><br /><h2><br /><br /></h2><h2>Create immersive experiences all over the globe</h2><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFcGdvgXFYNZ0tNgwwizLUiobQcSThyM8-Yy_9GygfiNbacBo0uLdY6_ulwgIRR9BVSps-7GLJGflSgmb76ib4CRl2D37YHuCOxSiRjTGF7VHi0gyzOl1LE3qk3Vnff-nDBABRjiyCVgs/s1600/Sunrise.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="901" data-original-width="1600" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFcGdvgXFYNZ0tNgwwizLUiobQcSThyM8-Yy_9GygfiNbacBo0uLdY6_ulwgIRR9BVSps-7GLJGflSgmb76ib4CRl2D37YHuCOxSiRjTGF7VHi0gyzOl1LE3qk3Vnff-nDBABRjiyCVgs/s640/Sunrise.png" width="640" /></a></div>Game developers will now have access to a rich, accurate, and living model of the world to form the foundation of their game worlds. With access to over 100 million 3D buildings, roads, landmarks, and parks from over 200 countries, they can deliver rich engaging game play across the globe.<br /><br /><br /><br /><i>"We are excited to partner with Google to provide the most up-to-date and rich location data to enable us to create an immersive experience tied to your location. When new buildings or roads are built, we’ll have access to them in our game. Google Maps’ unrivalled location data, covering world-famous landmarks, businesses and buildings, like the Statue of Liberty, Eiffel Tower, London Eye, Burj Khalifa, and India Gate, makes exploring your surroundings a breathtaking experience,” said Teemu Huuhtanen, CEO, Next Games</i><br /><br /><h2><br /><br /></h2><h2>Design rich and engaging games in the real world</h2>Designing interactions around real-world places at global scale is a huge challenge and requires knowing a lot about a player’s environment. We make it easy to find places that are appropriate, pleasant, and fun to play — no matter where your players are.<br /><br /><br /><br /><i>"Building game interactions around real-world places at global scale and finding places that are relevant to users and fun to play is challenging. Google Maps APIs helped us incorporate the real-world, user relevant locations into our game. Users from all over the world can experience the Ghostbusters virtual world through our game, leveraging Google's location data." - HAN Sung Jin, CEO, FourThirtyThree Inc.(4:33)</i><br /><br /><h2><br /><br /></h2><h2>Deliver game experiences at Google-scale</h2>Building on top of Google Maps’ global infrastructure means faster response times, the ability to scale on demand, and peace of mind knowing that your game will just work.<br /><br /><br /><br />We're excited to be bringing the best of Google to mobile gaming. All our early access partners leveraged ARCore to better understand the user's environment and reach over 100M devices across the ecosystem. At Google we have even more products to help developers – from Google Cloud for your game server needs to YouTube and Google Play for promotional help, and more. <br /><br /><br /><br />We’ll be featuring a live demo at the Game Developer Conference in booth 823 next week in San Francisco. If you’re interested in building real-world gaming experiences, visit our <a href="https://developers.google.com/maps/gaming?utm_source=geoblog&utm_medium=social&utm_campaign=gaming_launch_20180314&utm_content=blogPost_20180314_the-real-world-as-your-playground-build">web page</a> or <a href="https://developers.google.com/maps/gaming/contact-sales?utm_source=geoblog&utm_medium=social&utm_campaign=gaming_launch_20180314&utm_content=blogPost_20180314_the-real-world-as-your-playground-build">contact sales</a>. <br /><br /><br /><br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8566213237592900575.post-92230401727604940812018-02-13T14:23:00.000-08:002018-04-25T13:43:50.449-07:00Updated basemap style for Google Maps APIs<span class="post-author"><i>Posted by Rose Yao, Director Product, Google Maps APIs</i></span><br /><br /><br /><br />Google Maps APIs will soon be updated with a new <a href="https://www.blog.google/products/maps/google-maps-gets-new-look/">look and feel</a> to provide an experience in line with the recent updates to Google Maps. Late last year, we refined the color, typography, and iconography of the Google Maps basemap to improve focus, clarity of information, and readability. <br /><br /><br /><br />This means that the maps in your products will eventually get an update as well, with stylistic changes such as:<br /><br /><br /><br /><ul><br /><li>New basemap with an updated color scheme and typography</li><br /><li>An updated pin style marks points of interest on the map in place of the previous circular icons</li><br /><li>Different colors and icons reflecting categories of points of interest (Food & Drink, Shopping, Transport, etc.)</li><br /></ul><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><br /><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0zcfDgmG4iAFpth3VwbjcjoWlB_rosCSb8BPCaR9PYJvuNqz_4neiEwk-dBykjomxLYxleI8PQ8I-XUJh_8nvqES4EhyphenhyphenJdd80AGEEDdkP7R7g0bL6xs7st9IW61xHsX8r34aeqs-j0Gs/s1600/old_style.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="670" data-original-width="521" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0zcfDgmG4iAFpth3VwbjcjoWlB_rosCSb8BPCaR9PYJvuNqz_4neiEwk-dBykjomxLYxleI8PQ8I-XUJh_8nvqES4EhyphenhyphenJdd80AGEEDdkP7R7g0bL6xs7st9IW61xHsX8r34aeqs-j0Gs/s400/old_style.png" width="310" /></a></td></tr><br /><tr><td class="tr-caption" style="text-align: center;">Existing design</td></tr><br /></tbody></table><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><br /><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9OKebbsGSZvC5pk_qO11J9kFjj_LVgvB-0yF3mlgv3vhuHD1HljckQiRHboMBQcy5m262oLx4rdTuf3eiKuVC293rO089AUJOJk-P0fwDBLDKWEAMtnFNg8P3dJb9sLirvnExh9PeFd4/s1600/new_style.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="670" data-original-width="523" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9OKebbsGSZvC5pk_qO11J9kFjj_LVgvB-0yF3mlgv3vhuHD1HljckQiRHboMBQcy5m262oLx4rdTuf3eiKuVC293rO089AUJOJk-P0fwDBLDKWEAMtnFNg8P3dJb9sLirvnExh9PeFd4/s400/new_style.png" width="311" /></a></td></tr><br /><tr><td class="tr-caption" style="text-align: center;">New design</td></tr><br /></tbody></table><br /><b>Timeline</b><br /><br />The transition to the new look will happen over time and by individual API, with an opt-in period (defaulting to the previous style) and an opt-out period (defaulting to the new style) before the new style is enforced.<br /><br /><br /><br />The first APIs to offer the new look are the Google Maps SDK for iOS and the Google Places API for iOS, which we are launching as <a href="https://developers.google.com/maps/documentation/ios-sdk/releases#new_style_opt-in_-_february_13_2018">opt-in today</a>. To get updates on the timelines for each API, star the following issues on the Maps APIs Issue Tracker. <br /><br /><br /><br />If you experience any issues with the Google Maps APIs new styles please let us know by creating a bug report.<br /><br /><div dir="ltr" style="margin-left: 0pt;"><br /><span id="docs-internal-guid-d44b429c-914c-1dda-5acb-a61a74c3edc5"></span><br /><br /><div dir="ltr" style="margin-left: 0pt;"><br /><table style="border-collapse: collapse; border: none;"><colgroup><col width="217"></col><col width="193"></col><col width="122"></col></colgroup><tbody><br /><tr style="height: 0pt;"><td style="border-bottom: solid #000000 1pt; border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-top: solid #000000 1pt; padding: 5pt 5pt 5pt 5pt; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><br /><span style="background-color: transparent; color: black; font-family: "roboto"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;">API</span></div><br /></td><td style="border-bottom: solid #000000 1pt; border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-top: solid #000000 1pt; padding: 5pt 5pt 5pt 5pt; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><br /><span style="background-color: transparent; color: black; font-family: "roboto"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;">Estimated opt-in launch</span></div><br /></td><td style="border-bottom: solid #000000 1pt; border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-top: solid #000000 1pt; padding: 5pt 5pt 5pt 5pt; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><br /><span style="background-color: transparent; color: black; font-family: "roboto"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;">Tracking issue</span></div><br /></td></tr><br /><tr style="height: 0pt;"><td style="border-bottom: solid #000000 1pt; border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-top: solid #000000 1pt; padding: 5pt 5pt 5pt 5pt; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><br /><span style="background-color: transparent; color: black; font-family: "roboto"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;">Google Maps SDK for iOS</span></div><br /></td><td style="border-bottom: solid #000000 1pt; border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-top: solid #000000 1pt; padding: 5pt 5pt 5pt 5pt; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><br /><span style="background-color: transparent; color: black; font-family: "roboto"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;">13 February </span></div><br /></td><td style="border-bottom: solid #000000 1pt; border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-top: solid #000000 1pt; padding: 5pt 5pt 5pt 5pt; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><br /><span style="background-color: transparent; color: #1155cc; font-family: "roboto"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre;"><a href="https://issuetracker.google.com/issues/72853293">Issue 72853293</a></span></div><br /></td></tr><br /><tr style="height: 0pt;"><td style="border-bottom: solid #000000 1pt; border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-top: solid #000000 1pt; padding: 5pt 5pt 5pt 5pt; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><br /><span style="background-color: transparent; color: black; font-family: "roboto"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;">Google Places API for iOS</span></div><br /></td><td style="border-bottom: solid #000000 1pt; border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-top: solid #000000 1pt; padding: 5pt 5pt 5pt 5pt; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><br /><span style="background-color: transparent; color: black; font-family: "roboto"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;">13 February</span></div><br /></td><td style="border-bottom: solid #000000 1pt; border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-top: solid #000000 1pt; padding: 5pt 5pt 5pt 5pt; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><br /><span style="background-color: transparent; color: #1155cc; font-family: "roboto"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre;"><a href="https://issuetracker.google.com/issues/72853629">Issue 72853629</a></span></div><br /></td></tr><br /><tr style="height: 0pt;"><td style="border-bottom: solid #000000 1pt; border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-top: solid #000000 1pt; padding: 5pt 5pt 5pt 5pt; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><br /><span style="background-color: transparent; color: black; font-family: "roboto"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;">Google Maps JavaScript API</span></div><br /></td><td style="border-bottom: solid #000000 1pt; border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-top: solid #000000 1pt; padding: 5pt 5pt 5pt 5pt; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><br /><span style="background-color: transparent; color: black; font-family: "roboto"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;">14 February (version 3.32)</span></div><br /></td><td style="border-bottom: solid #000000 1pt; border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-top: solid #000000 1pt; padding: 5pt 5pt 5pt 5pt; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><br /><a href="https://issuetracker.google.com/72848644" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "roboto"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre;">Issue 72848644</span></a></div><br /></td></tr><br /><tr style="height: 0pt;"><td style="border-bottom: solid #000000 1pt; border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-top: solid #000000 1pt; padding: 5pt 5pt 5pt 5pt; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><br /><span style="background-color: transparent; color: black; font-family: "roboto"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;">Google Static Maps API</span></div><br /></td><td style="border-bottom: solid #000000 1pt; border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-top: solid #000000 1pt; padding: 5pt 5pt 5pt 5pt; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><br /><span style="background-color: transparent; color: black; font-family: "roboto"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;">Mid February</span></div><br /></td><td style="border-bottom: solid #000000 1pt; border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-top: solid #000000 1pt; padding: 5pt 5pt 5pt 5pt; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><br /><a href="https://issuetracker.google.com/issues/72852782" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "roboto"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre;">Issue 72852782</span></a></div><br /></td></tr><br /><tr style="height: 0pt;"><td style="border-bottom: solid #000000 1pt; border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-top: solid #000000 1pt; padding: 5pt 5pt 5pt 5pt; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><br /><span style="background-color: transparent; color: black; font-family: "roboto"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;">Google Maps Android API</span></div><br /></td><td style="border-bottom: solid #000000 1pt; border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-top: solid #000000 1pt; padding: 5pt 5pt 5pt 5pt; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><br /><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;">April</span></div><br /></td><td style="border-bottom: solid #000000 1pt; border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-top: solid #000000 1pt; padding: 5pt 5pt 5pt 5pt; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><br /><a href="https://issuetracker.google.com/issues/72780606" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "roboto"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre;">Issue 72780606</span></a></div><br /></td></tr><br /><tr style="height: 0pt;"><td style="border-bottom: solid #000000 1pt; border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-top: solid #000000 1pt; padding: 5pt 5pt 5pt 5pt; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><br /><span style="background-color: transparent; color: black; font-family: "roboto"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;">Google Places API for Android</span></div><br /></td><td style="border-bottom: solid #000000 1pt; border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-top: solid #000000 1pt; padding: 5pt 5pt 5pt 5pt; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><br /><span style="background-color: transparent; color: black; font-family: "roboto"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;">May</span></div><br /></td><td style="border-bottom: solid #000000 1pt; border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-top: solid #000000 1pt; padding: 5pt 5pt 5pt 5pt; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><br /><span style="background-color: transparent; color: #1155cc; font-family: "roboto"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre;"><a href="https://issuetracker.google.com/issues/72970562">Issue 72970562</a></span></div><br /></td></tr><br /></tbody></table><br /></div><br /></div><br /><br /><br />The updated style is already live across all Google products that incorporate Google Maps, including the Assistant, Search and Android Auto. Opt-in to the new style to give your users the same consistent experience no matter how or where they see our maps.<br /><br /><br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8566213237592900575.post-40732951726141833232017-11-28T10:43:00.000-08:002018-04-25T13:43:50.884-07:00With Google Maps APIs, Toyota Europe keeps teen drivers safe and sound<span class="post-author">Posted by Christophe Hardy, Manager of Social Business at Toyota Motor Europe</span><br /><br /><br /><br /><i>Editor’s note: Today’s post is from Christophe Hardy, Toyota Motor Europe’s Manager of Social Business. He’ll explain how Toyota used Google Maps APIs to build an Android app to keep teen drivers safe.</i><br /><br /><br /><br />It’s a milestone that teenagers celebrate and parents fear: getting that first driver’s license. For teens, a license means freedom and a gateway to adulthood. For parents, it means worrying about their kid’s safety, with no way to make sure they’re doing the right thing behind the wheel.<br /><br /><br /><br />We know that <a href="https://www.cdc.gov/motorvehiclesafety/teen_drivers/index.html">the risk of motor vehicle crashes</a> is higher among 16-19-year-olds than any other age group, and that speeding and using smartphones are two of the main main causes. So as part of Toyota's efforts to eliminate accidents and fatalities, we worked with <a href="https://www.molamil.com/frontpage">Molamil</a> and <a href="https://www.mapspeople.com/">MapsPeople</a> to build <a href="https://play.google.com/store/apps/details?id=com.molamil.toyotasafeandsound&hl=en">Safe and Sound</a>, an Android app for European teen drivers. It takes a lighthearted but effective approach to help young drivers stay focused on speed limits and the rules of the road, not on their cellphones. And it can be used by anyone, not just Toyota owners.<br /><br /><br /><br />One way Safe and Sound combats speeding and distracted driving is by using music. Before parents turn over their car keys, parents and teens download and run the app to set it up. The app syncs with Spotify, and uses the <a href="https://developers.google.com/maps/documentation/roads/intro">Google Maps Roads API</a> to monitor a teen’s driving behavior. If Safe and Sound determines the teen is speeding, it’ll override the teen’s music with a Spotify playlist specifically chosen by the parent—and the teen can’t turn it off. As any parent knows, parents and kids don’t always agree on music. And there’s nothing less cool to a teen than being forced to listen to folk ballads or ‘70s soft rock. (The embarrassment doubles if their friends are in the car.) The parents’ playlist turns off and switches back to the teen’s only when the teen drives at the speed limit.<br /><br /><br /><br />The app also helps prevent distracted driving. When it detects the car is moving above nine miles an hour, it switches on a “do not disturb” mode that blocks social media notifications, incoming and outgoing texts, and phone calls. If the teen touches the phone, the app will detect that too, and play the parents' Spotify playlist until the teen removes his or her hand. At the end of the drive, Safe and Sound alerts parents to how many times their teen exceeded the speed limit or touched the phone. Parents can also tap a link in the app that displays the route the teen drove in Google Maps.<br /><br /><br /><br />Google Maps provided us the ideal platform for building Safe and Sound. It has accurate, up-to-date and comprehensive map data, including road speed limits. The documentation is great, which made using the Google Maps Roads API simple. It also scales to handle millions of users, an important consideration as we roll out the app to more of Europe. <br /><br /><br /><br />Safe and Sound is currently available in English throughout the continent, with a Spanish version launching soon in Spain, and a Dutch and French version coming to Belgium. And we’re looking to localize Safe and Sound into even more languages.<br /><br /><br /><br />We hope Safe and Sound helps keep more teens safe, and brings more parents peace of mind. Plus, there’s never been a better use for that playlist of yacht rock classics.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8566213237592900575.post-64713248546553417372017-06-30T11:43:00.000-07:002018-04-25T13:43:51.369-07:00Removing Place Add, Delete & Radar Search featuresBack in 2012, we launched the <a href="https://developers.google.com/places/web-service/add-place">Place Add / Delete</a> feature in the Google Places API to enable applications to instantly update the information in Google Maps’ database for their own users, as well as submit new places to add to Google Maps. We also introduced <a href="https://developers.google.com/places/web-service/search#RadarSearchRequests">Radar Search</a> to help users identify specific areas of interest within a geographic area. <br /><br /><br /><br />Unfortunately, since we introduced these features, they have not been widely adopted, and we’ve recently launched easier ways for users to <a href="https://support.google.com/maps/answer/6320846">add missing places</a>. At the same time, these features have proven incompatible with future improvements we plan to introduce into the Places API.<br /><br /><br /><br />Therefore, we’ve decided to remove the Place Add / Delete and Radar Search features in the Google Places API Web Service and JavaScript Library. Place Add is also being deprecated in the Google Places API for Android and iOS. These features will remain available until <b>June 30, 2018</b>. After that date, requests to the Places API attempting to use these features will receive an error response.<br /><br /><br /><br /><h4><br />Next steps</h4><br />We recommend removing these features from all your applications, before they are turned down at the end of June 2018.<br /><br /><br /><br /><a href="https://developers.google.com/places/web-service/search#PlaceSearchRequests">Nearby Search</a> can work as an alternative for Radar Search, when used with <span style="font-family: "courier new" , "courier" , monospace;">rankby=distance</span> and without <span style="font-family: "courier new" , "courier" , monospace;">keyword</span> or <span style="font-family: "courier new" , "courier" , monospace;">name</span>. Please check the Developer's Guide for more details, in the <a href="https://developers.google.com/places/web-service/search#PlaceSearchRequests">Web Service</a> or <a href="https://developers.google.com/maps/documentation/javascript/places#place_search_requests">Places library in the Google Maps JavaScript API</a>.<br /><br /><br /><br />The <a href="https://developers.google.com/maps/web-services/client-library">Client Libraries for Google Maps Web Services</a> for <a href="https://github.com/googlemaps/google-maps-services-python">Python</a>, <a href="http://node.js/">Node.js</a>, <a href="https://github.com/googlemaps/google-maps-services-java">Java</a> and <a href="https://github.com/googlemaps/google-maps-services-go">Go</a> are also being updated to reflect the deprecated status of this functionality.<br /><br /><br /><br />We apologize for any inconvenience this may cause, but we hope that the alternative options we provide will still help meet your needs. Please submit any questions or feedback to our <a href="https://issuetracker.google.com/bookmark-groups/76561">issue tracker</a>.<br /><br /><table><tbody><br /><tr> <td style="width: 80px;"><br /><br /><div class="separator" style="clear: both; text-align: center;"><br /><img alt="author image" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihKZtR9XE9RoOWD2SkXqwIbNNBDHG_e9z0kMLZEhRRu26R_uNe558YfEw2Y2DppVghMiE7-QVbb20R0fxf-OAUfDGHr8aipIvR48LrakUoIaHDebHVSCwLlzAzttFDiAhd01TFZZDOLPc/s320/FontaineFoxworth212.jpg" style="border-radius: 50%; width: 80px;" /></div><br /></td> <td><i>Posted by Fontaine Foxworth, Product Manager, Google Maps APIs</i></td></tr><br /></tbody></table><br /><br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8566213237592900575.post-49359873239380078792017-05-23T14:31:00.000-07:002018-04-25T13:43:51.805-07:00Get your users where they need to go on any platform with Google Maps URLsLast week at Google I/O we announced Google Maps URLs, a new way for developers to link directly to Google Maps from any app. Over one billion people use the Google Maps apps and sites every month to get information about the world, and now we're making it easier to leverage the power of our maps from any app or site.<br /><br /><div class="separator" style="clear: both; text-align: center;"><br /><iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/vLRutvtJwLg" width="560"></iframe><br /></div><br /><h4><br />Why URLs?</h4><br />Maps can be important to help your users get things done, but we know sometimes maps don't need to be a core part of your app or site. Sometimes you just need the ability to complete your users’ journey—including pointing them to a specific location. Maybe they're ready to buy from you and need to find your nearest store, or they want to set up a meeting place with other users. All of these can be done easily in Google Maps already.<br /><br /><br /><br />What you can do is use Google Maps URLs to link into Google Maps and trigger the functionality you or your users need automatically. Google Maps URLs are not new. You've probably noticed that copying our URLs out of a browser works—on some platforms. While we have Android Intents and an iOS URL Scheme, they only work on their native platforms. Not only is that more work for developers, it means any multi-user functionality is limited to users on that same platform.<br /><br /><br /><br /><h4><br />Cross platform</h4><br />So to start, we needed a universal URL scheme we could support cross-platform—Android, iOS, and web. A messaging app user should be able to share a location to meet up with their friend without worrying about whether the message recipient is on Android or iOS. And for something as easy as that, developers shouldn't have to reimplement the same feature with two different libraries either.<br /><br /><br /><br />So when a Google Maps URL is opened, it will be handled by the Google Maps app installed on the user's device, whatever device that is. If Google Maps for Android or iOS is available, that's where the user will be taken. Otherwise, Google Maps will open in a browser. <br /><br /><br /><br /><h4><br />Easy to use</h4><br />Getting started is simple—just replace some values in the URL based on what you're trying to accomplish. That means we made it easy to construct URLs programmatically. Here are a few examples to get you started:<br /><br /><br /><br />Say someone has finished booking a place to stay and need figure out how to get there or see what restaurants are nearby:<br /><br /><a href="https://www.google.com/maps/search/?api=1&query=sushi+near+94043">https://www.google.com/maps/search/?api=1&query=sushi+near+94043</a><br /><br /><div class="separator" style="clear: both; text-align: center;"><br /><span id="docs-internal-guid-3741db95-3168-1a99-29ba-3c61dcecd11f"></span><span style="font-family: "open sans"; font-size: 10pt; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"></span></div><br /><div class="separator" style="clear: both; text-align: center;"><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjjO3-vyqXoAU_3aNJMBy8Y8fB009T7NG1GpG0oDPD6ghb3thjI7MTcx8WPnjvARlE1fUfIIV7Af5n0WDvS12SsVVTpwopKgUP2SYl4x47TjNHKWGhArhK472wSmzh4W5or1dBboAHmZM/s1600/image2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjjO3-vyqXoAU_3aNJMBy8Y8fB009T7NG1GpG0oDPD6ghb3thjI7MTcx8WPnjvARlE1fUfIIV7Af5n0WDvS12SsVVTpwopKgUP2SYl4x47TjNHKWGhArhK472wSmzh4W5or1dBboAHmZM/s640/image2.png" width="360" /></a></div><br />The <span style="font-family: "courier new" , "courier" , monospace;">query</span> parameter does what it says: plugs a query in. Here we've specified a place, but if you do the same link with no location it will search near the user clicking it. Try it out: <a href="https://www.google.com/maps/search/?api=1&query=sushi">click here</a> for sushi near you.<br /><br /><br /><br /><div class="separator" style="clear: both; text-align: center;"><br /></div><br />This is similar to our query above, but this time we got back a single result, so it gets additional details shown on the page:<br /><br /><a href="http://google.com/maps/search/?api=1&query=shoreline+amphitheatre">google.com/maps/search/?api=1&query=shoreline+amphitheatre</a><br /><br /><div class="separator" style="clear: both; text-align: center;"><br /><span id="docs-internal-guid-3741db95-3168-5cb2-c30b-d06aa5c04606"><span style="font-family: "open sans"; font-size: 10pt; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"></span></span></div><br /><div class="separator" style="clear: both; text-align: center;"><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhx73OUpiyvK56ChCHxXtkLleYgjWzFO4QrL2VkkHt5Q0cY-kbVRvY1sXQU1sdWmjmv5N08QlyMyHMTvE-UZFECHScZkgJqyKBJ_UTa-3piBswkzoeAn9sZ68UBu2xf9pU4XiZR8OIlZns/s1600/image3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhx73OUpiyvK56ChCHxXtkLleYgjWzFO4QrL2VkkHt5Q0cY-kbVRvY1sXQU1sdWmjmv5N08QlyMyHMTvE-UZFECHScZkgJqyKBJ_UTa-3piBswkzoeAn9sZ68UBu2xf9pU4XiZR8OIlZns/s640/image3.png" width="372" /></a></div><br />The <span style="font-family: "courier new" , "courier" , monospace;">api</span> parameter (mandatory) specifies the version of Maps URLs that you're using. We're launching version 1.<br /><br /><span id="docs-internal-guid-b0f9972e-3152-9375-58c7-ff64d9a29704"></span><br /><br /><div class="separator" style="clear: both; text-align: center;"><br /></div><br /><br /><br />Or if a user has set up their fitness app and want to try out a new route on their bike:<br /><br /><a href="http://www.google.com/maps/dir/?api=1&destination=stevens+creek+trail&travelmode=bicycling&dir_action=navigate">www.google.com/maps/dir/?api=1&destination=stevens+creek+trail&travelmode=bicycling&dir_action=navigate</a><br /><br /><div class="separator" style="clear: both; text-align: center;"><br /><span style="font-family: "open sans"; font-size: 10pt; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"></span></div><br /><div style="text-align: center;"><br /><span id="docs-internal-guid-3741db95-3231-cc40-b5b4-432e01ab7b1a"></span><span id="docs-internal-guid-3741db95-324b-9b01-cd09-1d7cc7298283"><span style="font-family: "open sans"; font-size: 10pt; vertical-align: baseline; white-space: pre-wrap;"></span></span></div><br /><div class="separator" style="clear: both; text-align: center;"><br /><span id="docs-internal-guid-3741db95-3168-a9c5-e74c-fb84c0fe4f98"><span style="font-family: "open sans"; font-size: 10pt; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"></span></span></div><br /><div class="separator" style="clear: both; text-align: center;"><br /><span style="font-family: "open sans"; font-size: 10pt; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"></span></div><br /><div class="separator" style="clear: both; text-align: center;"><br /></div><br /><div class="separator" style="clear: both; text-align: center;"><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlBkPyYFTCJYm9SWMdnhZTDB2WxSNBZRoObuNOPa4462oj1W3KPLDgw2Pgaz9uDrT3UwjPahG_zgKFql3ZCrhxD8TO4FFIqgubJQcUhIks_ESfYX04L5uIvCi7mtZP3PocXIx6cPsW8d0/s1600/image4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlBkPyYFTCJYm9SWMdnhZTDB2WxSNBZRoObuNOPa4462oj1W3KPLDgw2Pgaz9uDrT3UwjPahG_zgKFql3ZCrhxD8TO4FFIqgubJQcUhIks_ESfYX04L5uIvCi7mtZP3PocXIx6cPsW8d0/s640/image4.png" width="360" /></a></div><br />We can specify the <span style="font-family: "courier new" , "courier" , monospace;">travelmode</span> to bicycling, destination to a nearby bike trail, and we're done!<br /><br /><span id="docs-internal-guid-b0f9972e-3251-4279-11a5-f7f09dfc9b58"></span><br /><br />And we can also open StreetView directly with a focus of our choice to give a real sense of what a place is like:<br /><br /><a href="http://www.google.com/maps/@?api=1&map_action=pano&viewpoint=36.0665,-112.0906&heading=85&pitch=10&fov=75">www.google.com/maps/@?api=1&map_action=pano&viewpoint=36.0665,-112.0906&heading=85&pitch=10&fov=75</a><br /><br /><div class="separator" style="clear: both; text-align: center;"><br /><span style="font-family: "open sans"; font-size: 10pt; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"></span></div><br /><div class="separator" style="clear: both; text-align: center;"><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjFUk1t7uHrWV_yH_OQwJIxmxdAiShyphenhyphen8xIbJuNfr9x-DfvAHbQXAKKTbqBpx8f2c5Gk6yG6hVBhBA5YCUFjMd5sTIHtvYAxV8oAICKZ5-PQOAYftjnewy_nmsuZ6EnabegwA_M1PxQ8bk/s1600/image1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjFUk1t7uHrWV_yH_OQwJIxmxdAiShyphenhyphen8xIbJuNfr9x-DfvAHbQXAKKTbqBpx8f2c5Gk6yG6hVBhBA5YCUFjMd5sTIHtvYAxV8oAICKZ5-PQOAYftjnewy_nmsuZ6EnabegwA_M1PxQ8bk/s640/image1.png" width="344" /></a></div><br />The <span style="font-family: "courier new" , "courier" , monospace;">viewpoint</span> is a LatLng coordinate we want to get imagery for, and <span style="font-family: "courier new" , "courier" , monospace;">heading</span>, <span style="font-family: "courier new" , "courier" , monospace;">pitch</span>, and <span style="font-family: "courier new" , "courier" , monospace;">fov</span> allows you to specify exactly where to look.<span id="docs-internal-guid-b0f9972e-3257-1e5b-71c8-7c463f8a3a45"></span><br /><br /><br /><br /><h4><br />Need more functionality?</h4><br />Google Maps URLs are great to help your users accomplish some tasks in Google Maps. However, when you need more flexibility, customization, or control, we recommend integrating Google Maps into your app or site instead. This is where our more powerful <a href="https://developers.google.com/maps/">Google Maps APIs</a> come into play. With our feature-rich range of APIs, you can access full functionality and can <a href="https://developers.google.com/maps/documentation/android-api/views">control your camera</a>, <a href="https://developers.google.com/maps/documentation/javascript/shapes">draw shapes on the map</a>, or <a href="https://developers.google.com/maps/documentation/ios-sdk/styling">style your maps</a> to match your apps, brand, or just for better UI. And if you want to go beyond the map we have metadata on <a href="https://developers.google.com/maps/documentation/javascript/places">Places</a>, <a href="https://developers.google.com/maps/documentation/javascript/streetview">images</a>, and much more.<br /><br /><br /><br /><h4><br />Learn more</h4><br />When you're happy to delegate the heavy lifting and make use of the Google Maps app for your needs, Maps URLs are for you. Check out our new <a href="https://developers.google.com/maps/documentation/urls/guide">documentation</a>.<br /><br /><br /><br />Thank you for using Google Maps URLs and the Google Maps APIs! Be sure to share your feedback or any issues in the <a href="https://issuetracker.google.com/bookmark-groups/76561">issue tracker</a>.<br /><br /><table><tbody><br /><tr> <td style="width: 80px;"><br /><br /><div class="separator" style="clear: both; text-align: center;"><br /><img alt="author image" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIYgM7AZG0YOoBIVatrhAXTQc4oBgIYMTyRXWacPlDxuTglRNylLFcSj0eOlIDyj4DCQa7fHWhgbVIcoL4mavcPcep2mGli-ZhxudkcumeEdZArUA0EH-0qrzUMJ2ZLv9OcO0NOWIxkjQ/s320/Joel_K.jpg" style="border-radius: 50%; width: 80px;" /></div><br /></td> <td><i>Posted by Joel Kalmanowicz, Product Manager, Google Maps APIs</i></td></tr><br /></tbody></table><br /><br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8566213237592900575.post-31020313857836346362017-05-16T11:34:00.000-07:002018-04-25T13:43:52.244-07:00Google Maps and Particle partner to bring location-aware capabilities to IoT devices<span class="post-author"><i>Posted by Ken Nevarez, Solutions Architect for Google Maps APIs</i></span><br /><br /><br /><br />Particle and Google Maps make it easy for IoT devices to identify their location without the use of a GPS. With a single line of code, a device or sensor dispersed across a network (an IoT edge device) can access Google’s geospatial database of Wi-Fi and cellular networks using the <a href="https://developers.google.com/maps/documentation/geolocation/intro">Google Maps Geolocation API</a>.<br /><br /><br /><br />This means you no longer need to invest in expensive and power hungry GPS modules to know the location of their IoT devices and sensors. Alternatively, you can also use Google Maps APIs in conjunction with existing GPS systems to increase accuracy and provide location data even when GPS fails, as it often does indoors.<br /><br /><br /><br />Particle and Google now provide the whole chain—location aware devices that send context rich data to Google Cloud Platform. When IoT sensors know their location, the information they collect and send back becomes more contextualized, allowing you to make more informed, high-order decisions. By feeding context-rich data back into Google Cloud Platform, you have access to robust set of cloud <a href="https://cloud.google.com/products/">products and services</a>.<br /><br /><br /><br />Although asset tracking is traditionally built on a foundation that includes GPS, satellite based GPS often fails in dense urban environments and indoors. In these scenarios, GPS signals are blocked by tall buildings or roofs. The Geolocation API is based on cell tower and Wi-Fi signals that continue to operate where GPS fails. This capability allows you to track your assets anywhere, both indoor and out. <br /><br /><br /><br />In an IoT driven world, you can track more than just location. Additional signals can be critical to your objectives. For example, in the cold supply chain, temperature as well as location are key pieces of data to track in the factory, on the loading dock and in transit. This enables a holistic view of the supply chain and its ability to deliver a high quality product.<br /><br /><div class="separator" style="clear: both; text-align: center;"><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNxsd0jIrHq0c4tntXwFb0MlqFKOrqLPu7i3Kq7kGYjOMdTX4AmLdDZdAEYmHISCtFSRt4MaoH3TKaGm1mOHncUBiD2tSd3yjN6Zb3XBk91tFu9Rml5oeqUoYbTpBkMN6oH0DsCPknUJ4/s1600/Maps+API+blog+image_Particle.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="235" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNxsd0jIrHq0c4tntXwFb0MlqFKOrqLPu7i3Kq7kGYjOMdTX4AmLdDZdAEYmHISCtFSRt4MaoH3TKaGm1mOHncUBiD2tSd3yjN6Zb3XBk91tFu9Rml5oeqUoYbTpBkMN6oH0DsCPknUJ4/s640/Maps+API+blog+image_Particle.png" width="640" /></a></div><br />With a Wi-Fi enabled product built on the Particle platform, you can use the Google Maps Geolocation API to offer location aware auto configuration. This creates a seamless setup experience, enhanced operation and valuable analytics. Using geolocation your Particle devices can auto configure timezone, tune to available broadcast bands and connect to regional service providers.<br /><br /><br /><br />For example, location aware window blinds can reference the number of available hours of sunlight and then make informed decision on how to passively heat a room. A smart coffee machine can report back its location allowing your marketing teams to better understand its market penetration and target demographic. <br /><br /><br /><br />Visit the <a href="https://docs.particle.io/tutorials/integrations/google-maps/">documentation</a> for full directions to enable geolocation on your Particle devices. There are four basic steps to complete:<br /><br /><br /><br /><ol><br /><li>Get a Google Maps API key enabled for Geolocation.</li><br /><li>Flash the Google Maps Firmware on your Particle Devices.</li><br /><li>Enable the Google Maps Integration in the Particle Console.</li><br /><li>Test it Out!</li><br /></ol><br /><br /><br />Google and Particle will be demoing the integration at <a href="https://tmt.knect365.com/iot-world/">IoT World</a> beginning May 16. Stop by booth #310 near the main hall entrance to see the demo in person or for more information, review our developer <a href="https://docs.particle.io/tutorials/integrations/google-maps/">documentation</a> and get started today.<br /><br /><table><tbody><br /><tr> <td style="width: 80px;"><br /><br /><div class="separator" style="clear: both; text-align: center;"><br /><img alt="author image" border="0" src="https://lh6.googleusercontent.com/J9CJgmBXfg81AdomnyX_aCbetiE1SHVGkGcHSZT6dVfRBX_dOQ7rhj8gmbR8mR8SYSZ-RcZS5VOFZTZAg4zYryTeFJydgxkt5SrKSYTkyKKIRfxaHTs1965c7UEpUkkFtcX5IeP7" style="border-radius: 50%; width: 80px;" /></div><br /></td> <td>About Ken:<i> Ken is a Lead on the Industry Solutions team. He works with customers to bring innovative solutions to market.</i></td></tr><br /></tbody></table><br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8566213237592900575.post-25893280522319072712017-04-26T14:54:00.000-07:002018-04-25T13:43:52.678-07:00Introducing structured menus in the Google My Business APIEvery day, millions of people search on Google for places to eat and drink and many click to see the menu before making a decision. In fact, the Google search interest in "menu" related queries has seen a 30% increase in the last 2 years*. For businesses, this means they need to provide useful and relevant information to their customers in these moments that matter. <br /><br /><br /><br />Last December, we enabled Menu URL editing in the Google My Business API allowing businesses to control and manage their menu link on Google Maps and Search. Starting today, businesses that use the Google My Business API can publish their entire menu to Google —itemized with descriptions, photos and prices--making it frictionless for their customers to view their menus on Google. <br /><br /><br /><br />Arby’s, the quick-serve fast-food sandwich restaurant chain, was one of the first to take advantage of this feature and publish their full menu to Google. Now customers who search on Google for Arby’s can find accurate and up-to-date menu information provided by Arby’s as well as photos of those menu items.<br /><br /><div class="separator" style="clear: both; text-align: center;"><br /><span style="font-family: "roboto"; font-size: 11pt; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img height="400" src="https://lh5.googleusercontent.com/GjmGYCdfptO-5DHebmhCLlYxWm6MoQIregH7E4ub5B__x-CdfiQVFaB9bf1PFSLp8o-yUeDA9_IVqo3jf1Io7BRBuK8YkXjlOOKTKJDD6KxeDgSoc8ibLETtBPBUH2rl0vA24qnN" style="border: none; transform: rotate(0rad);" width="215" /><img height="400" src="https://lh6.googleusercontent.com/s5HC0DEgRDiIye09J6e1lyA11rMH2ZM0Z7pYRGzTe6aX5_FScW4663ikKd_x9IbRVzaAyy5OkYQQ3hrLZEisLgpDG0bbY7p3JyU65aac8nUMifC59M-3lxTyugakaD9aVUDfRc3A" style="border: none; font-size: 11pt; transform: rotate(0rad);" width="211" /></span></div><br /><span id="docs-internal-guid-95785903-ab43-eade-86c6-144b457dc3c6"></span><br /><br />"We update our menu every month with new and limited time offers. With the new Google My Business Menu feature we now have control over our menu data. We are able to provide our menu updates directly to Google via the <a href="http://www.yext.com/solutions/google-my-business-management/">Yext</a> platform, and our updated menu populates on Google almost instantly. We no longer have to worry about old, unavailable menu items from third party sites showing up." said Sonja Uppal, Arby’s Digital Marketing Supervisor. <br /><br /><br /><br />Developers can now use the Google My Business API to publish menu data to each of their business locations and see it update on Google in minutes. They’ll be able to publish multiple menus (e.g. breakfast, lunch, dinner) with sections (e.g. salads, entrees, dessert, drinks) that include individual menu items, each with a rich description, photo and price. It's easy to get started with our new <a href="https://developers.google.com/my-business/">developer documentation</a>. <br /><br /><br /><br />Here's a simple JSON request that shows how to publish a simple breakfast menu to a location:<br /><br /><br /><br /><span style="font-family: "courier new" , "courier" , monospace;">REQUEST:</span><br /><br /><pre>PATCH<br />https://mybusiness.googleapis.com/v3/123456/locations/<br />654321?languageCode=en-US&fieldMask=priceLists<br /><br /> {<br /> "priceLists": [<br /> {<br /> "priceListId": "Breakfast",<br /> "labels": [<br /> {<br /> "displayName": "Breakfast",<br /> "description": "Tasty Google Breakfast",<br /> "languageCode": "en-US"<br /> }<br /> ],<br /> "sourceUrl": "http://www.google.com/todays_menu",<br /> "sections": [<br /> {<br /> "sectionId": "entree_menu",<br /> "labels": [<br /> {<br /> "displayName": "Entrées",<br /> "description": "Breakfast Entrées",<br /> "languageCode": "en-US"<br /> }<br /> ],<br /> "items": [<br /> {<br /> "itemId": "scramble",<br /> "labels": [<br /> {<br /> "displayName": "Big Scramble",<br /> "description": "A delicious scramble filled with Potatoes, Eggs, <br /> Bell Peppers, and Sausage",<br /> "languageCode": "en-US"<br /> }<br /> ],<br /> "price": {<br /> "currencyCode": "USD",<br /> "units": "12",<br /> "nanos": "200000000"<br /> },<br /> "photoUrls": [<br /> "http://www.google.com/images/breakfast_scramble1.jpg",<br /> "http://www.google.com/images/breakfast_scramble2.jpg"<br /> ]<br /> },<br /> {<br /> "itemId": "steak_omelette",<br /> "labels": [<br /> {<br /> "displayName": "Steak Omelette",<br /> "description": "Three egg omelette with grilled prime rib, <br /> fire-roasted bell peppers and onions, saut\u00e9ed mushrooms<br /> and melted Swiss cheese",<br /> "languageCode": "en-US"<br /> }<br /> ],<br /> "price": {<br /> "currencyCode": "USD",<br /> "units": "15",<br /> "nanos": "750000000"<br /> }<br /> }<br /> ]<br /> }<br /> ]<br /> }<br /> ]<br />}</pre><br /><br /><br /><span style="font-family: "courier new" , "courier" , monospace;">RESPONSE:</span><br /><br /><br /><br />Response will contain an instance of the updated <a href="https://developers.google.com/my-business/reference/rest/v3/accounts.locations#Location">Location</a> Object.<br /><br /><br /><br />To learn more about the Google My Business API and to apply for access, visit our <a href="https://developers.google.com/my-business/">developer page</a>. Questions or feedback? Contact the API team on the <a href="https://www.en.advertisercommunity.com/t5/Google-My-Business-API/bd-p/gmb-api#">Google My Business API Forum</a>.<br /><br /><br /><br /><table><tbody><br /><tr> <td style="width: 80px;"><br /><br /><div class="separator" style="clear: both; text-align: center;"><br /><img alt="author image" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirnAiIje4OoWdbv4zknB4DSgyY8UNMIq3vu-KGuGa_Hee6k-6ZrBePZVNETw7Zk2DIglOztP0kqvO9mmQNfaCLISOXFUbqCDgrfJBFwV10SeplSKSWg1EqIIh2iaK_3Q2HQny9uyij2Qc/s1600/atendulkar.jpeg" style="border-radius: 50%; width: 80px;" /></div><br /></td> <td><i>Posted by Aditya Tendulkar, Product Manager, Google My Business</i></td></tr><br /></tbody></table><br /><br /><br /><span style="font-size: x-small;">*Google Trends</span>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8566213237592900575.post-76273187216520216732017-03-14T14:39:00.000-07:002018-04-25T13:43:53.113-07:00A new issue tracker for Google Maps APIs<span class="post-author"><i>Posted by Kasia Derc-Fenske, Technical Solutions Engineer Manager, Google Cloud and Jesse Scherer, Technical Program Manager, Cloud Platform Support</i></span><br /><br /><br /><br />Starting today, we’re working on facilitating better collaboration between you and the Google Maps APIs product teams, by upgrading to Issue Tracker, a tool we also use internally at Google. We have migrated all issues from the old <a href="http://code.google.com/">code.google.com</a> tracker to the new Issue Tracker hosted at <a href="http://issuetracker.google.com/">issuetracker.google.com</a>.<br /><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><br /><tr><td style="text-align: center;"><img alt="issuetracker.png" height="259" src="https://lh6.googleusercontent.com/zoQcbB1IoHHa4P-5PkT-vJr6SaS7xByXvZzOittcgRWng37oTkrUerqktCOZrZjgvTLLsuEWc-pKwdrGC9KIICp5uYI5BsbtblNn5JcNZ2MBzmApD04x_V-tBmtBDJj5H9l0imOb" style="border: none; font-size: 11pt; margin-left: auto; margin-right: auto; transform: rotate(0rad);" width="305" /></td></tr><br /><tr><td class="tr-caption" style="text-align: center;">New Google Issue Tracker</td></tr><br /></tbody></table><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><br /><tr><td style="text-align: center;"><img alt="code_small.png" height="258" src="https://lh4.googleusercontent.com/GTaHryu9yBF12a2kXXS-bwHwhtwmgU4gNo2AziZaTz02E4zjaCZ7jKSsFF02lGQl-bnU3pY0GIDj0pJvmKLY57KzgoSuhTtDdLwkozbRAEuSURO8lgqtEX8Nz_9Sw4sLyyoCgmNY" style="border: none; margin-left: auto; margin-right: auto; transform: rotate(0rad);" width="309" /></td></tr><br /><tr><td class="tr-caption" style="text-align: center;">Old Google Code issue tracker</td></tr><br /></tbody></table><br /><div class="separator" style="clear: both; text-align: center;"><br /><span style="font-family: "arial"; font-size: 11pt; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"></span></div><br /><span id="docs-internal-guid-fc644524-cd8e-ac8f-18b3-d06518db45a6"></span><br /><br />Getting started with Google Issue Tracker should be easy. Check out our <a href="https://developers.google.com/issue-tracker/">documentation</a> for more information about how to create, edit, search, and group issues. By default, Google Issue Tracker only displays issues assigned to you, but you can easily <a href="https://developers.google.com/issue-tracker/guides/set-a-homepage">change that</a> to show a hotlist of your choice, a bookmark group or saved searches. You can also <a href="https://developers.google.com/issue-tracker/guides/set-notification-preferences">adjust notification settings</a> by clicking the gear icon in the top right corner and selecting settings. For more information, check out the discussion of notification levels in the <a href="https://developers.google.com/issue-tracker/concepts/settings#notification_levels">developer documentation</a>.<br /><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><br /><tr><td style="text-align: center;"><img alt="issuetracker_maps_bookmark_group.png" height="360" src="https://lh5.googleusercontent.com/8-fGDtckUnRH_mFCIcnj2_EXzJqgvUZHuXqxFoxBzi51ii5vFWhBOIM4HND0xjn3WG0PK_DYhztgLGYhgo8Pu_oawRhyTO8-mS3KzWnaXdoXh8aQKomaIpVVyp9nYvjeQbsstoYc" style="border: none; margin-left: auto; margin-right: auto; transform: rotate(0rad);" width="624" /></td></tr><br /><tr><td class="tr-caption" style="text-align: center;">The Google Maps APIs bookmark group</td></tr><br /></tbody></table><br /><div class="separator" style="clear: both; text-align: center;"><br /><span style="font-family: "arial"; font-size: 11pt; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"></span></div><br /><span id="docs-internal-guid-fc644524-cd91-670e-e687-e044b37151f3"></span><br /><br /><h4><br />Searching for product-specific issues</h4><br />Opening any code.google.com issue link will automatically redirect you to the <a href="https://issuetracker.google.com/">new system</a>. You’ll be able to find all of the issues from code.google.com in the Issue Tracker, including any issue you have reported, commented on, or <a href="https://developers.google.com/issue-tracker/guides/subscribe#starring_an_issue">starred</a>. If you feel like anything is missing, <a href="https://issuetracker.google.com/issues/new?component=188876">let us know</a> (how meta!) -- we have backups available! <br /><br /><br /><br />Google Issue Tracker organizes issues into a component hierarchy. Starting at the <a href="https://issuetracker.google.com/bookmark-groups/76561">Google Maps APIs bookmark group</a>, you can drill down to a particular product's issues. And because each product (and some product features) have their own component, you can easily search for them. For example, you can view all <a href="https://issuetracker.google.com/savedsearches/558438">Google Maps JS API v3</a> or <a href="https://issuetracker.google.com/savedsearches/558482">Places API reports</a>, which correspond to the old tracker’s full list for Maps API JS v3 and Places API. You can find the full list of Google Maps APIs components in the <a href="https://developers.google.com/maps/support/#issue_tracker">support section</a> of our developer documentation. To search within those issues, leave the component ID in the search bar; removing it will search public issues from all Google products. <br /><br /><br /><br />For detailed instructions on how to create issues check out <a href="https://developers.google.com/issue-tracker/guides/create-issue-ui">this guide</a>, Still have questions? Take a peek at our <a href="https://developers.google.com/issue-tracker/references/faq">FAQ</a>. If you can’t find the answer please let us know by commenting on this post.<br /><br /><br /><br /><h4><br />The Google Maps APIs team wants your feedback!</h4><br />Your feedback is important to us and makes a big difference! Make sure to take advantage of the starring feature for any issues you’re interested in to help us prioritize. As an example, after reviewing your feedback, we recently implemented Styled Maps for <a href="https://issuetracker.google.com/issues/35821820">Google Maps Android API</a> (received 365 stars) and <a href="https://issuetracker.google.com/issues/35822614">Google Maps SDK for iOS</a> (received 245 stars).<br /><br /><br /><br />Please continue helping us improve our products by reporting issues and feature requests!Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8566213237592900575.post-24367347091012849612017-03-07T08:22:00.000-08:002018-04-25T13:43:53.546-07:00Google Maps APIs sessions at Google Next ‘17Next 2017 is just a few days away and we’re looking forward to three days of insightful conversations, amazing technology and, of course, beautiful San Francisco. This year, Google Maps APIs business leaders, engineers, product managers, technical writers, and developer advocates are traveling from Sydney, New York and Mountain View to spend time with our customers and partners. We’re looking forward to sharing how our APIs help build the best location-based experiences for your customers.<br /><br /><br /><br />Here are our sessions at Google Cloud Next ‘17:<br /><br /><br /><br /><b>Day 1 (March 8)</b><br /><br /><br /><br /><a href="https://cloudnext.withgoogle.com/schedule#target=make-better-business-decisions-with-google-maps-bbaa751d-6aef-44ea-a785-7496831d118d">Make better business decisions with Google Maps</a>, Dave McClusky (Global Head of Customer Engineering), Adam Evans (Head of Field Sales, US/Canada).<br /><br />11:20am room 2010<br /><br /><br /><br /><div><br /><a href="https://cloudnext.withgoogle.com/schedule#target=location-as-a-force-multiplier-redefining-whats-possible-for-enterprises-5a53639e-032d-4a0b-a626-6044ca7494ac">Location as a force multiplier: redefining what's possible for enterprises</a>, Gayathri Rajan (VP Product Management).<br /><br />1:20pm room 3018<br /><br /><br /></div><br /><div><br /><a href="https://cloudnext.withgoogle.com/schedule#target=development-best-practices-for-google-maps-mobile-and-web-service-apis-00896417-9959-4a4e-b7f3-2358b44e2369">Development best practices for Google Maps mobile and web service APIs</a>, Dave McClusky (Global Head of Customer Engineering), Emily Keller (Technical Program Manager).<br /><br />2:40pm room 3014<br /><br /><br /></div><br /><div><br /><a href="https://cloudnext.withgoogle.com/schedule#target=google-maps-apis-overview-dd1b1e3c-4310-4653-9c8f-fb0042791261">Flexible development with the Google Maps APIs</a>, Ankur Kotwal (Developer Advocate).<br /><br />4:00pm room 3018<br /><br /><ul></ul><br /><br /><br /><b>Day 2 (March 9)</b><br /><br /><br /><br /><a href="https://cloudnext.withgoogle.com/schedule#target=the-power-of-geolocation-338c9315-78e3-4246-afe1-9d62d672a764">The power of Geolocation</a>, Laurence Moroney (Developer Advocate).<br /><br />11:30am room 3018<br /><br /><br /></div><br /><div><br /><a href="https://cloudnext.withgoogle.com/schedule#target=location-powered-on-demand-economy-providing-value-with-google-maps-apis-bff97736-4da7-4856-a918-f458072eebd5">Location-powered, on-demand economy: providing value with Google Maps APIs</a>, Vishal Goenka (Group Product Manager).<br /><br />1:30pm room 3018<br /><br /><a href="https://cloudnext.withgoogle.com/schedule#target=location-based-gaming-trends-and-outlook-11c1184f-f7f8-4149-8ab6-270a000536ce"><br /><br /></a></div><br /><div><br /><a href="https://cloudnext.withgoogle.com/schedule#target=location-based-gaming-trends-and-outlook-11c1184f-f7f8-4149-8ab6-270a000536ce">Real world gaming: using location data to build immersive mobile experiences</a>, Clementine Jacoby (Associate Product Manager).<br /><br />2:40pm room 3018<br /><br /><br /></div><br /><div><br /><a href="https://cloudnext.withgoogle.com/schedule#target=the-primary-key-to-location-intelligence-ed47c4ca-8a5c-4de2-9f0c-e4bb2c09e1a9">The primary key to location intelligence</a>, Ankur Kotwal (Developer Advocate), Laurence Moroney (Developer Advocate).<br /><br />4:00pm room 3018<br /><br /><ul></ul><br /><br /><br />We hope you’re able to attend these sessions to learn directly from the Google Maps APIs team. In the Application Development Showcase, we will also have a number of innovative demos built on the Maps APIs. And, don’t forget to stop by the Meet the Experts zone on Level 1 of Moscone West to chat. If you’re not able to join us in person this year, you can always keep up with our activities via Twitter or Google+.<br /><br /><table><tbody><br /><tr> <td style="width: 80px;"><br /><br /><div class="separator" style="clear: both; text-align: center;"><br /><img alt="author image" border="0" src="https://lh6.googleusercontent.com/fFbsXRqdAUCsvJfx1QCUijH_QlBo0hpeyvMi7HokU8N8rhjyduTHq_QojvMKqbECNZiH0-rM7FT8ZKTIFYDydoUf3Rh6oEc1fVP-IanZEpCBskRMGWaBup6Qms_a5R5k0dqfMdV9" style="border-radius: 50%; width: 80px;" /></div><br /></td> <td><i>Posted by Ankur Kotwal, Developer Advocate at Google</i></td></tr><br /></tbody></table><br /></div><br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8566213237592900575.post-36956303209943130792017-02-20T08:33:00.000-08:002018-04-25T13:43:53.979-07:00Do you like the new look of the Maps APIs tutorials?Until recently, our docs have focused on describing features rather than telling a story. We chatted to some developers and came up with a new design for our tutorials. We’d love to know what you think of them. <br /><br /><br /><br />Developers tell us they want quick, straightforward guides on how to integrate the Google Maps APIs into their app. The most common thing people want to do is to add a map with a marker. <i>Just show me how to do that</i>.<br /><br /><span style="clear: right; float: right; font-family: "arial"; font-size: 11pt; margin-bottom: 1em; margin-left: 1em; vertical-align: baseline; white-space: pre-wrap;"><img height="640" src="https://lh4.googleusercontent.com/jBk1WS991mnU9vLgQX8t62H0-TFE0Z3e9G830E6F2Zlyxqg9jOFNeVyz7Vp9JYzK0DvDBwbksNKP5_DL5wxMhQaZzYrSo0aaID_yBcHHRmzHPYYzG_udBqDukVB6AKDi0XZPqWaM" style="border: none; transform: rotate(0rad);" width="329" /></span><span id="docs-internal-guid-152d5ecf-47f3-9710-94fd-99eb7bc6e2fe"></span><br /><br /><br /><br />Developers are also looking for complete, step-by-step tutorials for the most common use cases. <i>Guides that go all the way from a to z, with no deviations</i>. <br /><br /><br /><br />And they want code. Front and foremost. <i>All the code</i>.<br /><br /><br /><br />Here are some examples of the new-look tutorials:<br /><br /><br /><br /><ul><br /><li>Adding a map with a marker - <a href="https://developers.google.com/maps/documentation/javascript/adding-a-google-map?utm_source=welovemapsdevelopers&utm-medium=blog&utm_campaign=mdr-devdocs" target="_blank">web</a>, <a href="https://developers.google.com/maps/documentation/android-api/map-with-marker?utm_source=welovemapsdevelopers&utm-medium=blog&utm_campaign=mdr-devdocs" target="_blank">Android</a> and <a href="https://developers.google.com/maps/documentation/ios-sdk/map-with-marker?utm_source=welovemapsdevelopers&utm-medium=blog&utm_campaign=mdr-devdocs" target="_blank">iOS</a>.</li><br /><li>Styling your map - <a href="https://developers.google.com/maps/documentation/javascript/styling?utm_source=welovemapsdevelopers&utm-medium=blog&utm_campaign=mdr-devdocs" target="_blank">web</a>, <a href="https://developers.google.com/maps/documentation/android-api/styling?utm_source=welovemapsdevelopers&utm-medium=blog&utm_campaign=mdr-devdocs" target="_blank">Android</a> and <a href="https://developers.google.com/maps/documentation/ios-sdk/styling?utm_source=welovemapsdevelopers&utm-medium=blog&utm_campaign=mdr-devdocs" target="_blank">iOS</a>.</li><br /><li>Showing the business or other point of interest at the current location - <a href="https://developers.google.com/maps/documentation/android-api/current-place-tutorial?utm_source=welovemapsdevelopers&utm-medium=blog&utm_campaign=mdr-devdocs" target="_blank">Android</a> and <a href="https://developers.google.com/maps/documentation/ios-sdk/current-place-tutorial?utm_source=welovemapsdevelopers&utm-medium=blog&utm_campaign=mdr-devdocs" target="_blank">iOS</a>.</li><br /><li>All the redesigned tutorials for the <a href="https://developers.google.com/maps/documentation/javascript/importing_data?utm_source=welovemapsdevelopers&utm-medium=blog&utm_campaign=mdr-devdocs" target="_blank">Google Maps JavaScript API</a>.</li><br /></ul><br /><br /><br />Each tutorial provides the entire development project, especially useful for the native mobile APIs. The doc page goes hand in hand with a new sample app on GitHub. For example, here’s the code for the <a href="https://github.com/googlemaps/android-samples/tree/master/tutorials/CurrentPlaceDetailsOnMap" target="_blank">current place tutorial on Android</a>.<br /><br /><br /><br />Each page includes a visual illustration of what you’ll achieve by following the tutorial. A working demo is ideal (such as the <a href="https://developers.google.com/maps/documentation/javascript/earthquakes?utm_source=welovemapsdevelopers&utm-medium=blog&utm_campaign=mdr-devdocs" target="_blank">visualizing data tutorial</a> for the Google Maps JavaScript API), otherwise a screenshot (as we’ve done for the <a href="https://developers.google.com/maps/documentation/android-api/current-place-tutorial?utm_source=welovemapsdevelopers&utm-medium=blog&utm_campaign=mdr-devdocs" target="_blank">native mobile APIs</a>).<br /><br /><br /><br />We want to make it easy for developers to find the guides. So, we’re adding tutorial showcases to the API overview pages. To date we’ve created the showcases for <a href="https://developers.google.com/maps/documentation/ios-sdk/?utm_source=welovemapsdevelopers&utm-medium=blog&utm_campaign=mdr-devdocs" target="_blank">Android</a>, <a href="https://developers.google.com/maps/documentation/ios-sdk&utm-medium=blog&utm_campaign=mdr-devdocs" target="_blank">iOS</a>, and <a href="https://developers.google.com/maps/documentation/javascript/?utm_source=welovemapsdevelopers&utm-medium=blog&utm_campaign=mdr-devdocs" target="_blank">JavaScript</a>. We’re also collecting together <a href="https://developers.google.com/maps/documentation/javascript/adding-a-google-map?utm_source=welovemapsdevelopers&utm-medium=blog&utm_campaign=mdr-devdocs" target="_blank">all the tutorials</a> for the Maps JavaScript API in one place. <br /><br /><br /><br /><div class="separator" style="clear: both; text-align: left;"><br /><span style="font-family: "arial"; font-size: 11pt; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"></span><a href="https://lh5.googleusercontent.com/lvwzdr4NVCE4VGMikahe3UOwbv4mxpztCO0TsNpLbs4uAFJGIVuB4ZfC7d8ujbfarjz8ayTJIMj5H_ZFuJEqlxDSZVb3Fj8naX5_Au0e2pfbyaQaZzU6gp4R3OTsR2JfNk44846D" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="220" src="https://lh5.googleusercontent.com/lvwzdr4NVCE4VGMikahe3UOwbv4mxpztCO0TsNpLbs4uAFJGIVuB4ZfC7d8ujbfarjz8ayTJIMj5H_ZFuJEqlxDSZVb3Fj8naX5_Au0e2pfbyaQaZzU6gp4R3OTsR2JfNk44846D" style="border: medium none; transform: rotate(0rad);" width="602" /></a></div><br /><span id="docs-internal-guid-152d5ecf-47f5-0b0b-3434-2b903388700f"></span><br /><br />We’ve made a good start, but there’s plenty of change still to come. What would you like to see more of? Are we on the right track? The tech writing team would love your ideas—please add comments to this post.<br /><br /><table><tbody><br /><tr> <td style="width: 80px;"><br /><br /><div class="separator" style="clear: both; text-align: center;"><br /><img alt="author image" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjHjWhvyxzN25M_KKMjmupv6bEo4cuA2JFWN7cDypRpeg9rA6BEhPaOsHXABiOkcmLS7sbqg6Pb91yg88yat_qYESUQWGxHjKDQoCMErrT2Virv4ByOw5bxIVM2YS0kC-1jmfhput4cmw/s1600/Sarah_cropped.JPG" style="border-radius: 50%; width: 80px;" /></div><br /></td> <td><i>Posted by Sarah Maddox, Technical Writer, Google Maps APIs</i></td></tr><br /></tbody></table><br /><br /><br /><br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8566213237592900575.post-92056822233099800162017-02-15T16:04:00.000-08:002018-04-25T13:43:54.411-07:00Styling and custom data for polylines and polygons in the Google Maps Android APIPolygons, polylines and ground overlays are useful tools to make your maps work for your users. Today we are rolling out even more custom styling and data object association features in the Google Maps Android API to further help you customize your maps. <br /><br /><h4><br /><br />Style your shapes: polygons and polylines</h4>We brought <a href="https://maps-apis.googleblog.com/2016/09/custom-map-styling-with-google-maps.html" target="_blank">custom map styling</a> to mobile platforms last year to help you match your map styles to your brands, apps, and more. We've seen hot pink, cool silver (shown in screenshots below), and everything in between, helping users feel at home and see what's relevant in your maps. Now we're expanding styling options for polygons and polylines, allowing you to use new stroke patterns for outlines, different caps and joints, and more, on Android devices.<br /><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><br /><tr><td style="text-align: center;"><img alt="Polygons.png" height="640" src="https://lh3.googleusercontent.com/BZu23pS59UUNP7SFLucgZ_sVsL4foHuFGdxLaYFl0rHuUvQSeKGziGURLhcthFi6GfPXiUT5NeZc2TtUrjngVDn0vuBKaAZQ4Mt1D71GIOGA6orosVYaQ2W7RxYxdSVmn1McgJhc" style="border: none; margin-left: auto; margin-right: auto; transform: rotate(0rad);" width="360" /></td></tr><br /><tr><td class="tr-caption" style="text-align: center;">Your shape, your style. Now on Android</td></tr><br /></tbody></table><div class="separator" style="clear: both; text-align: center;"><span style="background-color: white; color: #212121; font-family: "arial"; font-size: 10pt; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"></span></div><span id="docs-internal-guid-84f87d90-3dab-a3bd-e0db-d90f33bdf99f"></span><br /><br />Now you have plenty of options to customize your shapes. You can change the stroke patterns in polylines and polygon outlines from solid lines to custom dashes, dots, or gaps. In polylines and polygons, you can use a bevel or round joint type rather than fixed miter joints. You can also change the cap at each end of a polyline to a square or round cap, or even specify a custom bitmap for the cap. Have a favorite fancy arrowhead you've always wanted to put in? Do it–let your imagination run wild!<br /><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><br /><tr><td style="text-align: center;"><img alt="Polylines.png" height="597" src="https://lh4.googleusercontent.com/N-qoWwlu6GDKdXyiJra-kD96mFOMG43KjQErKM7IsFDbe9EDZzjK3eIntfdZcZLECGxqbA4Wko-1QxZWh9sC39YeZL1igVxlcyoQOasuWZL2NtYUflzUI09yLmJLxP7xdDokmXZc" style="border: none; margin-left: auto; margin-right: auto; transform: rotate(0rad);" width="335" /></td></tr><br /><tr><td class="tr-caption" style="text-align: center;">Get your styles in line. Now on Android.</td></tr><br /></tbody></table><div class="separator" style="clear: both; text-align: center;"><span style="background-color: white; color: #212121; font-family: "arial"; font-size: 10pt; font-style: italic; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"></span></div><span id="docs-internal-guid-84f87d90-3dac-8239-84e5-19eb266d1de8"></span><br /><br />Learn how to set and customize these new styles in our new <a href="https://developers.google.com/maps/documentation/android-api/polygon-tutorial" target="_blank">polyline and polygon tutorial</a> or dive straight into the documentation to get started—check out the <a href="https://developers.google.com/maps/documentation/android-api/shapes#stroke_pattern" target="_blank">stroke patterns</a>, for example. Note that these new styling features are available in the full Google Maps Android API only, not in lite mode.<br /><br /><br /><br /><h4>Store custom data with polygons, polylines, and ground overlays</h4>Until today, you could only store data objects with markers. We're extending this functionality to polygons, polylines, circles, and ground overlays. This means you can extend your geometry objects to have any kind of data or properties you want. You no longer need to manage your data associations to your mapping visualizations–nobody enjoys writing that code anyway. For example, if you supply a set of ground overlays showing home floor plans you could store a database reference with each one. The database can contain anything! It could hold real estate listings, and you could open one of those listing URLs on click. <br /><br /><br /><br />For further information, review our <a href="https://developers.google.com/maps/documentation/android-api/releases" target="_blank">release notes</a>.<br /><br /><br /><br />Thank you for using the Google Maps Android API! Be sure to share your feedback or any issues in the <a href="https://code.google.com/p/gmaps-api-issues/" target="_blank">issue tracker</a>.<br /><br /><table><tbody><br /><tr> <td style="width: 80px;"><br /><br /><div class="separator" style="clear: both; text-align: center;"><img alt="author image" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIYgM7AZG0YOoBIVatrhAXTQc4oBgIYMTyRXWacPlDxuTglRNylLFcSj0eOlIDyj4DCQa7fHWhgbVIcoL4mavcPcep2mGli-ZhxudkcumeEdZArUA0EH-0qrzUMJ2ZLv9OcO0NOWIxkjQ/s320/Joel_K.jpg" style="border-radius: 50%; width: 80px;" /></div></td> <td><i>Posted by Joel Kalmanowicz, Product Manager, Google Maps APIs</i></td></tr><br /></tbody></table><br /><br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8566213237592900575.post-59641229076457613972017-01-30T08:08:00.000-08:002018-04-25T13:43:54.846-07:00Open-Sourcing Google Earth Enterprise<span class="post-author"><i>Editors Note: Google Earth Enterprise (GEE) launched on <a href="https://github.com/google/earthenterprise">GitHub</a> on March 23, 2017. You can also get more information on the <a href="http://www.opengee.org/">GEE project site</a> created by our partners.</i></span><br /><br /><br /><br /><br /><br /><span class="post-author"><i>Posted by Avnish Bhatnagar, Senior Technical Solutions Engineer, Google Cloud</i></span><br /><br /><br /><br />We are excited to announce that we are open-sourcing Google Earth Enterprise (GEE), the enterprise product that allows developers to build and host their own private maps and 3D globes. With this release, GEE Fusion, GEE Server, and GEE Portable Server source code (all 470,000+ lines!) will be published on GitHub under the <a href="http://www.apache.org/licenses/LICENSE-2.0.txt" target="_blank">Apache2</a> license in March.<br /><br /><div class="separator" style="clear: both; text-align: center;"><br /><span style="background-color: white; color: #333333; font-family: "roboto"; font-size: 10pt; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="Screen Shot 2017-01-26 at 2.51.24 PM.png" height="287" src="https://lh3.googleusercontent.com/ZGQH04lc2mYmw1JEx0Jvwiardw5H6cwrmRhSj75pSKF6r1FRwwYUBUIBnTE6n5uY071XV7__mmVDKdV6B1tEpUQwFNYnt1HBfxiz3Hrqbw99HUFQKVFnht11EkPz70xCtuhFlCi3" style="border: none; transform: rotate(0rad);" width="640" /></span></div><br /><span id="docs-internal-guid-e51b3f20-f01a-7a63-6c49-7cb8b786c6d1"></span><br /><br />Originally launched in 2006, Google Earth Enterprise provides customers the ability to build and host private, on-premise versions of Google Earth and Google Maps. In March 2015, we announced the deprecation of the product and the end of all sales. To provide ample time for customers to transition, we have provided a two year maintenance period ending on March 22, 2017. During this maintenance period, product updates have been regularly shipped and technical support has been available to licensed customers. <br /><br /><br /><br />Feedback is important to us and we’ve heard from our customers that GEE remains in-use in mission-critical applications. Many customers have not transitioned to other technologies. Open-sourcing GEE allows our customer community to continue to improve and evolve the project in perpetuity. Note that the implementations for Google Earth Enterprise Client, Google Maps JavaScript® API V3 and Google Earth API will not be open sourced. The Enterprise Client will continue to be made available and updated. However, since GEE Fusion and GEE Server are being open-sourced, the imagery and terrain quadtree implementations used in these products will allow third-party developers to build viewers that can consume GEE Server Databases.<br /><br /><br /><br />We’re thankful for the help of our GEE partners in preparing the codebase to be migrated to GitHub. It’s a lot of work and we cannot do it without them. It is our hope that their passion for GEE and GEE customers will serve to lead the project into its next chapter. <br /><br /><br /><br />Looking forward, GEE customers can use Google Cloud Platform (GCP) instead of legacy on-premises enterprise servers to run their GEE instances. For many customers, GCP provides a scalable and affordable infrastructure as a service where they can securely run GEE. Other GEE customers will be able to continue to operate the software in disconnected environments. However, we believe that the advantages of incorporating even some of the workloads on GCP will become apparent (such as processing large imagery or terrain assets on GCP that can be downloaded and brought to internal networks, or standing up user-facing Portable Globe Factories).<br /><br /><br /><br />Moreover, GCP is increasingly used as a source for geospatial data. Google’s <a href="https://earthengine.google.com/" target="_blank">Earth Engine</a> has made available <a href="https://cloud.google.com/storage/docs/public-datasets/" target="_blank">over a petabyte of raster datasets</a> which are readily accessible and available to the public on Google Cloud Storage. Additionally, Google uses Cloud Storage to provide data to customers who purchase <a href="https://goo.gl/hxHoaj" target="_blank">Google Imagery</a> today. Having access to massive amounts of geospatial data, on the same platform as your flexible compute and storage, makes generating high quality Google Earth Enterprise Databases and Portables easier and faster than ever.<br /><br /><br /><br />We will be sharing a series of white papers and other technical resources to make it as frictionless as possible to get open source GEE up and running on Google Cloud Platform. We are excited about the possibilities that open-sourcing enables, and we trust this is good news for our community. We will be sharing more information when we launch the code in March on GitHub. For general product information, visit the <a href="https://support.google.com/earthenterprise/#topic=2802998" target="_blank">Google Earth Enterprise Help Center</a>. Review the <a href="https://www.youtube.com/watch?v=_9RbsZAfBcI&list=PLOU2XLYxmsIJ7AvVzfskSrHEWVQDmf5JZ" target="_blank">essential</a> and <a href="https://www.youtube.com/watch?v=Q4xn3Gg2hoE&index=10&list=PLOU2XLYxmsIIVmVmQe1Pvku-9OVteG2Il" target="_blank">advanced</a> training for how to use Google Earth Enterprise, or learn more about the benefits of <a href="https://cloud.google.com/" target="_blank">Google Cloud Platform</a>.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8566213237592900575.post-68016357390185985562017-01-10T14:38:00.000-08:002018-04-25T13:43:55.281-07:00Introducing insights in the Google My Business API<span class="post-author"><i>Posted by Aditya Tendulkar, Product Manager, Google My Business</i></span><br /><br /><br /><br />Today we are introducing business location insights in the Google My Business API to make it easier for third-party application developers and large multi-location brands to programmatically access location insights such as total number of searches, views and actions that let business owners track and analyze where and how people are finding them on Google. <br /><br /><br /><br />Developers can now use the Google My Business API to request up to 18 months worth of data for each of their business locations and build applications that aggregate and visualize these insights in actionable ways. For example, a coffee shop with hundreds of locations can now easily compare and understand trends across their different locations such as number of user views, click requests for directions, phone calls, and more. They can use these insights to better allocate resources across locations and track how marketing activities affect their business.<br /><br /><br /><br />This new API functionality brings the features from our Google My Business dashboard into your own data analysis tools. Web interface users might generate a chart of the last 90 days of Google My Business information:<br /><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><br /><tr><td style="text-align: center;"><img height="313" src="https://lh4.googleusercontent.com/r-0MAm9nX2SUmvVDyDIL2em-Y-D_rEsYN9o_4QQdDTmTbBJiGP27Wxhltmt0rpft8rEEcAperkPVGKpNWD8QcJor4jxNODKQLs5c0b9KTNFiHRMP4yPYHBXkLrn3gTHY8aO8gbgK" style="border: none; margin-left: auto; margin-right: auto; transform: rotate(0rad);" width="624" /></td></tr><br /><tr><td class="tr-caption" style="text-align: center;">Example data visible via the Google My Business web dashboard</td></tr><br /></tbody></table><br /><div class="separator" style="clear: both; text-align: center;"><br /><span style="background-color: white; font-family: "roboto"; font-size: 14.6667px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"></span></div><br /><span id="docs-internal-guid-dbfc359e-89e8-8318-8528-5d2c26d77ae2"></span><br /><br />Now the underlying data is available via the API. It's easy to get started with our new developer <a href="https://developers.google.com/my-business/" target="_blank">documentation</a>. Here's a simple HTML request that provides a breakdown of how many searches a business listing is getting on Google Search and Google Maps:<br /><br /><br /><br />REQUEST:<br /><br /><pre>POST https://mybusiness.googleapis.com/v3/123456/locations:reportInsights<br />{<br /> "locationNames": [<br /> “accounts/110714876951578713336/locations/14372810722634034850”,<br /> ],<br /> “basicRequest” : {<br /> "metricRequests": [<br /> {<br /> "metric": QUERIES_DIRECT,<br /> },<br /> {<br /> "metric": QUERIES_INDIRECT,<br /> }<br /> ],<br /> "timeRange": {<br /> "startTime": 2016-10-12T01:01:23.045123456Z,<br /> "endTime": 2017-01-10T23:59:59.045123456Z,<br /> },<br /> },<br />}</pre><br /><br /><br />RESPONSE:<br /><br /><pre>{<br /> "locationMetrics": [<br /> {<br /> "locationName": "accounts/110714876951578713336/locations/<br /> 14372810722634034850",<br /> "timeZone": "America/Los_Angeles",<br /> "metricValues": [<br /> {<br /> "metric": "QUERIES_DIRECT",<br /> "totalValue": {<br /> "metricOption": "AGGREGATED_TOTAL",<br /> "timeDimension": {<br /> "timeRange": {<br /> "startTime": "2016-10-12T04:00:00Z",<br /> "endTime": "2017-01-10T04:00:00Z"<br /> }<br /> },<br /> "value": "36738"<br /> }<br /> },<br /> {<br /> "metric": "QUERIES_INDIRECT",<br /> "totalValue": {<br /> "metricOption": "AGGREGATED_TOTAL",<br /> "timeDimension": {<br /> "timeRange": {<br /> "startTime": "2016-10-12T04:00:00Z",<br /> "endTime": "2017-01-10T04:00:00Z"<br /> }<br /> },<br /> "value": "81770"<br /> }<br /> }<br /> ]<br /> }<br /> ]<br />}</pre><br /><br /><br />Here is an example that captures insights on the places from where customers request driving directions to a business:<br /><br /><br /><br />REQUEST:<br /><br /><pre>POST https://mybusiness.googleapis.com/v3/123456/locations:reportInsights<br />{<br /> “locationNames": [<br /> “accounts/110714876951578713336/locations/14372810722634034850”,<br /> ],<br /> "drivingDirectionsRequest”: {<br /> "numDays": NINETY,<br /> },<br />}</pre><br /><br /><br />RESPONSE (truncated to show first 3 results):<br /><br /><pre>{<br /> "locationDrivingDirectionMetrics": [<br /> {<br /> "locationName": "accounts/110714876951578713336/locations/<br /> 14372810722634034850",<br /> "topDirectionSources": [<br /> {<br /> "dayCount": 90,<br /> "regionCounts": [<br /> {<br /> "latlng": {<br /> "latitude": 37.789,<br /> "longitude": -121.392<br /> },<br /> "label": "94105",<br /> "count": "2980",<br /> },<br /> {<br /> "latlng": {<br /> "latitude": 37.779,<br /> "longitude": -122.421<br /> },<br /> "label": "94102",<br /> "count": "887",<br /> },<br /> {<br /> "latlng": {<br /> "latitude": 37.773,<br /> "longitude": -122.410<br /> },<br /> "label": "94103",<br /> "count": "886",<br /> }<br /> ]<br /> }<br /> ],<br /> "timeZone": "America/Los_Angeles"<br /> }<br /> ]<br />}</pre><br /><div class="separator" style="clear: both; text-align: center;"><br /><span style="font-family: "roboto"; font-size: 14.6667px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"></span></div><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><br /><tr><td style="text-align: center;"><img height="352" src="https://lh3.googleusercontent.com/MVehtN5eG9c_urWkQVHeC_wdYR8-Tn6Pno466EnVgFtkaRQEvdddI8qX3aMETVpcQ71NtZrrA1WQ18tDB3vWrO0yLYsvYsnZlTJiPgjXH6SZGoN15_owfKqCUhTjq5ZmueKzRoZZ" style="border: none; margin-left: auto; margin-right: auto; transform: rotate(0rad);" width="623" /></td></tr><br /><tr><td class="tr-caption" style="text-align: center;">Example data visible via the Google My Business web dashboard</td></tr><br /></tbody></table><br /><div class="separator" style="clear: both; text-align: center;"><br /><span style="font-family: "roboto"; font-size: 14.6667px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"></span></div><br /><span id="docs-internal-guid-dbfc359e-89e9-d3ce-4099-f1bbd6b8cd7e"></span><span id="docs-internal-guid-63de96ea-8a7a-36fd-bb10-76472c01e404"></span><br /><br />With this new feature, Google My Business API users can optimize their listings to drive customer actions through understanding key insights about how customers are searching for their business on Google, and what actions they are taking once they find it. These insights are also available on <a href="https://www.google.com/business/" target="_blank">Google My Business web and mobile</a>, allowing users to keep track of key trends from anywhere.<br /><br /><br /><br />To learn more about the Google My Business API and to apply for access, visit our <a href="https://developers.google.com/my-business/" target="_blank">developer page</a>. Questions or feedback? Contact the API team on the <a href="https://www.en.advertisercommunity.com/t5/Google-My-Business-API/bd-p/gmb-api" target="_blank">Google My Business API Forum</a>.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8566213237592900575.post-2340671428490816632016-12-21T09:48:00.000-08:002018-04-25T13:43:55.717-07:00Geolocation and Firebase for the Internet of Things<span class="post-author"><i>Posted by Ken Nevarez, Industry Solutions Lead at Google</i></span><br /><br /><br /><br />GPS is the workhorse of location based services, but there are use cases where you may want to avoid the cost and power consumption of GPS hardware or locate devices in places where GPS lacks accuracy, such as in urban environments or buildings.<br /><br /><br /><br />We've seen recent growth in Internet of Things (IoT) applications using the <a href="https://developers.google.com/maps/documentation/geolocation/intro" target="_blank">Google Maps Geolocation API</a> instead of GPS for asset tracking, theft prevention, usage optimization, asset servicing, and more. As part of my 20 percent project at Industry Solutions, I created a prototype IoT device that can locate itself using surrounding WiFi networks and the Google Maps Geolocation API. In this post, I’ll discuss some interesting implementation features and outline how you can create the prototype yourself.<br /><br /><br /><br />I built a device that scans for local WiFi and writes results (WiFi hotspots and their signal strength) to a <a href="https://firebase.google.com/docs/database/" target="_blank">Firebase Realtime Database</a>. A back-end service then reads this data and uses the Google Maps Geolocation API to turn this into a real-world location, which can be plotted on a map.<br /><br /><div class="separator" style="clear: both; text-align: center;"><br /><span style="font-family: "open sans"; font-size: 13.3333px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img height="236" src="https://lh5.googleusercontent.com/neJM9GPHe1AzTaVTYXWK2IhqOpqAHNGyQszvXdUa8NR5v6DepQcMgVhGmUGtgUzIaKT7yGVAzMtsKtU3CNJwh_nNsfzf84Cf2KC8g-eL9j4E6EVA32gRWQwqhe6EGiJPca2Nf20K" style="border: none; transform: rotate(0rad);" width="640" /></span></div><br /><span id="docs-internal-guid-396aa1e6-1d66-a36b-25e2-9fad4bb1513a"></span><br /><br /><h3><br />Set up the Device & Write Locally</h3><br />For this proof of concept, I used the <a href="https://software.intel.com/en-us/iot/hardware/edison" target="_blank">Intel Edison</a> as a Linux-based computing platform and augmented it with <a href="https://learn.sparkfun.com/tutorials/general-guide-to-sparkfun-blocks-for-intel-edison" target="_blank">Sparkfun’s Edison Blocks</a>. To build the device, you will need an <a href="https://www.sparkfun.com/products/13024?_ga=1.195399918.391268827.1462892549" target="_blank">Intel Edison</a>, a <a href="https://www.sparkfun.com/products/13045?_ga=1.195399918.391268827.1462892549" target="_blank">Base Block</a>, a <a href="https://www.sparkfun.com/products/13037" target="_blank">Battery Block</a> and a <a href="https://www.sparkfun.com/products/13187?_ga=1.202355155.391268827.1462892549" target="_blank">Hardware pack</a>.<br /><br /><div class="separator" style="clear: both; text-align: center;"><br /><span style="background-color: white; color: #212121; font-family: "arial"; font-size: 13.3333px; font-weight: 700; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img height="291" src="https://lh6.googleusercontent.com/y4m85D_7TJJtZUNr-KN4oBdfD8TOgF_Za5nSaZE7T94av8i2ykFsdsQo3ju9UZ-OOF_K84SsNIdmFgpcYTQjgQ_0TAObZQTp6qMn8H8YCFIerQc30MVrSlM-zq6MBifTZvRuPBGO" style="border: none; transform: rotate(0rad);" width="358" /></span></div><br /><span id="docs-internal-guid-396aa1e6-1d6e-ed53-b851-7da396a26e38"></span><br /><br />Developing for the Edison is straightforward using the <a href="https://software.intel.com/en-us/intel-xdk" target="_blank">Intel XDK IDE</a>. We will be creating a simple Node.js application in JavaScript. I relied on 3 libraries: <a href="https://firebase.google.com/docs/server/setup" target="_blank">Firebase</a> for the database connection, <a href="https://github.com/bakerface/wireless-tools" target="_blank">wireless-tools/iwlist</a> to capture WiFi networks, and <a href="https://github.com/scravy/node-macaddress" target="_blank">macaddress</a> to capture the device MAC. Installation instructions can be found on the linked pages.<br /><br /><br /><br />Step 1: get the device MAC address and connect to Firebase:<br /><br /><pre>function initialize() {<br /> macaddress.one('wlan0', function (err, mac) {<br /> mac_address = mac;<br /> if (mac === null) {<br /> console.log('exiting due to null mac Address');<br /> process.exit(1);<br /> }<br /> firebase.initializeApp({<br /> serviceAccount: '/node_app_slot/<service-account-key>.json',<br /> databaseURL: 'https://<project-id>.firebaseio.com/'<br /> });<br /> var db = firebase.database();<br /> ref_samples = db.ref('/samples');<br /> locationSample();<br /> });<br />}</pre><br />The above code contains two placeholders:<br /><br /><br /><br /><ol><br /><li>The <span style="font-family: "courier new" , "courier" , monospace;">service-account-key</span> is a private key you create in the Firebase Console. Follow the gear icon in the upper left of console, select “settings”, and click Generate New Private Key. Place this key on your Edison in the directory <span style="font-family: "courier new" , "courier" , monospace;">/node_app_slot/</span>. See this <a href="https://firebase.google.com/docs/auth/android/custom-auth" target="_blank">Firebase documentation</a> for more information.</li><br /><li>The <span style="font-family: "courier new" , "courier" , monospace;">project-id</span> in the database URL is found in the Firebase console database page after you have linked your Google project with Firebase.</li><br /></ol><br /><br /><br /><br /><br />Step 2: scan for WiFi networks every 10 seconds and write locally:<br /><br /><pre>function locationSample() {<br /> var t = new Date();<br /> iwlist.scan('wlan0', function(err, networks) {<br /> if(err === null) {<br /> ref_samples.push({<br /> mac: mac_address,<br /> t_usec: t.getTime(),<br /> t_locale_string: t.toLocaleString(),<br /> networks: networks,<br /> });<br /> } else {<br /> console.log(err);<br /> } <br /> });<br /> setTimeout(locationSample, 10000);<br />}</pre><br /><h3><br />Write to the cloud</h3><br />The locationSample() function above writes detectable WiFi networks to a Firebase database that syncs to the cloud when connected to a network.<br /><br /><br /><br /><b>Caveat:</b> To configure access rights and authentication to Firebase, I set up the device as a “server”. Instructions for this configuration are on the <a href="https://firebase.google.com/docs/admin/setup" target="_blank">Firebase website</a>. For this proof of concept, I made the assumption that the device was secure enough to house our credentials. If this is not the case for your implementation you should instead follow the instructions for <a href="https://firebase.google.com/docs/web/setup" target="_blank">setting up the client JavaScript SDK</a>.<br /><br /><br /><br />The database uses 3 queues to manage workload: a WiFi samples queue, a geolocation results queue and a visualization data queue. The workflow will be: samples from the device go into a samples queue, which gets consumed to produce geolocations that are put into a geolocations queue. Geolocations are consumed and formatted for presentation, organized by device, and the output is stored in a visualizations bucket for use by our front end website. <br /><br /><br /><br />Below is an example of a sample, a geolocation, and our visualization data written by the device and seen in the Firebase Database Console.<br /><br /><div class="separator" style="clear: both; text-align: center;"><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKe5MENU-bNIId1UrWrghz3KkaDV_QF0Rph4_fwqurxY1qFcYc3LLZxRfreXZo2uO8J9WRVZG9AoZHf0XLWT0kVDYMASCeYq7uN-jmXWkI12iqTe1PewbRfuCul5GQRNTz51_3jEjKlZY/s1600/Samples_iot.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="284" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKe5MENU-bNIId1UrWrghz3KkaDV_QF0Rph4_fwqurxY1qFcYc3LLZxRfreXZo2uO8J9WRVZG9AoZHf0XLWT0kVDYMASCeYq7uN-jmXWkI12iqTe1PewbRfuCul5GQRNTz51_3jEjKlZY/s640/Samples_iot.png" width="640" /></a></div><br /><h4><br />Processing the Data with Google App Engine</h4><br />To execute the processing of the sample data I used a long running Google App Engine Backend Module and a custom version of the <a href="https://github.com/googlemaps/google-maps-services-java" target="_blank">Java Client for Google Maps Services</a>. <br /><br /><br /><br /><b>Caveat:</b> <a href="https://cloud.google.com/solutions/mobile/firebase-app-engine-android-studio#configuring_the_app_engine_backend_to_use_manual_scaling" target="_blank">To use Firebase with App Engine, you must use manual scaling</a>. Firebase uses background threads to listen for changes and App Engine only allows long-lived background threads on manually scaled backend instances.<br /><br /><br /><br />The <a href="https://github.com/googlemaps/google-maps-services-java" target="_blank">Java Client for Google Maps Services</a> takes care of a lot of the communications code required to use the Maps APIs and follows our <a href="https://maps-apis.googleblog.com/2016/09/making-most-of-google-maps-web-service.html" target="_blank">published best practices</a> for error handling and retry strategies that respect rate limits. The <span style="font-family: "courier new" , "courier" , monospace;">GeolocateWifiSample()</span> function below is registered as an event listener with Firebase. It loops over each network reported by the device and incorporates it into the geolocation request.<br /><br /><pre>private void GeolocateWifiSample(DataSnapshot sample, Firebase db_geolocations, Firebase db_errors) {<br /> // initalize the context and request<br /> GeoApiContext context = new GeoApiContext(new GaeRequestHandler()).setApiKey("<your api="" key="">");<br /> GeolocationApiRequest request = GeolocationApi.newRequest(context)<br /> .ConsiderIp(false);<br /> // for every network that was reported in this sample...<br /> for (DataSnapshot wap : sample.child("networks").getChildren()) {<br /> // extract the network data from the database so it’s easier to work with<br /> String wapMac = wap.child("address").getValue(String.class);<br /> int wapSignalToNoise = wap.child("quality").getValue(int.class);<br /> int wapStrength = wap.child("signal").getValue(int.class);<br /> // include this network in our request<br /> request.AddWifiAccessPoint(new WifiAccessPoint.WifiAccessPointBuilder()<br /> .MacAddress(wapMac)<br /> .SignalStrength(wapStrength)<br /> .SignalToNoiseRatio(wapSignalToNoise)<br /> .createWifiAccessPoint());<br /> }<br /> ...<br /> try {<br /> // call the api<br /> GeolocationResult result = request.CreatePayload().await();<br /> ...<br /> // write results to the database and remove the original sample<br /> } catch (final NotFoundException e) {<br /> ...<br /> } catch (final Throwable e) {<br /> ...<br /> }<br />}</your></pre><br />Register the <span style="font-family: "courier new" , "courier" , monospace;">GeolocateWifiSample()</span> function as an event handler. The other listeners that process geolocation results and create the visualization data are built in a similar pattern.<br /><br /><pre>ChildEventListener samplesListener = new ChildEventListener() {<br /> @Override<br /> public void onChildAdded(DataSnapshot dataSnapshot, String previousChildName) {<br /> // geolocate and write to new location<br /> GeolocateWifiSample(dataSnapshot, db_geolocations, db_errors);<br /> }<br /> ...<br />};<br />db_samples.addChildEventListener(samplesListener);</pre><br /><h3><br />Visualize the Data</h3><br />To visualize the device locations I used Google App Engine to serve stored data from Firebase and the Google Maps JavaScript API to create a simple web page that displays the results. The index.html page contains an empty <div> with id “map”. I initialized this <div> to contain the Google Map object. I also added “child_added” and “child_removed” event handlers to update the map as the data changes over time.<br /><br /><pre>function initMap() {<br /> // attach listeners<br /> firebase.database().ref('/visualization').on('child_added', function(data) {<br /> ...<br /> data.ref.on('child_added', function(vizData) {<br /> circles[vizData.key]= new CircleRoyale(map,<br /> vizData.val().lat,<br /> vizData.val().lng,<br /> vizData.val().accuracy,<br /> color);<br /> set_latest_position(data.key, vizData.val().lat, vizData.val().lng);<br /> });<br /> data.ref.on('child_removed', function(data) {<br /> circles[data.key].removeFromMap();<br /> });<br /> });<br /> // create the map<br /> map = new google.maps.Map(document.getElementById('map'), {<br /> center: get_next_device(),<br /> zoom: 20,<br /> scaleControl: true,<br /> });<br /> ...<br />}</pre><br />Since the API returns not only a location but also an indication of accuracy, I’ve created a custom marker that has a pulsing radius to indicate the accuracy component. <br /><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><br /><tr><td style="text-align: center;"><img height="359" src="https://lh3.googleusercontent.com/mwEs7P3LMkAHXjvvhi8R_bF2rV32R1TXsQe1ZmQLBnca-V5FgXnbRNPseaxFd6Y14TtRDWxS9mq90qCO87Ynp00cxGv7qWSf-_0pyj6nMnaVR20uQZgie00oRIgOBa3HbTWFhBAL" style="border: none; margin-left: auto; margin-right: auto; transform: rotate(0rad);" width="640" /></td></tr><br /><tr><td class="tr-caption" style="text-align: center;">Two devices (red and blue) and their last five known positions</td></tr><br /></tbody></table><br /><div class="separator" style="clear: both; text-align: center;"><br /><span style="background-color: white; color: #212121; font-family: "arial"; font-size: 13.3333px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"></span></div><br /><span id="docs-internal-guid-396aa1e6-1d71-f36d-fff8-21bebd29678a"></span><br /><br /><h3><br />What’s next?</h3><br />In this post I’ve outlined how you can build an IoT device that uses Google Maps Geolocation API to track any internet-connected device - from robotics to wearables. The App Engine processing module can be expanded to use other Google Maps APIs <a href="https://developers.google.com/maps/web-services/" target="_blank">Web Services</a> providing geographic data such as <a href="https://developers.google.com/maps/documentation/directions/" target="_blank">directions</a>, <a href="https://developers.google.com/maps/documentation/elevation/start" target="_blank">elevation</a>, <a href="https://developers.google.com/places/web-service/" target="_blank">place</a> or <a href="https://developers.google.com/maps/documentation/timezone/start" target="_blank">time zone</a> information. Happy building!<br /><br /><br /><br />As an alternative, you can achieve a similar solution using Google Cloud Platform as a replacement for Firebase—<a href="https://cloud.google.com/solutions/scalable-geolocation-telemetry-system-using-maps-api#top_of_page" target="_blank">this article</a> shows you how.<br /><br /><table><tbody><br /><tr> <td style="width: 80px;"><br /><br /><div class="separator" style="clear: both; text-align: center;"><br /><img alt="author image" border="0" src="https://lh6.googleusercontent.com/J9CJgmBXfg81AdomnyX_aCbetiE1SHVGkGcHSZT6dVfRBX_dOQ7rhj8gmbR8mR8SYSZ-RcZS5VOFZTZAg4zYryTeFJydgxkt5SrKSYTkyKKIRfxaHTs1965c7UEpUkkFtcX5IeP7" style="border-radius: 50%; width: 80px;" /></div><br /></td> <td>About Ken:<i> Ken is a Lead on the Industry Solutions team. He works with customers to bring innovative solutions to market.</i></td></tr><br /></tbody></table><br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8566213237592900575.post-86713641056609490662016-11-22T15:43:00.000-08:002018-04-25T13:43:56.193-07:00Address Geocoding in the Google Maps APIsForward Geocoding is the process of converting addresses (like a street address) into geographic coordinates (latitude and longitude), which you can use to place markers on a map or position the map. The Google Maps APIs have several services that you can use to convert addresses into coordinates - the <a href="https://developers.google.com/maps/documentation/geocoding/intro" target="_blank">Geocoding API</a>, the <a href="https://developers.google.com/places/web-service/autocomplete" target="_blank">Place Autocomplete service in Places API</a>, and the <a href="https://developers.google.com/places/web-service/search" target="_blank">Place Search service in Places API</a>. What are the differences between them and when should you use each one? Here’s where to start.<br /><br /><br /><br />Note that while this blog focuses on the server-side Places and Geocoding APIs, these best practices also apply to the client-side Places and Geocoding services in the Google Maps JavaScript API.<br /><br /><br /><br /><h3><br />Geocoding API</h3><br />The <a href="https://developers.google.com/maps/documentation/geocoding/start" target="_blank">Geocoding API</a> is best for handling unambiguous queries: complete postal address strings (for example, “48 Pirrama Rd, Pyrmont, NSW, Australia”). Compared to other Google APIs, the Geocoding API provides the best quality matching of addresses globally for these types of complete, unambiguous queries. However, Geocoding API is not recommended if your application handles ambiguous or incomplete queries, such as “123 Main St”, or if it handles queries that may contain non-address information such as apartment numbers or business names.<br /><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><br /><tr><td style="text-align: center;"><img alt="Screen Shot 2016-11-15 at 6.16.15 PM.png" height="280" src="https://lh5.googleusercontent.com/ZTYKHlcQxIHW4recbflhGGkxpxa38BIii5siPjO_7-dhR4Vf1D--gGX2ssu3DguTcUyZZptn_QqtARUE-bdfWjw1tRLsl23ohpxgBViEM5p-1WJ0v7NeoWuKZtYNLGpJxNpv10xq" style="border: none; margin-left: auto; margin-right: auto; transform: rotate(0rad);" width="602" /></td></tr><br /><tr><td class="tr-caption" style="text-align: center;">Geocoding API is best used for unambiguous complete addresses, such as "48 Pirrama Rd, Pyrmont, NSW, Australia" </td></tr><br /></tbody></table><br /><div class="separator" style="clear: both; text-align: center;"><br /><span style="font-family: "open sans"; font-size: 13.3333px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"></span></div><br /><h3><br />Places API</h3><br />The <a href="https://developers.google.com/places/" target="_blank">Places API</a> allows users to discover both addresses and semantic locations, such as cafes or parks, by name or <a href="https://developers.google.com/places/supported_types" target="_blank">type</a>. In contrast to the Geocoding API, it handles ambiguous or incomplete requests in a more robust way. If your application handles user interaction, or addresses that are ambiguous or incomplete, consider the following services.<br /><br /><h4><br /><br /><br />Place Autocomplete service</h4><br />For applications that respond in real time to user input, we recommend using the <a href="https://developers.google.com/places/web-service/autocomplete" target="_blank">Place Autocomplete service in the Places API</a>. This service is designed to return multiple possible addresses and allow the user to choose between them. The autocomplete lookup function can also be biased to return results specific to a location, enabling high quality results to be returned for incomplete queries such as “123 Main St”. Since the Place Autocomplete service is optimized for responding to user input, it also has very low latency, usually at least 10x lower than the Geocoding API. It’s also good at handling misspelled queries, or queries containing non-address information, since as the user types, they can see suggestions and correct their spelling if needed.<br /><br /><br /><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><br /><tr><td style="text-align: center;"><img alt="Screen Shot 2016-11-14 at 5.35.53 PM.png" height="284" src="https://lh6.googleusercontent.com/xtLpYrNIZ6qEQojbStjanO5rmt6JIbP9JqOFOQf7YvKzUK60NZeg597t7uIiR-b4TfVALbYF4eaNFtORO736wHQe4uq-9ibfiiJ1s8kXMDSLccABAt4oy7kiUeIo3dRBPP7Vosux" style="border: none; margin-left: auto; margin-right: auto; transform: rotate(0rad);" width="602" /></td></tr><br /><tr><td class="tr-caption" style="text-align: center;">Typing "123 Main St" into a Place Autocomplete search box lets the user choose from multiple results. Results can also be biased to prefer those near the area shown on the map or near the current user location</td></tr><br /></tbody></table><br /><h4><br />Place Search service</h4><br />The Place Autocomplete service relies on a user to choose the best option from multiple results. What if you have an application that handles ambiguous or incomplete queries in an automated fashion, with no user able to provide input?<br /><br /><br /><br />For geocoding ambiguous or incomplete addresses in automated systems, when there is no user to select one of the autocomplete suggestions, we recommend the <a href="https://developers.google.com/places/web-service/search" target="_blank">Place Search service in Places API</a>. Place Search is better at coping with ambiguous queries than the Geocoding API, and lets you restrict your search to a specified area, or rank results by distance, allowing more precise filtering and ranking of results for ambiguous or incomplete queries. Place search is also more robust at responding to queries with additional non-address information such as business names or apartment numbers.<br /><br /><br /><br /><h2><br />Future Changes to Geocoding API</h2><br />We plan to roll out an update to the Geocoding API at the end of November 2016 that will increase the difference between Geocoding and Places performance for ambiguous and unambiguous queries. This change will improve the quality of Geocoding results for unambiguous queries, but will be more likely to return <span style="font-family: "courier new" , "courier" , monospace;">ZERO_RESULTS</span> for ambiguous or incomplete queries where the Geocoding API was unable to find a high quality result. <br /><br /><br /><br />If you are already using the above best practices, you should see an improvement in your Geocoding API results. If you are currently using the Geocoding API for incomplete or ambiguous queries, or for queries that may contain non-address information such as business names or apartment numbers, we recommend that you switch to the Places API instead, as it is likely to give better quality results for your use case.<br /><br /><br /><br />You can try the new Geocoding service ahead of launch by adding an optional parameter, <span style="font-family: "courier new" , "courier" , monospace;">new_forward_geocoder=true</span>, to your Geocoding API request. For example:<br /><br /><br /><br /><code>https://maps.googleapis.com/maps/api/geocode/json?new_forward_geocoder=true&address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=YOUR_API_KEY</code><br /><br /><br /><br />If you want to try the new Geocoding service in the JavaScript Maps API Geocoding Service, you can set the new optional parameter <span style="font-family: "courier new" , "courier" , monospace;">newForwardGeocoder: true</span> in the <span style="font-family: "courier new" , "courier" , monospace;"><a href="https://developers.google.com/maps/documentation/javascript/3.exp/reference#GeocoderRequest" target="_blank">GeocoderRequest</a></span> object. The new Geocoding service will launch for both the Geocoding API and the Geocoding Service in the JavaScript Maps API at the same time. All of the recommendations in this blog post apply to both the server-side and client-side APIs.<br /><br /><br /><br />If you have any bug reports or feature requests for the new Geocoding service, please let us know using our public <a href="https://code.google.com/p/gmaps-api-issues/issues/entry?template=Geocoding%20API%20-%20Bug&utm_source=geodevsite&utm_medium=website&utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost" target="_blank">issue tracker</a>.<br /><br /><br /><br /><h2><br />In Summary</h2><br />The following table sums up when we recommend you use the Geocoding API, Place Autocomplete service and Place Search service.<br /><br /><br /><br /><div dir="ltr" style="margin-left: 0pt;"><br /><table style="border-collapse: collapse; border: 1px solid #000; width: 650px;"><tbody><br /><tr style="border: 1px solid #000;"> <th style="border: 1px solid #000; padding: 4px; width: 13%;"><br /></th> <th style="border: 1px solid #000; padding: 4px; width: 29%;">Geocoding API</th> <th style="border: 1px solid #000; padding: 4px; width: 29%;">Place Search</th> <th style="border: 1px solid #000; padding: 4px;">Place Autocomplete</th> </tr><br /><tr style="border: 1px solid #000;"> <td style="border: 1px solid #000; font-weight: bold; padding: 4px;">Scope</td> <td style="border: 1px solid #000; padding: 4px;">Addresses only</td> <td colspan="2" style="border: 1px solid #000; padding: 4px;">Semantic locations and addresses, including businesses and points of interest</td> </tr><br /><tr style="border: 1px solid #000;"> <td style="border: 1px solid #000; font-weight: bold; padding: 4px;">Strengths</td> <td style="border: 1px solid #000; padding: 4px;">Unambiguous complete addresses</td> <td style="border: 1px solid #000; padding: 4px;">Ambiguous or incomplete addresses in automated systems</td> <td style="border: 1px solid #000; padding: 4px;">Responding to real-time user input</td> </tr><br /></tbody></table><br /></div><br /><br /><br />If your application does not yet follow these best practices, you may get worse results from Geocoding API in future, so we recommend you test how your application works with the new Geocoding service and update your application to use the above best practices if required. Try the upcoming Geocoding service by setting <span style="font-family: "courier new" , "courier" , monospace;">new_forward_geocoder=true</span> in your geocoding request.<br /><br /><br /><br />For more information on the <a href="https://developers.google.com/maps/documentation/geocoding/intro" target="_blank">Google Maps Geocoding API</a>, <a href="https://developers.google.com/places/web-service/autocomplete" target="_blank">Place Autocomplete in the Places API</a> and <a href="https://developers.google.com/places/web-service/search" target="_blank">Place Search in the Places API</a>, please see the developer documentation. Also see this more detailed <a href="https://developers.google.com/maps/documentation/geocoding/best-practices" target="_blank">best practices guide</a> in our documentation for more details on Geocoding best practices for various use cases, including minimizing latency when querying Directions API with addresses.<br /><br /><br /><br />Finally, a big thank you to all the developers who use the Google Maps Geocoding API and provide feedback via the <a href="https://code.google.com/p/gmaps-api-issues/issues/entry?template=Geocoding%20API%20-%20Bug&utm_source=geodevsite&utm_medium=website&utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost" target="_blank">issue tracker</a>. Getting feedback from developers is vital for us to be able to keep improving our products, so if you have any bug reports or feature requests, please let us know!<br /><br /><table><tbody><br /><tr> <td style="width: 80px;"><br /><br /><div class="separator" style="clear: both; text-align: center;"><br /><img alt="author image" border="0" src="https://lh6.googleusercontent.com/mbzhN4UgcBZWGmNITagTVcFZZBsOqxRKXwzK6231tfvjiRMN0JwZYDL--z0X3qgQUmvW-e5c9qZwETINRrS4i1whh9LwqRcM27pTVPGhePv1WmWRxC3_twbglXD3wFXPshuSPnuT" style="border-radius: 50%; width: 80px;" /></div><br /></td> <td><i>Posted by Elena Kelareva, Product Manager, Google Maps APIs</i></td></tr><br /></tbody></table><br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8566213237592900575.post-49607545494336372192016-11-15T16:23:00.000-08:002018-04-25T13:43:56.637-07:00Smart scrolling comes to mobile web mapsIf you’re building a website today, your users are more likely to view it on a mobile device than on a desktop or laptop. Google has plenty of resources to help developers make their websites stand out on mobile, from a <a href="https://developers.google.com/webmasters/mobile-sites/" target="_blank">guide to building mobile-friendly websites</a>, to a <a href="https://www.google.com/webmasters/tools/mobile-friendly/" target="_blank">mobile-friendly testing tool</a>, to promoting new mobile web technologies such as <a href="https://www.ampproject.org/" target="_blank">Accelerated Mobile Pages</a> and <a href="https://developers.google.com/web/progressive-web-apps/" target="_blank">Progressive Web Apps</a>.<br /><br /><div class="separator" style="clear: both; text-align: center;"><span style="color: #444444; font-family: "arial"; font-size: 13.3333px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="bullheadN5D91Lstephenmcd11092016101027.gif" height="400" src="https://lh4.googleusercontent.com/uyDwFMVDIv4RKrh4H-Q5LHce7uLvypuemiL550bh61ghfnydiiwRiJaJCAxJ6HBkvgowSRoLLaqKeh1VN_3VetpWl10KEKtAq56EtZvfjPf25BgXXwK_taS8xB0vocXraN1sSfQv" style="border: none; transform: rotate(0rad);" width="200" /></span></div><span id="docs-internal-guid-cb32e455-69e3-39a3-ba64-c31e73b8cbc2"></span><br /><br />Mobile web users often get frustrated when trying to scroll the page, but an embedded map captures their swipe and pans the map instead. This can even lead to users getting stuck on the map and having to reload the page in order to get back to the rest of the page. <br /><br /><br /><br />Today we're introducing intuitive scrolling for sites with embedded maps and making the full-screen control visible by default on mobile devices. This should give your users a more intuitive and less frustrating map interaction experience on mobile browsers.<br /><br /><br /><br /><h4>The map trap</h4>We have added a new <span style="font-family: "courier new" , "courier" , monospace;">gestureHandling</span> option to the Google Maps JavaScript API. This setting controls how touch gestures* on the map are handled.<br /><br /><br /><br />Values:<br /><br /><ul><li>"cooperative": Two-finger touch gestures pan and zoom the map, as do all mouse gestures. One-finger touch gestures are ignored by the map. In this mode, the map cooperates with the page, so that one-finger touch gestures can pan the page.</li><br /><li>"greedy": All touch gestures pan or zoom the map. This was the previous behaviour.</li><br /><li>"none": The map cannot be panned or zoomed by user gestures.</li><br /><li>"auto": Gesture handling is automatically set to either cooperative or greedy, depending on whether the page is scrollable or not (defined by a comparison of the page body dimensions and the window dimensions).</li><br /><li style="margin-left: 20px;">If the page is scrollable, “auto” sets the gesture handling mode to cooperative.</li><br /><li style="margin-left: 20px;">If the page is not scrollable, “auto” sets the gesture handling to greedy.</li><br /><li style="margin-left: 20px;">If the map is in an iFrame, “auto” sets the gesture handling to cooperative because the API can’t determine whether the page is scrollable.</li><br /></ul>*<i>Note that there is currently no way to change the gesture handling mode for Street View; these options only affect the way gestures are handled by the map. If you’d like to see this extended to Street View in future, please let us know on our public <a href="https://code.google.com/p/gmaps-api-issues/?utm_source=geodevsite&utm_medium=website&utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost" target="_blank">issue tracker</a>.</i><br /><br /><ul></ul>You can enable any of these four gesture handling modes by adding the corresponding field to the <span style="font-family: "courier new" , "courier" , monospace;">MapOptions</span> object. For example:<br /><br /><br /><br /><blockquote class="tr_bq" style="font-family: "courier new" , "courier" , monospace;">map = new google.maps.Map(document.getElementById('map-div'), {<br /><br />gestureHandling: 'cooperative',<br /><br />center: {lat: -34.397, lng: 150.644},<br /><br />zoom: 8<br /><br />});</blockquote><br /><br />If the <span style="font-family: "courier new" , "courier" , monospace;">gestureHandling</span> option is not set, the default value is <span style="font-family: "courier new" , "courier" , monospace;">auto</span>, since that automatically chooses what we expect to be the best behavior based on what the browser can detect about the placement of your map in the page. If you prefer to always use the old map gesture handling mode for users viewing your site on mobile devices, change the value of <span style="font-family: "courier new" , "courier" , monospace;">gestureHandling</span> to <span style="font-family: "courier new" , "courier" , monospace;">greedy</span>, which sends all user gestures to the map.<br /><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><br /><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoSo9V0P5_M2Nq0mzqvZSGUWhZpiYxwBXOESHnhWPfc9OsZmYp9QLK1zWaeFQt0oQwk3o_8CerVT41gmHmE9YarRH4ewDrZ7Fmsh_Tc_ThVbviA24Iz8LNoprJ8njDlrtaAhtDR9-6MRs/s1600/scroll_lock.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoSo9V0P5_M2Nq0mzqvZSGUWhZpiYxwBXOESHnhWPfc9OsZmYp9QLK1zWaeFQt0oQwk3o_8CerVT41gmHmE9YarRH4ewDrZ7Fmsh_Tc_ThVbviA24Iz8LNoprJ8njDlrtaAhtDR9-6MRs/s400/scroll_lock.png" width="322" /></a></td></tr><br /><tr><td class="tr-caption" style="text-align: center;">Maps viewed within a scrollable website on a mobile device will display this overlay on touch</td></tr><br /></tbody></table>The <span style="font-family: "courier new" , "courier" , monospace;">option draggable: false</span> has now been superseded by <span style="font-family: "courier new" , "courier" , monospace;">gestureHandling: 'none'</span>. The old option <span style="font-family: "courier new" , "courier" , monospace;">draggable</span> is now deprecated, but we’ll maintain backwards compatibility. Developers who previously turned off map interaction by setting <span style="font-family: "courier new" , "courier" , monospace;">draggable</span> to <span style="font-family: "courier new" , "courier" , monospace;">false</span> will keep their existing non-interactive maps.<br /><br /><br /><br /><h4>Maximizing the map when you need it</h4>Many users in our user studies said they found small embedded maps on mobile devices hard to interact with and they preferred to interact with a larger map. To address this request, we've made the fullscreen control visible by default on mobile devices. The fullscreen control allows the user to make the map larger. When the map is in fullscreen mode, the user can pan the map using one finger. As a developer, you can enable or disable fullscreen control, by setting the <span style="font-family: "courier new" , "courier" , monospace;">fullscreenControl</span> option to <span style="font-family: "courier new" , "courier" , monospace;">true</span> or <span style="font-family: "courier new" , "courier" , monospace;">false</span> in the <span style="font-family: "courier new" , "courier" , monospace;">MapOptions</span> object. When the map is in fullscreen mode, one finger will always pan the map, since there is no surrounding page to pan.<br /><br /><br /><br />The default setting of <span style="font-family: "courier new" , "courier" , monospace;">fullscreenControl</span> is <span style="font-family: "courier new" , "courier" , monospace;">true</span> on mobile browsers, and <span style="font-family: "courier new" , "courier" , monospace;">false</span> on desktop browsers, since the problem of maps being too small for interaction usually only occurs on mobile devices.<br /><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><br /><tr><td style="text-align: center;"><img alt="ScrollLockScreenshot.png" height="368" src="https://lh3.googleusercontent.com/8HW2ZyCeJ1eF1-WSyesNN0OmZY55GpUidiVUkqtw2mmGyuXs3DE7kFTqVgurd-0SYIffgBmBrDEBCNDDKylOGjy-tnvBYaliU9eWjGBfnjWnIQ07k5jeH25bleeg1TI1yYzsWa_a" style="border: none; margin-left: auto; margin-right: auto; transform: rotate(0rad);" width="349" /></td></tr><br /><tr><td class="tr-caption" style="text-align: center;">The fullscreen control allows the user to make the map larger for easier interaction</td></tr><br /></tbody></table><div class="separator" style="clear: both; text-align: center;"><span style="color: #444444; font-family: "arial"; font-size: 13.3333px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"></span></div>View this <a href="https://developers.google.com/maps/documentation/javascript/interaction" target="_blank">demo</a> on a mobile device to see how the fullscreen button and <span style="font-family: "courier new" , "courier" , monospace;">cooperative</span> gesture handling mode (or <span style="font-family: "courier new" , "courier" , monospace;">auto</span> gesture handling mode on a scrollable site) will look to your users.<span id="docs-internal-guid-cb32e455-69e4-a6f8-c34d-49d5af231eba"></span><br /><br /><br /><br />For more information on the Google Maps JavaScript API, please see the <a href="https://developers.google.com/maps/documentation/javascript/interaction" target="_blank">developer documentation</a> or review the latest <a href="https://developers.google.com/maps/documentation/javascript/releases" target="_blank">release notes</a>.<br /><br /><br /><br />A big thank you to all the developers who use the Google Maps JavaScript API and provide feedback via the <a href="https://code.google.com/p/gmaps-api-issues/?utm_source=geodevsite&utm_medium=website&utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost" target="_blank">issue tracker</a>. Getting feedback from developers is vital for us to be able to keep improving our products, so if you have any bug reports or feature requests, please let us know.<br /><br /><table><tbody><br /><tr> <td style="width: 80px;"><br /><br /><div class="separator" style="clear: both; text-align: center;"><img alt="author image" border="0" src="https://lh6.googleusercontent.com/mbzhN4UgcBZWGmNITagTVcFZZBsOqxRKXwzK6231tfvjiRMN0JwZYDL--z0X3qgQUmvW-e5c9qZwETINRrS4i1whh9LwqRcM27pTVPGhePv1WmWRxC3_twbglXD3wFXPshuSPnuT" style="border-radius: 50%; width: 80px;" /></div></td> <td><i>Posted by Elena Kelareva, Product Manager, Google Maps APIs</i></td></tr><br /></tbody></table><br /><br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8566213237592900575.post-32283449189196780382016-10-04T13:31:00.000-07:002018-04-25T13:43:57.073-07:00 Key Improvements for Your Maps API Experience<em>Originally posted on the <a href="https://developers.googleblog.com/2016/10/key-improvements-for-your-api-experience.html">Google Developers blog</a>.</em><br /><br />Posted by Israel Shalom, Product Manager<br /><br /><br /><br />Here at Google, we’re serving more than a hundred APIs to ensure that developers have the resources to build amazing experiences with them. We provide a reliable infrastructure and make it as simple as possible so developers can focus on building the future. With this in mind, we’re introducing a few improvements for the API experience: more flexible keys, a streamlined 'getting-started' experience, and easy monitoring.<br /><br /><br /><br /><h2><br />Faster, more flexible key generation</h2><br />Keys are a standard way for APIs to identify callers, and one of the very first steps in interacting with a Google API. Tens of thousands of keys are created every day for Google APIs, so we’re making this step simpler -- reducing the old multi-step process with a single click:<br /><br /><br /><br /><div class="separator" style="clear: both; text-align: center;"><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnOuxWc2xxz0z9QgM-kLX-OhqZDqdaGrmwG8DZOi6kj8vO_mFKy_6U2W9TknZturM7v4rT9VW2ffDWGMQS-CMslcQ5a4ncqMsZGZdM0Vev7v8tO9Jw_8CYmGQ6odyAq6mpNHYwDrBlVOw/s1600/image00.png" imageanchor="1"><img border="0" height="393" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnOuxWc2xxz0z9QgM-kLX-OhqZDqdaGrmwG8DZOi6kj8vO_mFKy_6U2W9TknZturM7v4rT9VW2ffDWGMQS-CMslcQ5a4ncqMsZGZdM0Vev7v8tO9Jw_8CYmGQ6odyAq6mpNHYwDrBlVOw/s1600/image00.png" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjohIkPoGDKeuxPi_4tLzXT6fNl8zwqSOotLT_gVeLTffRReK8LfWsSdRQ9dSRb8kmHnJpfNSwxbeU5LqbXQCCWGejptGlxKdqQMYT3zQCfTeU4ZYNjqN7kWZxpAZ8YLg49XNULz6BTS9Y/s1600/image01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="348" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjohIkPoGDKeuxPi_4tLzXT6fNl8zwqSOotLT_gVeLTffRReK8LfWsSdRQ9dSRb8kmHnJpfNSwxbeU5LqbXQCCWGejptGlxKdqQMYT3zQCfTeU4ZYNjqN7kWZxpAZ8YLg49XNULz6BTS9Y/s640/image01.png" width="640" /></a></div><br /><br /><br />You no longer need to choose your platform and various other restrictions at the time of creation, but we still encourage <a href="https://support.google.com/googleapi/answer/6310037" target="_blank">scope management</a> as a best practice:<br /><br /><div class="separator" style="clear: both; text-align: center;"><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKiiksN0qgAmQnL0_EF0ChMiOIIaoFi2d8Rg9PnJmY5nVqRHAdGYvnSuQblt81_POXPBeZdysbDi2t1CbsBNkyZc_LxfIS2loWEMRb_sPB4ZGbaOz-TcFWa63MeJwOjvTBQ8pnuyySpIs/s1600/image02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="394" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKiiksN0qgAmQnL0_EF0ChMiOIIaoFi2d8Rg9PnJmY5nVqRHAdGYvnSuQblt81_POXPBeZdysbDi2t1CbsBNkyZc_LxfIS2loWEMRb_sPB4ZGbaOz-TcFWa63MeJwOjvTBQ8pnuyySpIs/s640/image02.png" width="640" /></a></div><br /><h2><br />Streamlined getting started flow</h2><br />We realize that many developers want to get straight to creation and don’t necessarily want to step into the console. We’ve just introduced an in-flow credential set up procedure directly embedded within the developer documentation:<br /><br /><br /><br /><div class="separator" style="clear: both; text-align: center;"><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjX9oDL46hQzEiUgtYrBfLq5GNiZOYQOYicYsVzAJUlCDD5Jjcj_PdwpWM6E6HcDwRsF6ALm8z_d1KdriKw6git9C7gmTiG9qvQGqHYDVrGiBFTOzMJCBKbayfsWNzeK-qmnT1Jh6BVTq8/s1600/image03.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="348" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjX9oDL46hQzEiUgtYrBfLq5GNiZOYQOYicYsVzAJUlCDD5Jjcj_PdwpWM6E6HcDwRsF6ALm8z_d1KdriKw6git9C7gmTiG9qvQGqHYDVrGiBFTOzMJCBKbayfsWNzeK-qmnT1Jh6BVTq8/s640/image03.png" width="640" /></a></div><br />Click the 'Get a Key' button, choose or create a project, and then let us take care of enabling the API and creating a key.<br /><br /><div class="separator" style="clear: both; text-align: center;"><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjterANOzdCW_88-vSeqBV0bnUNXtCwsEqkCf42Bx7WadH8mOGzPa8aUG8iGNnQPUuULG2X-oZFof_4ukKIGhPXxxqJh_8ItGBhwxswZ9IXsTtPzUSj2VbJz1EwXHLSaHyS-MOs_Ru1Jl0/s1600/image04.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="348" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjterANOzdCW_88-vSeqBV0bnUNXtCwsEqkCf42Bx7WadH8mOGzPa8aUG8iGNnQPUuULG2X-oZFof_4ukKIGhPXxxqJh_8ItGBhwxswZ9IXsTtPzUSj2VbJz1EwXHLSaHyS-MOs_Ru1Jl0/s640/image04.png" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwpo5eJAigjEwDNAwAWUYsJJvSiWkDiCPTmuNTSDplevvB6IHQKSDLvhmZtmJ7m6-iVNsrWbrTjUwA30nTwJI_Th_Gstg2S7bkkQ-VESOqVdMrJZbuEriCmybOC_hUAI8Xu1bzKVaVM80/s1600/image05.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="348" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwpo5eJAigjEwDNAwAWUYsJJvSiWkDiCPTmuNTSDplevvB6IHQKSDLvhmZtmJ7m6-iVNsrWbrTjUwA30nTwJI_Th_Gstg2S7bkkQ-VESOqVdMrJZbuEriCmybOC_hUAI8Xu1bzKVaVM80/s640/image05.png" width="640" /></a></div><br />We are currently rolling this out for the Google Maps APIs and over the next few months we'll bring it to the rest of our documentation.<br /><br /><h2><br />API Dashboard</h2><br />We’re not just making it easier to get started, we’re simplifying the on-going usage experience, too. For developers who use one or more APIs frequently, we've built the new <a href="http://console.developers.google.com/apis/dashboard">API Dashboard</a> to easily view usage and quotas.<br /><br /><br /><br />If you’ve enabled any APIs, the dashboard is front and center in the API Console. There you can view all the APIs you’re using along with usage, error and latency data:<br /><br /><br /><br /><div class="separator" style="clear: both; text-align: center;"><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizLP70S-u2_uPqcPExF5EMc_TQnFar7Ph5oprIcvhKHGsFlnYavIXsFXg3vKGVLIBDhRzeVJ-J23uFkjE5f43aTi1NybBYnON3qbOaetPPUf0Intp6fCrwCR_Wr7FoVJGZ1-yg5_TxYOo/s1600/image06.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="348" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizLP70S-u2_uPqcPExF5EMc_TQnFar7Ph5oprIcvhKHGsFlnYavIXsFXg3vKGVLIBDhRzeVJ-J23uFkjE5f43aTi1NybBYnON3qbOaetPPUf0Intp6fCrwCR_Wr7FoVJGZ1-yg5_TxYOo/s640/image06.png" width="640" /></a></div><br /><br /><br />Clicking on an API will jump to a detailed report, where you’ll see the traffic sliced by methods, credentials, versions and response code (available on select APIs):<br /><br /><div class="separator" style="clear: both; text-align: center;"><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhy9S42NPKDyjLlvLReRa5nP_l25P2p6v6XKqxJnhhnSddJuo5N1cp9HK5uv0wvUp7mJvT38Z_VfrqHeiTd-Yb9spZYIHHo9pneFysSV7zmL523ad7HwBkZ2ex4mo4D1p0UJ1yAXFagMGo/s1600/image07.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="346" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhy9S42NPKDyjLlvLReRa5nP_l25P2p6v6XKqxJnhhnSddJuo5N1cp9HK5uv0wvUp7mJvT38Z_VfrqHeiTd-Yb9spZYIHHo9pneFysSV7zmL523ad7HwBkZ2ex4mo4D1p0UJ1yAXFagMGo/s640/image07.png" width="640" /></a></div><br /><br /><br /><br /><br />We hope these new features make your API usage easier, and we can't wait to see what you’re going to build next!Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8566213237592900575.post-77030894582979448842016-09-27T09:58:00.000-07:002018-04-25T13:43:57.504-07:00A sizzling open source release for the Australian Election siteOne of the best parts of my job at Google is 20 percent time. While I was hired to help developers use Google’s APIs, I value the time I'm afforded to be a student myself—to learn new technologies and solve real-world problems. A few weeks prior to the recent Australian election an opportunity presented itself. A small team in Sydney set their sights on helping the 15 million voters stay informed of how to participate, track real-time results, and (of course) find the closest election sausage sizzle!<br /><br /><div class="separator" style="clear: both; text-align: center;"><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVqChqSV-ij1ra7LJrRJmgicdY9gHWyOnZb1oAH-DgG8CqIA0yJByG6co_Pq6a0_OuvDip7VDcK6yB2BzxnGHaVfEVUnWn6jDLmJIdtrEkTKkft4dPlavJMlTFgP2hpMAkz655ZXZSaCM/s1600/AU_elections_team.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="198" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVqChqSV-ij1ra7LJrRJmgicdY9gHWyOnZb1oAH-DgG8CqIA0yJByG6co_Pq6a0_OuvDip7VDcK6yB2BzxnGHaVfEVUnWn6jDLmJIdtrEkTKkft4dPlavJMlTFgP2hpMAkz655ZXZSaCM/s640/AU_elections_team.png" width="640" /></a></div><br />Our team of designers, engineers and product managers didn't have an immediate sense of how to attack the problem. What we did have was the power of Google’s APIs, programming languages, and Cloud hosting with Firebase and Google Cloud Platform.<br /><br /><div class="separator" style="clear: both; text-align: center;"><br /><span style="background-color: white; color: #212121; font-family: "arial"; font-size: 13.3333px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img height="393" src="https://lh3.googleusercontent.com/Ks1wpzKxi5hj_SLnBal7joAXN4ZV5dS_uwNsrvMaY24kB-IxbcWR5IT-pLYBojQhqzRDCO7JS3nPy7p_PYkH5VCPI51QTSUOyZBYQrroSkDGJywfZB5DXSo3nFUkyF1kPguBba8t" style="border: none; transform: rotate(0rad);" width="640" /></span></div><br /><span id="docs-internal-guid-5f8e23f1-6c7d-90b7-c6e9-7a6c63ed84b7"></span><br /><br />The result is a mish-mash of some technologies we'd been wanting to learn more about. We're open sourcing the <a href="http://ausvotes.withgoogle.com/">ausvotes.withgoogle.com</a> repository to give developers a sense of what happens when you get a handful of engineers in a room with a clear goal and a immovable deadline.<br /><br /><br /><br />The <a href="https://github.com/google/election-au-2016" target="_blank">Election AU 2016 repository</a> uses:<br /><br /><br /><br /><ul><br /><li><b>Go</b> from Google App Engine instances to serve the appropriate level of detail for users' viewport queries from memory at very low latency, and</li><br /><li><b>Dart</b> to render the live result maps on top of Google Maps JavaScript API using Firebase real time database updates.</li><br /></ul><br /><br /><br />A product is only as good as the attention and usage is receives. Our team was really happy with the results of our work:<br /><br /><br /><br /><ul><br /><li>406,000 people used our maps, including 217,000 on election day.</li><br /><li>We had 139 stories in the media.</li><br /><li>Our map was also embedded in major news websites, such as <a href="http://www.skynews.com.au/news/politics.html" target="_blank">Sky News</a>.</li><br /></ul><br /><br /><br />Complete setup and installation instructions are available in the <a href="https://github.com/google/election-au-2016/blob/master/README.md" target="_blank">Github README</a>.<br /><br /><table><tbody><br /><tr> <td style="width: 80px;"><br /><br /><div class="separator" style="clear: both; text-align: center;"><br /><img alt="author image" border="0" src="https://lh6.googleusercontent.com/VsCCQFmzQjjI1o0JVWtLF69SGkoFrdyBnHaibB731DlKt8dFPoZgF7C-FJMlKYXuJw6fbqOR8yWiShUaUz1XIGW7qVxE-VUatNkFUYNcCsTPOwHDj2kF6ffZ8JtS-HipXGutmrrV" style="border-radius: 50%; width: 80px;" /></div><br /></td> <td><i>Posted by Brett Morgan, Developer Programs Engineer</i></td></tr><br /></tbody></table><br />Unknownnoreply@blogger.com0