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

<channel>
	<title>Google Data &#187; Google Maps</title>
	<atom:link href="/category/google-maps/feed/" rel="self" type="application/rss+xml" />
	<link>https://googledata.org</link>
	<description>Everything Google: News, Products, Services, Content, Culture</description>
	<lastBuildDate>Tue, 10 Jan 2017 00:16:20 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.1.13</generator>
	<item>
		<title>Geolocation and Firebase for the Internet of Things</title>
		<link>https://googledata.org/google-maps/geolocation-and-firebase-for-the-internet-of-things/</link>
		<comments>https://googledata.org/google-maps/geolocation-and-firebase-for-the-internet-of-things/#comments</comments>
		<pubDate>Wed, 21 Dec 2016 17:48:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=768df7ca9a4bcff5725c0cab6bd829d6</guid>
		<description><![CDATA[<span><i>Posted by Ken Nevarez, Industry Solutions Lead at Google</i></span><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 />
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&#8217;ll discuss some interesting implementation features and outline how you can create the prototype yourself.<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 /><div>
<span><img height="236" src="https://lh5.googleusercontent.com/neJM9GPHe1AzTaVTYXWK2IhqOpqAHNGyQszvXdUa8NR5v6DepQcMgVhGmUGtgUzIaKT7yGVAzMtsKtU3CNJwh_nNsfzf84Cf2KC8g-eL9j4E6EVA32gRWQwqhe6EGiJPca2Nf20K" width="640"></span></div>
<span></span><br /><h3>
Set up the Device &#38; Write Locally</h3>
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&#8217;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 /><div>
<span><img height="291" src="https://lh6.googleusercontent.com/y4m85D_7TJJtZUNr-KN4oBdfD8TOgF_Za5nSaZE7T94av8i2ykFsdsQo3ju9UZ-OOF_K84SsNIdmFgpcYTQjgQ_0TAObZQTp6qMn8H8YCFIerQc30MVrSlM-zq6MBifTZvRuPBGO" width="358"></span></div>
<span></span><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 />
Step 1: get the device MAC address and connect to Firebase:<br /><pre>function initialize() {
    macaddress.one('wlan0', function (err, mac) {
        mac_address = mac;
        if (mac === null) {
            console.log('exiting due to null mac Address');
            process.exit(1);
        }
        firebase.initializeApp({
            serviceAccount: '/node_app_slot/&#60;service-account-key&#62;.json',
            databaseURL: 'https://&#60;project-id&#62;.firebaseio.com/'
        });
        var db = firebase.database();
        ref_samples = db.ref('/samples');
        locationSample();
    });
}</pre>
The above code contains two placeholders:<br /><br /><ol><li>The <span>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 &#8220;settings&#8221;, and click Generate New Private Key. Place this key on your Edison in the directory <span>/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>
<li>The <span>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>
</ol><br /><br />
Step 2: scan for WiFi networks every 10 seconds and write locally:<br /><pre>function locationSample() {
    var t = new Date();
    iwlist.scan('wlan0', function(err, networks) {
        if(err === null) {
            ref_samples.push({
                mac: mac_address,
                t_usec: t.getTime(),
                t_locale_string: t.toLocaleString(),
                networks: networks,
            });
        } else {
            console.log(err);
        }        
    });
    setTimeout(locationSample, 10000);
}</pre>
<h3>
Write to the cloud</h3>
The locationSample() function above writes detectable WiFi networks to a Firebase database that syncs to the cloud when connected to a network.<br /><br /><b>Caveat:</b> To configure access rights and authentication to Firebase, I set up the device as a &#8220;server&#8221;. 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 />
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 />
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 /><div>
<a href="https://3.bp.blogspot.com/-MIJio2v0K7Q/WFl2r6Q2TfI/AAAAAAAAAkE/e8_n-lDVt306EzWQgxuEeT8LkD7OXbwUACLcB/s1600/Samples_iot.png"><img border="0" height="284" src="https://3.bp.blogspot.com/-MIJio2v0K7Q/WFl2r6Q2TfI/AAAAAAAAAkE/e8_n-lDVt306EzWQgxuEeT8LkD7OXbwUACLcB/s640/Samples_iot.png" width="640"></a></div>
<h4>
Processing the Data with Google App Engine</h4>
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 /><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 />
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>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 /><pre>private void GeolocateWifiSample(DataSnapshot sample,  Firebase db_geolocations, Firebase db_errors) {
    // initalize the context and request
    GeoApiContext context = new GeoApiContext(new GaeRequestHandler()).setApiKey("");
    GeolocationApiRequest request = GeolocationApi.newRequest(context)
            .ConsiderIp(false);
    // for every network that was reported in this sample...
    for (DataSnapshot wap : sample.child("networks").getChildren()) {
        // extract the network data from the database so it&#8217;s easier to work with
        String wapMac = wap.child("address").getValue(String.class);
        int wapSignalToNoise = wap.child("quality").getValue(int.class);
        int wapStrength = wap.child("signal").getValue(int.class);
        // include this network in our request
        request.AddWifiAccessPoint(new WifiAccessPoint.WifiAccessPointBuilder()
                .MacAddress(wapMac)
                .SignalStrength(wapStrength)
                .SignalToNoiseRatio(wapSignalToNoise)
                .createWifiAccessPoint());
    }
    ...
    try {
        // call the api
        GeolocationResult result = request.CreatePayload().await();
        ...
        // write results to the database and remove the original sample
    } catch (final NotFoundException e) {
        ...
    } catch (final Throwable e) {
        ...
    }
}</pre>
Register the <span>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 /><pre>ChildEventListener samplesListener = new ChildEventListener() {
    @Override
    public void onChildAdded(DataSnapshot dataSnapshot, String previousChildName) {
        // geolocate and write to new location
        GeolocateWifiSample(dataSnapshot, db_geolocations, db_errors);
    }
    ...
};
db_samples.addChildEventListener(samplesListener);</pre>
<h3>
Visualize the Data</h3>
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 &#60;div&#62; with id &#8220;map&#8221;. I initialized this &#60;div&#62; to contain the Google Map object. I also added &#8220;child_added&#8221; and &#8220;child_removed&#8221; event handlers to update the map as the data changes over time.<br /><pre>function initMap() {
    // attach listeners
    firebase.database().ref('/visualization').on('child_added', function(data) {
        ...
        data.ref.on('child_added', function(vizData) {
            circles[vizData.key]= new CircleRoyale(map,
                                vizData.val().lat,
                                vizData.val().lng,
                                vizData.val().accuracy,
                                color);
          set_latest_position(data.key, vizData.val().lat, vizData.val().lng);
        });
        data.ref.on('child_removed', function(data) {
            circles[data.key].removeFromMap();
        });
    });
    // create the map
    map = new google.maps.Map(document.getElementById('map'), {
      center: get_next_device(),
      zoom: 20,
      scaleControl: true,
    });
    ...
}</pre>
Since the API returns not only a location but also an indication of accuracy, I&#8217;ve created a custom marker that has a pulsing radius to indicate the accuracy component. <br /><table align="center" cellpadding="0" cellspacing="0"><tbody><tr><td><img height="359" src="https://lh3.googleusercontent.com/mwEs7P3LMkAHXjvvhi8R_bF2rV32R1TXsQe1ZmQLBnca-V5FgXnbRNPseaxFd6Y14TtRDWxS9mq90qCO87Ynp00cxGv7qWSf-_0pyj6nMnaVR20uQZgie00oRIgOBa3HbTWFhBAL" width="640"></td></tr><tr><td>Two devices (red and blue) and their last five known positions</td></tr></tbody></table><div>
<span></span></div>
<span></span><br /><h3>
What&#8217;s next?</h3>
In this post I&#8217;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&#160;<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 />
As an alternative, you can achieve a similar solution using Google Cloud Platform as a replacement for Firebase&#8212;<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 /><table><tbody><tr><td><br /><div>
<img alt="author image" border="0" src="https://lh6.googleusercontent.com/J9CJgmBXfg81AdomnyX_aCbetiE1SHVGkGcHSZT6dVfRBX_dOQ7rhj8gmbR8mR8SYSZ-RcZS5VOFZTZAg4zYryTeFJydgxkt5SrKSYTkyKKIRfxaHTs1965c7UEpUkkFtcX5IeP7"></div>
</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></tbody></table>]]></description>
				<content:encoded><![CDATA[<span class="post-author"><i>Posted by Ken Nevarez, Industry Solutions Lead at Google</i></span><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 />
We've seen recent growth in Internet of Things (IoT) applications using the <a href="https://developers.google.com/maps/documentation/geolocation/intro" >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 />
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/" >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 />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: &quot;open sans&quot;; 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>
<span id="docs-internal-guid-396aa1e6-1d66-a36b-25e2-9fad4bb1513a"></span><br />
<h3>
Set up the Device &amp; Write Locally</h3>
For this proof of concept, I used the <a href="https://software.intel.com/en-us/iot/hardware/edison" >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" >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" >Intel Edison</a>, a <a href="https://www.sparkfun.com/products/13045?_ga=1.195399918.391268827.1462892549" >Base Block</a>, a <a href="https://www.sparkfun.com/products/13037" >Battery Block</a> and a <a href="https://www.sparkfun.com/products/13187?_ga=1.202355155.391268827.1462892549" >Hardware pack</a>.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="background-color: white; color: #212121; font-family: &quot;arial&quot;; 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>
<span id="docs-internal-guid-396aa1e6-1d6e-ed53-b851-7da396a26e38"></span><br />
Developing for the Edison is straightforward using the <a href="https://software.intel.com/en-us/intel-xdk" >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" >Firebase</a> for the database connection, <a href="https://github.com/bakerface/wireless-tools" >wireless-tools/iwlist</a> to capture WiFi networks, and <a href="https://github.com/scravy/node-macaddress" >macaddress</a> to capture the device MAC. Installation instructions can be found on the linked pages.<br />
<br />
Step 1: get the device MAC address and connect to Firebase:<br />
<pre>function initialize() {
    macaddress.one('wlan0', function (err, mac) {
        mac_address = mac;
        if (mac === null) {
            console.log('exiting due to null mac Address');
            process.exit(1);
        }
        firebase.initializeApp({
            serviceAccount: '/node_app_slot/&lt;service-account-key&gt;.json',
            databaseURL: 'https://&lt;project-id&gt;.firebaseio.com/'
        });
        var db = firebase.database();
        ref_samples = db.ref('/samples');
        locationSample();
    });
}</pre>
The above code contains two placeholders:<br />
<br />
<ol>
<li>The <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , 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: &quot;courier new&quot; , &quot;courier&quot; , monospace;">/node_app_slot/</span>. See this <a href="https://firebase.google.com/docs/auth/android/custom-auth" >Firebase documentation</a> for more information.</li>
<li>The <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , 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>
</ol>
<br />
<br />
Step 2: scan for WiFi networks every 10 seconds and write locally:<br />
<pre>function locationSample() {
    var t = new Date();
    iwlist.scan('wlan0', function(err, networks) {
        if(err === null) {
            ref_samples.push({
                mac: mac_address,
                t_usec: t.getTime(),
                t_locale_string: t.toLocaleString(),
                networks: networks,
            });
        } else {
            console.log(err);
        }        
    });
    setTimeout(locationSample, 10000);
}</pre>
<h3>
Write to the cloud</h3>
The locationSample() function above writes detectable WiFi networks to a Firebase database that syncs to the cloud when connected to a network.<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" >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" >setting up the client JavaScript SDK</a>.<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 />
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 />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-MIJio2v0K7Q/WFl2r6Q2TfI/AAAAAAAAAkE/e8_n-lDVt306EzWQgxuEeT8LkD7OXbwUACLcB/s1600/Samples_iot.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="284" src="https://3.bp.blogspot.com/-MIJio2v0K7Q/WFl2r6Q2TfI/AAAAAAAAAkE/e8_n-lDVt306EzWQgxuEeT8LkD7OXbwUACLcB/s640/Samples_iot.png" width="640" /></a></div>
<h4>
Processing the Data with Google App Engine</h4>
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" >Java Client for Google Maps Services</a>. <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" >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 />
The <a href="https://github.com/googlemaps/google-maps-services-java" >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" >published best practices</a> for error handling and retry strategies that respect rate limits. The <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , 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 />
<pre>private void GeolocateWifiSample(DataSnapshot sample,  Firebase db_geolocations, Firebase db_errors) {
    // initalize the context and request
    GeoApiContext context = new GeoApiContext(new GaeRequestHandler()).setApiKey("<your api="" key="">");
    GeolocationApiRequest request = GeolocationApi.newRequest(context)
            .ConsiderIp(false);
    // for every network that was reported in this sample...
    for (DataSnapshot wap : sample.child("networks").getChildren()) {
        // extract the network data from the database so it’s easier to work with
        String wapMac = wap.child("address").getValue(String.class);
        int wapSignalToNoise = wap.child("quality").getValue(int.class);
        int wapStrength = wap.child("signal").getValue(int.class);
        // include this network in our request
        request.AddWifiAccessPoint(new WifiAccessPoint.WifiAccessPointBuilder()
                .MacAddress(wapMac)
                .SignalStrength(wapStrength)
                .SignalToNoiseRatio(wapSignalToNoise)
                .createWifiAccessPoint());
    }
    ...
    try {
        // call the api
        GeolocationResult result = request.CreatePayload().await();
        ...
        // write results to the database and remove the original sample
    } catch (final NotFoundException e) {
        ...
    } catch (final Throwable e) {
        ...
    }
}</your></pre>
Register the <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , 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 />
<pre>ChildEventListener samplesListener = new ChildEventListener() {
    @Override
    public void onChildAdded(DataSnapshot dataSnapshot, String previousChildName) {
        // geolocate and write to new location
        GeolocateWifiSample(dataSnapshot, db_geolocations, db_errors);
    }
    ...
};
db_samples.addChildEventListener(samplesListener);</pre>
<h3>
Visualize the Data</h3>
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 &lt;div&gt; with id “map”. I initialized this &lt;div&gt; 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 />
<pre>function initMap() {
    // attach listeners
    firebase.database().ref('/visualization').on('child_added', function(data) {
        ...
        data.ref.on('child_added', function(vizData) {
            circles[vizData.key]= new CircleRoyale(map,
                                vizData.val().lat,
                                vizData.val().lng,
                                vizData.val().accuracy,
                                color);
          set_latest_position(data.key, vizData.val().lat, vizData.val().lng);
        });
        data.ref.on('child_removed', function(data) {
            circles[data.key].removeFromMap();
        });
    });
    // create the map
    map = new google.maps.Map(document.getElementById('map'), {
      center: get_next_device(),
      zoom: 20,
      scaleControl: true,
    });
    ...
}</pre>
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 />
<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;"><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>
<tr><td class="tr-caption" style="text-align: center;">Two devices (red and blue) and their last five known positions</td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: center;">
<span style="background-color: white; color: #212121; font-family: &quot;arial&quot;; font-size: 13.3333px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"></span></div>
<span id="docs-internal-guid-396aa1e6-1d71-f36d-fff8-21bebd29678a"></span><br />
<h3>
What’s next?</h3>
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&nbsp;<a href="https://developers.google.com/maps/web-services/" >Web Services</a> providing geographic data such as <a href="https://developers.google.com/maps/documentation/directions/" >directions</a>, <a href="https://developers.google.com/maps/documentation/elevation/start" >elevation</a>, <a href="https://developers.google.com/places/web-service/" >place</a> or <a href="https://developers.google.com/maps/documentation/timezone/start" >time zone</a> information. Happy building!<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" >this article</a> shows you how.<br />
<table><tbody>
<tr> <td style="width: 80px;"><br />
<div class="separator" style="clear: both; text-align: center;">
<img alt="author image" border="0" src="https://lh6.googleusercontent.com/J9CJgmBXfg81AdomnyX_aCbetiE1SHVGkGcHSZT6dVfRBX_dOQ7rhj8gmbR8mR8SYSZ-RcZS5VOFZTZAg4zYryTeFJydgxkt5SrKSYTkyKKIRfxaHTs1965c7UEpUkkFtcX5IeP7" style="border-radius: 50%; width: 80px;" /></div>
</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>
</tbody></table>
]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/geolocation-and-firebase-for-the-internet-of-things/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Engage holiday shoppers with Promoted Places in Google Maps</title>
		<link>https://googledata.org/google-adwords/engage-holiday-shoppers-with-promoted-places-in-google-maps/</link>
		<comments>https://googledata.org/google-adwords/engage-holiday-shoppers-with-promoted-places-in-google-maps/#comments</comments>
		<pubDate>Thu, 15 Dec 2016 17:00:00 +0000</pubDate>
		<dc:creator><![CDATA[Rob Newton]]></dc:creator>
				<category><![CDATA[Google Adwords]]></category>
		<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[advertisers]]></category>
		<category><![CDATA[advertising]]></category>
		<category><![CDATA[adwords]]></category>
		<category><![CDATA[adwords google]]></category>
		<category><![CDATA[adwords tips]]></category>
		<category><![CDATA[google adwords help]]></category>
		<category><![CDATA[publishers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=b157e985c222c7d881026f9a48d3555f</guid>
		<description><![CDATA[During the busy holiday season, on-the-go shoppers are using their smartphones to find the perfect stocking stuffers, festive decor and gifts for loved ones. In fact, 70% of smartphone users who bought something in a store first turned to their devices for information relevant to that purchase. One in four of them also used a map through a web browser or an app before making the purchase.<sup>1</sup> This year, a number of brands are testing Promoted Places in Google Maps to showcase special offers and announcements to drive more foot traffic to their stores.<br /><br /><div></div><div><a href="https://3.bp.blogspot.com/-1u4FVYVQh88/WFHMAWfGTmI/AAAAAAAACqc/td8oVp7CES8-vIyzPuzRUgMKFZbAC-CVwCLcB/s1600/Trio%2Bof%2BPOI%2BClicks%2B.png"><img border="0" src="https://3.bp.blogspot.com/-1u4FVYVQh88/WFHMAWfGTmI/AAAAAAAACqc/td8oVp7CES8-vIyzPuzRUgMKFZbAC-CVwCLcB/s1600/Trio%2Bof%2BPOI%2BClicks%2B.png"></a></div><br /><br /><div></div>Some users have started seeing a limited test of Promoted Places in the Google Maps for Android app. It integrates seamlessly with the browsing experience, where places of interest are visually marked with icons to help users orient themselves and explore the world around them. With Promoted Places, advertisers can improve awareness for their stores by branding their location icons with their logo. Clicks on a business&#8217;s logo will reveal promotions such as in-store sales or new products and services to help consumers decide where to go. They can also view the business&#8217;s place page to see store hours, check <a href="https://blog.google/products/search/know-you-go-google/" rel="nofollow" target="_blank">live updates to Popular Times</a>, get directions, and more.<br /><br /><div><a href="https://1.bp.blogspot.com/-TmJct18SopE/WFGuG8kTMwI/AAAAAAAACpc/S-Fuw3eisZI9kQzE6WZsrStI3gdhCPdJQCEw/s1600/08%2BMAC%2BPlacesheet%2B%25281%2529.png"><img border="0" height="400" src="https://1.bp.blogspot.com/-TmJct18SopE/WFGuG8kTMwI/AAAAAAAACpc/S-Fuw3eisZI9kQzE6WZsrStI3gdhCPdJQCEw/s400/08%2BMAC%2BPlacesheet%2B%25281%2529.png" width="196"></a></div><br /><br /><div><a href="https://1.bp.blogspot.com/-CndkMRrC03g/WFGuHvUUBEI/AAAAAAAACpw/glfekn5XHB8LGfD8nw0o3GiuUEJ1HgXYACEw/s1600/MAC%2Blogo.png"><img border="0" height="83" src="https://1.bp.blogspot.com/-CndkMRrC03g/WFGuHvUUBEI/AAAAAAAACpw/glfekn5XHB8LGfD8nw0o3GiuUEJ1HgXYACEw/s200/MAC%2Blogo.png" width="200"></a></div><i>&#8220;We&#8217;re looking forward to testing Promoted Places to help us deliver a more branded and customized experience on Google Maps. It will allow us to spotlight our latest products with the goal of driving more shoppers in-store to get the full M&#183;A&#183;C Cosmetics experience.&#8221;</i><br /><i><b>- Laura Elkins, SVP of Global Marketing</b></i><br /><br /><div><a href="https://1.bp.blogspot.com/-eD1vD7JXLy0/WFGuH5UXwDI/AAAAAAAACp0/Rt3mSUtnZXU7PciBwDrdbMUD0B7IT46cACEw/s1600/Walgreens%2Blogo.jpg"><img border="0" height="200" src="https://1.bp.blogspot.com/-eD1vD7JXLy0/WFGuH5UXwDI/AAAAAAAACp0/Rt3mSUtnZXU7PciBwDrdbMUD0B7IT46cACEw/s200/Walgreens%2Blogo.jpg" width="200"></a></div><i>&#8220;Innovation is part of our DNA and we&#8217;re continually evaluating meaningful and contextually relevant ways to connect with our customers. Staying top of mind, especially during the competitive holiday season, requires a mix of tried and true, including breakthrough strategies. Promoted Places in Google Maps can help drive incremental store traffic and promote Walgreens as a go-to destination for small gifts. This gives us a new and different way to highlight seasonal offerings through visuals and engaging copy. Combined with the breadth of our store locations in the community, this aligns with our goals of driving loyalty and giving customers more reasons to choose Walgreens for their holiday needs.&#8221;</i><br /><i><b>- Andrea Kaduk, Director of SEM &#38; Social</b></i><br /><br /><div><a href="https://3.bp.blogspot.com/-69-LvLgoLGg/WFGuHjD4RnI/AAAAAAAACpo/Z1kkBBmDTk8atsOlXcJv3-A41ph8c4n3ACEw/s1600/Starbucks%2Blogo.jpeg"><img border="0" height="200" src="https://3.bp.blogspot.com/-69-LvLgoLGg/WFGuHjD4RnI/AAAAAAAACpo/Z1kkBBmDTk8atsOlXcJv3-A41ph8c4n3ACEw/s200/Starbucks%2Blogo.jpeg" width="200"></a></div><i>"With Promoted Places, we can enhance our presence on Google Maps and give users a glimpse of our brand and coffeehouses before they even get there. Having our logo on the map helps our locations jump out and promoting our favourite menu items gives people a reason to choose us."</i><br /><i><b>- Jamie McQuary, Senior Marketing Manager</b></i><br /><br /><br /><br />This holiday season, Promoted Places will help businesses stand out to busy shoppers in the moments they&#8217;re figuring out where to go. We&#8217;re excited to test new experiences that help consumers discover nearby sales and promotions and allow businesses to reach more people through Google Maps.  <span>&#160;</span><br /><br /><span><i>Posted by: Cynthia Johanson, Product Manager, AdWords</i> </span><br /><br /><hr /><span><i>1.  Google/Purchased Digital Diary: How Consumers Solve Their Needs in the Moment, May 2016, Smartphone users = 1000. Offline Purchasers = 696</i></span>]]></description>
				<content:encoded><![CDATA[During the busy holiday season, on-the-go shoppers are using their smartphones to find the perfect stocking stuffers, festive decor and gifts for loved ones. In fact, 70% of smartphone users who bought something in a store first turned to their devices for information relevant to that purchase. One in four of them also used a map through a web browser or an app before making the purchase.<sup>1</sup> This year, a number of brands are testing Promoted Places in Google Maps to showcase special offers and announcements to drive more foot traffic to their stores.<br /><br /><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-1u4FVYVQh88/WFHMAWfGTmI/AAAAAAAACqc/td8oVp7CES8-vIyzPuzRUgMKFZbAC-CVwCLcB/s1600/Trio%2Bof%2BPOI%2BClicks%2B.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://3.bp.blogspot.com/-1u4FVYVQh88/WFHMAWfGTmI/AAAAAAAACqc/td8oVp7CES8-vIyzPuzRUgMKFZbAC-CVwCLcB/s1600/Trio%2Bof%2BPOI%2BClicks%2B.png" /></a></div><br /><br /><div class="separator" style="clear: both; text-align: center;"></div>Some users have started seeing a limited test of Promoted Places in the Google Maps for Android app. It integrates seamlessly with the browsing experience, where places of interest are visually marked with icons to help users orient themselves and explore the world around them. With Promoted Places, advertisers can improve awareness for their stores by branding their location icons with their logo. Clicks on a business’s logo will reveal promotions such as in-store sales or new products and services to help consumers decide where to go. They can also view the business’s place page to see store hours, check <a href="https://blog.google/products/search/know-you-go-google/" rel="nofollow" >live updates to Popular Times</a>, get directions, and more.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-TmJct18SopE/WFGuG8kTMwI/AAAAAAAACpc/S-Fuw3eisZI9kQzE6WZsrStI3gdhCPdJQCEw/s1600/08%2BMAC%2BPlacesheet%2B%25281%2529.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://1.bp.blogspot.com/-TmJct18SopE/WFGuG8kTMwI/AAAAAAAACpc/S-Fuw3eisZI9kQzE6WZsrStI3gdhCPdJQCEw/s400/08%2BMAC%2BPlacesheet%2B%25281%2529.png" width="196" /></a></div><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-CndkMRrC03g/WFGuHvUUBEI/AAAAAAAACpw/glfekn5XHB8LGfD8nw0o3GiuUEJ1HgXYACEw/s1600/MAC%2Blogo.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 3em;"><img border="0" height="83" src="https://1.bp.blogspot.com/-CndkMRrC03g/WFGuHvUUBEI/AAAAAAAACpw/glfekn5XHB8LGfD8nw0o3GiuUEJ1HgXYACEw/s200/MAC%2Blogo.png" width="200" /></a></div><i>“We’re looking forward to testing Promoted Places to help us deliver a more branded and customized experience on Google Maps. It will allow us to spotlight our latest products with the goal of driving more shoppers in-store to get the full M·A·C Cosmetics experience.”</i><br /><i><b>- Laura Elkins, SVP of Global Marketing</b></i><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-eD1vD7JXLy0/WFGuH5UXwDI/AAAAAAAACp0/Rt3mSUtnZXU7PciBwDrdbMUD0B7IT46cACEw/s1600/Walgreens%2Blogo.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="200" src="https://1.bp.blogspot.com/-eD1vD7JXLy0/WFGuH5UXwDI/AAAAAAAACp0/Rt3mSUtnZXU7PciBwDrdbMUD0B7IT46cACEw/s200/Walgreens%2Blogo.jpg" width="200" /></a></div><i>“Innovation is part of our DNA and we’re continually evaluating meaningful and contextually relevant ways to connect with our customers. Staying top of mind, especially during the competitive holiday season, requires a mix of tried and true, including breakthrough strategies. Promoted Places in Google Maps can help drive incremental store traffic and promote Walgreens as a go-to destination for small gifts. This gives us a new and different way to highlight seasonal offerings through visuals and engaging copy. Combined with the breadth of our store locations in the community, this aligns with our goals of driving loyalty and giving customers more reasons to choose Walgreens for their holiday needs.”</i><br /><i><b>- Andrea Kaduk, Director of SEM &amp; Social</b></i><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-69-LvLgoLGg/WFGuHjD4RnI/AAAAAAAACpo/Z1kkBBmDTk8atsOlXcJv3-A41ph8c4n3ACEw/s1600/Starbucks%2Blogo.jpeg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 3em;"><img border="0" height="200" src="https://3.bp.blogspot.com/-69-LvLgoLGg/WFGuHjD4RnI/AAAAAAAACpo/Z1kkBBmDTk8atsOlXcJv3-A41ph8c4n3ACEw/s200/Starbucks%2Blogo.jpeg" width="200" /></a></div><i>"With Promoted Places, we can enhance our presence on Google Maps and give users a glimpse of our brand and coffeehouses before they even get there. Having our logo on the map helps our locations jump out and promoting our favourite menu items gives people a reason to choose us."</i><br /><i><b>- Jamie McQuary, Senior Marketing Manager</b></i><br /><br /><br /><br />This holiday season, Promoted Places will help businesses stand out to busy shoppers in the moments they’re figuring out where to go. We’re excited to test new experiences that help consumers discover nearby sales and promotions and allow businesses to reach more people through Google Maps.  <span class="byline-author">&nbsp;</span><br /><br /><span class="byline-author"><i>Posted by: Cynthia Johanson, Product Manager, AdWords</i> </span><br /><br /><hr /><span style="font-size: small;"><i>1.  Google/Purchased Digital Diary: How Consumers Solve Their Needs in the Moment, May 2016, Smartphone users = 1000. Offline Purchasers = 696</i></span>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-adwords/engage-holiday-shoppers-with-promoted-places-in-google-maps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Address Geocoding in the Google Maps APIs</title>
		<link>https://googledata.org/google-maps/address-geocoding-in-the-google-maps-apis/</link>
		<comments>https://googledata.org/google-maps/address-geocoding-in-the-google-maps-apis/#comments</comments>
		<pubDate>Tue, 22 Nov 2016 23:43:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=81690be2e957d201ae29c25813978bd5</guid>
		<description><![CDATA[Forward 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&#8217;s where to start.<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 /><h3>
Geocoding API</h3>
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, &#8220;48 Pirrama Rd, Pyrmont, NSW, Australia&#8221;). 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 &#8220;123 Main St&#8221;, or if it handles queries that may contain non-address information such as apartment numbers or business names.<br /><table align="center" cellpadding="0" cellspacing="0"><tbody><tr><td><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" width="602"></td></tr><tr><td>Geocoding API is best used for unambiguous complete addresses, such as "48 Pirrama Rd, Pyrmont, NSW, Australia"&#160;</td></tr></tbody></table><div>
<span></span></div>
<h3>
Places API</h3>
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 /><h4>
<br />
Place Autocomplete service</h4>
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 &#8220;123 Main St&#8221;. 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&#8217;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 /><table align="center" cellpadding="0" cellspacing="0"><tbody><tr><td><img alt="Screen Shot 2016-11-14 at 5.35.53 PM.png" height="284" src="https://lh6.googleusercontent.com/xtLpYrNIZ6qEQojbStjanO5rmt6JIbP9JqOFOQf7YvKzUK60NZeg597t7uIiR-b4TfVALbYF4eaNFtORO736wHQe4uq-9ibfiiJ1s8kXMDSLccABAt4oy7kiUeIo3dRBPP7Vosux" width="602"></td></tr><tr><td>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></tbody></table><h4>
Place Search service</h4>
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 />
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 /><h2>
Future Changes to Geocoding API</h2>
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>ZERO_RESULTS</span> for ambiguous or incomplete queries where the Geocoding API was unable to find a high quality result. <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 />
You can try the new Geocoding service ahead of launch by adding an optional parameter, <span>new_forward_geocoder=true</span>, to your Geocoding API request. For example:<br /><br /><code>https://maps.googleapis.com/maps/api/geocode/json?new_forward_geocoder=true&#38;address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&#38;key=YOUR_API_KEY</code><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>newForwardGeocoder: true</span> in the <span><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 />
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&#38;utm_source=geodevsite&#38;utm_medium=website&#38;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost" target="_blank">issue tracker</a>.<br /><br /><h2>
In Summary</h2>
The following table sums up when we recommend you use the Geocoding API, Place Autocomplete service and Place Search service.<br /><br /><div dir="ltr">
<table><tbody><tr><th><br /></th>            <th>Geocoding API</th>            <th>Place Search</th>            <th>Place Autocomplete</th>           </tr><tr><td>Scope</td>            <td>Addresses only</td>            <td colspan="2">Semantic locations and addresses, including businesses and points of interest</td>           </tr><tr><td>Strengths</td>            <td>Unambiguous complete addresses</td>                        <td>Ambiguous or incomplete addresses in automated systems</td>            <td>Responding to real-time user input</td>              </tr></tbody></table></div>
<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>new_forward_geocoder=true</span> in your geocoding request.<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 />
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&#38;utm_source=geodevsite&#38;utm_medium=website&#38;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 /><table><tbody><tr><td><br /><div>
<img alt="author image" border="0" src="https://lh6.googleusercontent.com/mbzhN4UgcBZWGmNITagTVcFZZBsOqxRKXwzK6231tfvjiRMN0JwZYDL--z0X3qgQUmvW-e5c9qZwETINRrS4i1whh9LwqRcM27pTVPGhePv1WmWRxC3_twbglXD3wFXPshuSPnuT"></div>
</td>  <td><i>Posted by Elena Kelareva, Product Manager, Google Maps APIs</i></td></tr></tbody></table>]]></description>
				<content:encoded><![CDATA[Forward 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" >Geocoding API</a>, the <a href="https://developers.google.com/places/web-service/autocomplete" >Place Autocomplete service in Places API</a>, and the <a href="https://developers.google.com/places/web-service/search" >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 />
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 />
<h3>
Geocoding API</h3>
The <a href="https://developers.google.com/maps/documentation/geocoding/start" >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 />
<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;"><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>
<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"&nbsp;</td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: &quot;open sans&quot;; font-size: 13.3333px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"></span></div>
<h3>
Places API</h3>
The <a href="https://developers.google.com/places/" >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" >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 />
<h4>
<br />
Place Autocomplete service</h4>
For applications that respond in real time to user input, we recommend using the <a href="https://developers.google.com/places/web-service/autocomplete" >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 />
<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;"><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>
<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>
</tbody></table>
<h4>
Place Search service</h4>
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 />
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" >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 />
<h2>
Future Changes to Geocoding API</h2>
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: &quot;courier new&quot; , &quot;courier&quot; , monospace;">ZERO_RESULTS</span> for ambiguous or incomplete queries where the Geocoding API was unable to find a high quality result. <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 />
You can try the new Geocoding service ahead of launch by adding an optional parameter, <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">new_forward_geocoder=true</span>, to your Geocoding API request. For example:<br />
<br />
<code>https://maps.googleapis.com/maps/api/geocode/json?new_forward_geocoder=true&amp;address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&amp;key=YOUR_API_KEY</code><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: &quot;courier new&quot; , &quot;courier&quot; , monospace;">newForwardGeocoder: true</span> in the <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;"><a href="https://developers.google.com/maps/documentation/javascript/3.exp/reference#GeocoderRequest" >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 />
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&amp;utm_source=geodevsite&amp;utm_medium=website&amp;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost" >issue tracker</a>.<br />
<br />
<h2>
In Summary</h2>
The following table sums up when we recommend you use the Geocoding API, Place Autocomplete service and Place Search service.<br />
<br />
<div dir="ltr" style="margin-left: 0pt;">
<table style="border-collapse: collapse; border: 1px solid #000; width: 650px;"><tbody>
<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>
<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>
<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>
</tbody></table>
</div>
<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: &quot;courier new&quot; , &quot;courier&quot; , monospace;">new_forward_geocoder=true</span> in your geocoding request.<br />
<br />
For more information on the <a href="https://developers.google.com/maps/documentation/geocoding/intro" >Google Maps Geocoding API</a>, <a href="https://developers.google.com/places/web-service/autocomplete" >Place Autocomplete in the Places API</a> and <a href="https://developers.google.com/places/web-service/search" >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" >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 />
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&amp;utm_source=geodevsite&amp;utm_medium=website&amp;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost" >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 />
<table><tbody>
<tr> <td style="width: 80px;"><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>
</tbody></table>
]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/address-geocoding-in-the-google-maps-apis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Smart scrolling comes to mobile web maps</title>
		<link>https://googledata.org/google-maps/smart-scrolling-comes-to-mobile-web-maps/</link>
		<comments>https://googledata.org/google-maps/smart-scrolling-comes-to-mobile-web-maps/#comments</comments>
		<pubDate>Wed, 16 Nov 2016 00:23:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=3d0bd0c7ddf67a2d245dfb938dd9a88b</guid>
		<description><![CDATA[If you&#8217;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 /><div><span><img alt="bullheadN5D91Lstephenmcd11092016101027.gif" height="400" src="https://lh4.googleusercontent.com/uyDwFMVDIv4RKrh4H-Q5LHce7uLvypuemiL550bh61ghfnydiiwRiJaJCAxJ6HBkvgowSRoLLaqKeh1VN_3VetpWl10KEKtAq56EtZvfjPf25BgXXwK_taS8xB0vocXraN1sSfQv" width="200"></span></div><span></span><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 />
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 /><h4>The map trap</h4>We have added a new <span>gestureHandling</span> option to the Google Maps JavaScript API. This setting controls how touch gestures* on the map are handled.<br /><br />
Values:<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>
<li>"greedy": All touch gestures pan or zoom the map. This was the previous behaviour.</li>
<li>"none": The map cannot be panned or zoomed by user gestures.</li>
<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>
<li>If the page is scrollable, &#8220;auto&#8221; sets the gesture handling mode to cooperative.</li>
<li>If the page is not scrollable, &#8220;auto&#8221; sets the gesture handling to greedy.</li>
<li>If the map is in an iFrame, &#8220;auto&#8221; sets the gesture handling to cooperative because the API can&#8217;t determine whether the page is scrollable.</li>
</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&#8217;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&#38;utm_medium=website&#38;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost" target="_blank">issue tracker</a>.</i><br /><ul></ul>You can enable any of these four gesture handling modes by adding the corresponding field to the <span>MapOptions</span> object. For example:<br /><br /><blockquote>map = new google.maps.Map(document.getElementById('map-div'), {<br />
gestureHandling: 'cooperative',<br />
center: {lat: -34.397, lng: 150.644},<br />
zoom: 8<br />
});</blockquote><br />
If the <span>gestureHandling</span> option is not set, the default value is <span>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>gestureHandling</span> to <span>greedy</span>, which sends all user gestures to the map.<br /><table align="center" cellpadding="0" cellspacing="0"><tbody><tr><td><a href="https://2.bp.blogspot.com/-MSbC14vWMtI/WCuEUoAK7CI/AAAAAAAAAjo/UgCnPhHizrQaBjqygtdm2KfhIVVGMSjfQCLcB/s1600/scroll_lock.png"><img border="0" height="400" src="https://2.bp.blogspot.com/-MSbC14vWMtI/WCuEUoAK7CI/AAAAAAAAAjo/UgCnPhHizrQaBjqygtdm2KfhIVVGMSjfQCLcB/s400/scroll_lock.png" width="322"></a></td></tr><tr><td>Maps viewed within a scrollable website on a mobile device will display this overlay on touch</td></tr></tbody></table>The <span>option draggable: false</span> has now been superseded by <span>gestureHandling: 'none'</span>. The old option <span>draggable</span> is now deprecated, but we&#8217;ll maintain backwards compatibility. Developers who previously turned off map interaction by setting <span>draggable</span> to <span>false</span> will keep their existing non-interactive maps.<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>fullscreenControl</span> option to <span>true</span> or <span>false</span> in the <span>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 />
The default setting of <span>fullscreenControl</span> is <span>true</span> on mobile browsers, and <span>false</span> on desktop browsers, since the problem of maps being too small for interaction usually only occurs on mobile devices.<br /><table align="center" cellpadding="0" cellspacing="0"><tbody><tr><td><img alt="ScrollLockScreenshot.png" height="368" src="https://lh3.googleusercontent.com/8HW2ZyCeJ1eF1-WSyesNN0OmZY55GpUidiVUkqtw2mmGyuXs3DE7kFTqVgurd-0SYIffgBmBrDEBCNDDKylOGjy-tnvBYaliU9eWjGBfnjWnIQ07k5jeH25bleeg1TI1yYzsWa_a" width="349"></td></tr><tr><td>The fullscreen control allows the user to make the map larger for easier interaction</td></tr></tbody></table><div><span></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>cooperative</span> gesture handling mode (or <span>auto</span> gesture handling mode on a scrollable site) will look to your users.<span></span><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 />
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&#38;utm_medium=website&#38;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 /><table><tbody><tr><td><br /><div><img alt="author image" border="0" src="https://lh6.googleusercontent.com/mbzhN4UgcBZWGmNITagTVcFZZBsOqxRKXwzK6231tfvjiRMN0JwZYDL--z0X3qgQUmvW-e5c9qZwETINRrS4i1whh9LwqRcM27pTVPGhePv1WmWRxC3_twbglXD3wFXPshuSPnuT"></div></td>  <td><i>Posted by Elena Kelareva, Product Manager, Google Maps APIs</i></td></tr></tbody></table><br />]]></description>
				<content:encoded><![CDATA[If 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/" >guide to building mobile-friendly websites</a>, to a <a href="https://www.google.com/webmasters/tools/mobile-friendly/" >mobile-friendly testing tool</a>, to promoting new mobile web technologies such as <a href="https://www.ampproject.org/" >Accelerated Mobile Pages</a> and <a href="https://developers.google.com/web/progressive-web-apps/" >Progressive Web Apps</a>.<br />
<div class="separator" style="clear: both; text-align: center;"><span style="color: #444444; font-family: &quot;arial&quot;; 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 />
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 />
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 />
<h4>The map trap</h4>We have added a new <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">gestureHandling</span> option to the Google Maps JavaScript API. This setting controls how touch gestures* on the map are handled.<br />
<br />
Values:<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>
<li>"greedy": All touch gestures pan or zoom the map. This was the previous behaviour.</li>
<li>"none": The map cannot be panned or zoomed by user gestures.</li>
<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>
<li style="margin-left: 20px;">If the page is scrollable, “auto” sets the gesture handling mode to cooperative.</li>
<li style="margin-left: 20px;">If the page is not scrollable, “auto” sets the gesture handling to greedy.</li>
<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>
</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&amp;utm_medium=website&amp;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost" >issue tracker</a>.</i><br />
<ul></ul>You can enable any of these four gesture handling modes by adding the corresponding field to the <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">MapOptions</span> object. For example:<br />
<br />
<blockquote class="tr_bq" style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">map = new google.maps.Map(document.getElementById('map-div'), {<br />
gestureHandling: 'cooperative',<br />
center: {lat: -34.397, lng: 150.644},<br />
zoom: 8<br />
});</blockquote><br />
If the <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">gestureHandling</span> option is not set, the default value is <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , 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: &quot;courier new&quot; , &quot;courier&quot; , monospace;">gestureHandling</span> to <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">greedy</span>, which sends all user gestures to the map.<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://2.bp.blogspot.com/-MSbC14vWMtI/WCuEUoAK7CI/AAAAAAAAAjo/UgCnPhHizrQaBjqygtdm2KfhIVVGMSjfQCLcB/s1600/scroll_lock.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="400" src="https://2.bp.blogspot.com/-MSbC14vWMtI/WCuEUoAK7CI/AAAAAAAAAjo/UgCnPhHizrQaBjqygtdm2KfhIVVGMSjfQCLcB/s400/scroll_lock.png" width="322" /></a></td></tr>
<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>
</tbody></table>The <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">option draggable: false</span> has now been superseded by <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">gestureHandling: 'none'</span>. The old option <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , 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: &quot;courier new&quot; , &quot;courier&quot; , monospace;">draggable</span> to <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">false</span> will keep their existing non-interactive maps.<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: &quot;courier new&quot; , &quot;courier&quot; , monospace;">fullscreenControl</span> option to <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">true</span> or <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">false</span> in the <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , 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 />
The default setting of <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">fullscreenControl</span> is <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">true</span> on mobile browsers, and <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">false</span> on desktop browsers, since the problem of maps being too small for interaction usually only occurs on mobile devices.<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;"><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>
<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>
</tbody></table><div class="separator" style="clear: both; text-align: center;"><span style="color: #444444; font-family: &quot;arial&quot;; 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" >demo</a> on a mobile device to see how the fullscreen button and <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">cooperative</span> gesture handling mode (or <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , 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 />
For more information on the Google Maps JavaScript API, please see the <a href="https://developers.google.com/maps/documentation/javascript/interaction" >developer documentation</a> or review the latest <a href="https://developers.google.com/maps/documentation/javascript/releases" >release notes</a>.<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&amp;utm_medium=website&amp;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost" >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 />
<table><tbody>
<tr> <td style="width: 80px;"><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>
</tbody></table><br />
]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/smart-scrolling-comes-to-mobile-web-maps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Key Improvements for Your Maps API Experience</title>
		<link>https://googledata.org/google-maps/key-improvements-for-your-maps-api-experience/</link>
		<comments>https://googledata.org/google-maps/key-improvements-for-your-maps-api-experience/#comments</comments>
		<pubDate>Tue, 04 Oct 2016 20:31:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=9870fc60c50246ed836158d1c27a8b6e</guid>
		<description><![CDATA[<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 />
Posted by Israel Shalom, Product Manager<br /><br />
Here at Google, we&#8217;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&#8217;re introducing a few improvements for the API experience: more flexible keys, a streamlined 'getting-started' experience, and easy monitoring.<br /><br /><h2>
Faster, more flexible key generation</h2>
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&#8217;re making this step simpler -- reducing the old multi-step process with a single click:<br /><br /><div>
<a href="https://3.bp.blogspot.com/-PiplwceluOw/V_QQDUd3Q5I/AAAAAAAAAi8/Hhlby8j2VXYMsMNvHUbsMdqOPqu16af-QCLcB/s1600/image00.png"><img border="0" height="393" src="https://3.bp.blogspot.com/-PiplwceluOw/V_QQDUd3Q5I/AAAAAAAAAi8/Hhlby8j2VXYMsMNvHUbsMdqOPqu16af-QCLcB/s1600/image00.png" width="640"></a></div>
<div>
<a href="https://2.bp.blogspot.com/-EMwpqndQPr0/V_QQDS_qT3I/AAAAAAAAAi0/5NkA3dxQW185LRJbrs_hWe3tOeVnZZI2ACEw/s1600/image01.png"><img border="0" height="348" src="https://2.bp.blogspot.com/-EMwpqndQPr0/V_QQDS_qT3I/AAAAAAAAAi0/5NkA3dxQW185LRJbrs_hWe3tOeVnZZI2ACEw/s640/image01.png" width="640"></a></div>
<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 /><div>
<a href="https://2.bp.blogspot.com/-j9PNS8OXJeI/V_QQDZIbgEI/AAAAAAAAAi4/bQKlJYSbGmsVadvdm4VeBqr-tIWTHscJQCEw/s1600/image02.png"><img border="0" height="394" src="https://2.bp.blogspot.com/-j9PNS8OXJeI/V_QQDZIbgEI/AAAAAAAAAi4/bQKlJYSbGmsVadvdm4VeBqr-tIWTHscJQCEw/s640/image02.png" width="640"></a></div>
<h2>
Streamlined getting started flow</h2>
We realize that many developers want to get straight to creation and don&#8217;t necessarily want to step into the console. We&#8217;ve just introduced an in-flow credential set up procedure directly embedded within the developer documentation:<br /><br /><div>
<a href="https://4.bp.blogspot.com/-tjvfXqGBITU/V_QQDukglsI/AAAAAAAAAjE/TWIdXKSXYVMygo8jdG1uzzjDO2ttkn8IgCEw/s1600/image03.png"><img border="0" height="348" src="https://4.bp.blogspot.com/-tjvfXqGBITU/V_QQDukglsI/AAAAAAAAAjE/TWIdXKSXYVMygo8jdG1uzzjDO2ttkn8IgCEw/s640/image03.png" width="640"></a></div>
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 /><div>
<a href="https://1.bp.blogspot.com/-0xPgSsjhBKY/V_QQDpPnMzI/AAAAAAAAAjI/5_-PFoAIitoHKjSfbNydwhJbJNUUczg-gCEw/s1600/image04.png"><img border="0" height="348" src="https://1.bp.blogspot.com/-0xPgSsjhBKY/V_QQDpPnMzI/AAAAAAAAAjI/5_-PFoAIitoHKjSfbNydwhJbJNUUczg-gCEw/s640/image04.png" width="640"></a></div>
<div>
<a href="https://3.bp.blogspot.com/-1cghGvn22H8/V_QQDvlTTnI/AAAAAAAAAjA/hzLWCEVazg8UbZcWy072TjArL4pcEBtMwCEw/s1600/image05.png"><img border="0" height="348" src="https://3.bp.blogspot.com/-1cghGvn22H8/V_QQDvlTTnI/AAAAAAAAAjA/hzLWCEVazg8UbZcWy072TjArL4pcEBtMwCEw/s640/image05.png" width="640"></a></div>
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 /><h2>
API Dashboard</h2>
We&#8217;re not just making it easier to get started, we&#8217;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 />
If you&#8217;ve enabled any APIs, the dashboard is front and center in the API Console. There you can view all the APIs you&#8217;re using along with usage, error and latency data:<br /><br /><div>
<a href="https://2.bp.blogspot.com/-NizNL1ObTEo/V_QQD6W5bgI/AAAAAAAAAjM/i7YGszmnwEwYu0UXI8vzKTuQhi9vHmLSQCEw/s1600/image06.png"><img border="0" height="348" src="https://2.bp.blogspot.com/-NizNL1ObTEo/V_QQD6W5bgI/AAAAAAAAAjM/i7YGszmnwEwYu0UXI8vzKTuQhi9vHmLSQCEw/s640/image06.png" width="640"></a></div>
<br />
Clicking on an API will jump to a detailed report, where you&#8217;ll see the traffic sliced by methods, credentials, versions and response code (available on select APIs):<br /><div>
<a href="https://2.bp.blogspot.com/-MAfBT4sty8I/V_QQD-tJcCI/AAAAAAAAAjQ/_OnHBY7HbDEpx582uEczZ8B3QsjD4zlsgCEw/s1600/image07.png"><img border="0" height="346" src="https://2.bp.blogspot.com/-MAfBT4sty8I/V_QQD-tJcCI/AAAAAAAAAjQ/_OnHBY7HbDEpx582uEczZ8B3QsjD4zlsgCEw/s640/image07.png" width="640"></a></div>
<br /><br />
We hope these new features make your API usage easier, and we can't wait to see what you&#8217;re going to build next!]]></description>
				<content:encoded><![CDATA[<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 />
Posted by Israel Shalom, Product Manager<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 />
<h2>
Faster, more flexible key generation</h2>
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 />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-PiplwceluOw/V_QQDUd3Q5I/AAAAAAAAAi8/Hhlby8j2VXYMsMNvHUbsMdqOPqu16af-QCLcB/s1600/image00.png" imageanchor="1"><img border="0" height="393" src="https://3.bp.blogspot.com/-PiplwceluOw/V_QQDUd3Q5I/AAAAAAAAAi8/Hhlby8j2VXYMsMNvHUbsMdqOPqu16af-QCLcB/s1600/image00.png" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-EMwpqndQPr0/V_QQDS_qT3I/AAAAAAAAAi0/5NkA3dxQW185LRJbrs_hWe3tOeVnZZI2ACEw/s1600/image01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="348" src="https://2.bp.blogspot.com/-EMwpqndQPr0/V_QQDS_qT3I/AAAAAAAAAi0/5NkA3dxQW185LRJbrs_hWe3tOeVnZZI2ACEw/s640/image01.png" width="640" /></a></div>
<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" >scope management</a> as a best practice:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-j9PNS8OXJeI/V_QQDZIbgEI/AAAAAAAAAi4/bQKlJYSbGmsVadvdm4VeBqr-tIWTHscJQCEw/s1600/image02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="394" src="https://2.bp.blogspot.com/-j9PNS8OXJeI/V_QQDZIbgEI/AAAAAAAAAi4/bQKlJYSbGmsVadvdm4VeBqr-tIWTHscJQCEw/s640/image02.png" width="640" /></a></div>
<h2>
Streamlined getting started flow</h2>
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 />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-tjvfXqGBITU/V_QQDukglsI/AAAAAAAAAjE/TWIdXKSXYVMygo8jdG1uzzjDO2ttkn8IgCEw/s1600/image03.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="348" src="https://4.bp.blogspot.com/-tjvfXqGBITU/V_QQDukglsI/AAAAAAAAAjE/TWIdXKSXYVMygo8jdG1uzzjDO2ttkn8IgCEw/s640/image03.png" width="640" /></a></div>
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 />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-0xPgSsjhBKY/V_QQDpPnMzI/AAAAAAAAAjI/5_-PFoAIitoHKjSfbNydwhJbJNUUczg-gCEw/s1600/image04.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="348" src="https://1.bp.blogspot.com/-0xPgSsjhBKY/V_QQDpPnMzI/AAAAAAAAAjI/5_-PFoAIitoHKjSfbNydwhJbJNUUczg-gCEw/s640/image04.png" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-1cghGvn22H8/V_QQDvlTTnI/AAAAAAAAAjA/hzLWCEVazg8UbZcWy072TjArL4pcEBtMwCEw/s1600/image05.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="348" src="https://3.bp.blogspot.com/-1cghGvn22H8/V_QQDvlTTnI/AAAAAAAAAjA/hzLWCEVazg8UbZcWy072TjArL4pcEBtMwCEw/s640/image05.png" width="640" /></a></div>
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 />
<h2>
API Dashboard</h2>
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 />
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 />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-NizNL1ObTEo/V_QQD6W5bgI/AAAAAAAAAjM/i7YGszmnwEwYu0UXI8vzKTuQhi9vHmLSQCEw/s1600/image06.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="348" src="https://2.bp.blogspot.com/-NizNL1ObTEo/V_QQD6W5bgI/AAAAAAAAAjM/i7YGszmnwEwYu0UXI8vzKTuQhi9vHmLSQCEw/s640/image06.png" width="640" /></a></div>
<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 />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-MAfBT4sty8I/V_QQD-tJcCI/AAAAAAAAAjQ/_OnHBY7HbDEpx582uEczZ8B3QsjD4zlsgCEw/s1600/image07.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="346" src="https://2.bp.blogspot.com/-MAfBT4sty8I/V_QQD-tJcCI/AAAAAAAAAjQ/_OnHBY7HbDEpx582uEczZ8B3QsjD4zlsgCEw/s640/image07.png" width="640" /></a></div>
<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!]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/key-improvements-for-your-maps-api-experience/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>A sizzling open source release for the Australian Election site</title>
		<link>https://googledata.org/google-maps/a-sizzling-open-source-release-for-the-australian-election-site/</link>
		<comments>https://googledata.org/google-maps/a-sizzling-open-source-release-for-the-australian-election-site/#comments</comments>
		<pubDate>Tue, 27 Sep 2016 16:58:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=5ee332b1176b0a9094425e03bdae57a3</guid>
		<description><![CDATA[One of the best parts of my job at Google is 20 percent time. While I was hired to help developers use Google&#8217;s APIs, I value the time I'm afforded to be a student myself&#8212;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 /><div>
<a href="https://3.bp.blogspot.com/-NLoI9t3m8yE/V-qgOgVGKOI/AAAAAAAAAiU/IqaTGuVyE70_rS0pi3sdyZOpCTkzwIjhACLcB/s1600/AU_elections_team.png"><img border="0" height="198" src="https://3.bp.blogspot.com/-NLoI9t3m8yE/V-qgOgVGKOI/AAAAAAAAAiU/IqaTGuVyE70_rS0pi3sdyZOpCTkzwIjhACLcB/s640/AU_elections_team.png" width="640"></a></div>
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&#8217;s APIs, programming languages, and Cloud hosting with Firebase and Google Cloud Platform.<br /><div>
<span><img height="393" src="https://lh3.googleusercontent.com/Ks1wpzKxi5hj_SLnBal7joAXN4ZV5dS_uwNsrvMaY24kB-IxbcWR5IT-pLYBojQhqzRDCO7JS3nPy7p_PYkH5VCPI51QTSUOyZBYQrroSkDGJywfZB5DXSo3nFUkyF1kPguBba8t" width="640"></span></div>
<span></span><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>&#160;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 />
The <a href="https://github.com/google/election-au-2016" target="_blank">Election AU 2016 repository</a> uses:<br /><br /><ul><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>
<li><b>Dart</b> to render the live result maps on top of Google Maps JavaScript API using Firebase real time database updates.</li>
</ul><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 /><ul><li>406,000 people used our maps, including 217,000 on election day.</li>
<li>We had 139 stories in the media.</li>
<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>
</ul><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 /><table><tbody><tr><td><br /><div>
<img alt="author image" border="0" src="https://lh6.googleusercontent.com/VsCCQFmzQjjI1o0JVWtLF69SGkoFrdyBnHaibB731DlKt8dFPoZgF7C-FJMlKYXuJw6fbqOR8yWiShUaUz1XIGW7qVxE-VUatNkFUYNcCsTPOwHDj2kF6ffZ8JtS-HipXGutmrrV"></div>
</td>  <td><i>Posted by Brett Morgan, Developer Programs Engineer</i></td></tr></tbody></table>]]></description>
				<content:encoded><![CDATA[One 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 />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-NLoI9t3m8yE/V-qgOgVGKOI/AAAAAAAAAiU/IqaTGuVyE70_rS0pi3sdyZOpCTkzwIjhACLcB/s1600/AU_elections_team.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="198" src="https://3.bp.blogspot.com/-NLoI9t3m8yE/V-qgOgVGKOI/AAAAAAAAAiU/IqaTGuVyE70_rS0pi3sdyZOpCTkzwIjhACLcB/s640/AU_elections_team.png" width="640" /></a></div>
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 />
<div class="separator" style="clear: both; text-align: center;">
<span style="background-color: white; color: #212121; font-family: &quot;arial&quot;; 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>
<span id="docs-internal-guid-5f8e23f1-6c7d-90b7-c6e9-7a6c63ed84b7"></span><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>&nbsp;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 />
The <a href="https://github.com/google/election-au-2016" >Election AU 2016 repository</a> uses:<br />
<br />
<ul>
<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>
<li><b>Dart</b> to render the live result maps on top of Google Maps JavaScript API using Firebase real time database updates.</li>
</ul>
<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 />
<ul>
<li>406,000 people used our maps, including 217,000 on election day.</li>
<li>We had 139 stories in the media.</li>
<li>Our map was also embedded in major news websites, such as <a href="http://www.skynews.com.au/news/politics.html" >Sky News</a>.</li>
</ul>
<br />
Complete setup and installation instructions are available in the <a href="https://github.com/google/election-au-2016/blob/master/README.md" >Github README</a>.<br />
<table><tbody>
<tr> <td style="width: 80px;"><br />
<div class="separator" style="clear: both; text-align: center;">
<img alt="author image" border="0" src="https://lh6.googleusercontent.com/VsCCQFmzQjjI1o0JVWtLF69SGkoFrdyBnHaibB731DlKt8dFPoZgF7C-FJMlKYXuJw6fbqOR8yWiShUaUz1XIGW7qVxE-VUatNkFUYNcCsTPOwHDj2kF6ffZ8JtS-HipXGutmrrV" style="border-radius: 50%; width: 80px;" /></div>
</td>  <td><i>Posted by Brett Morgan, Developer Programs Engineer</i></td></tr>
</tbody></table>
]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/a-sizzling-open-source-release-for-the-australian-election-site/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Custom map styling with the Google Maps APIs on Android and iOS</title>
		<link>https://googledata.org/google-maps/custom-map-styling-with-the-google-maps-apis-on-android-and-ios/</link>
		<comments>https://googledata.org/google-maps/custom-map-styling-with-the-google-maps-apis-on-android-and-ios/#comments</comments>
		<pubDate>Wed, 21 Sep 2016 21:49:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=4b1f306fe70b635ffd0b2a70033a6250</guid>
		<description><![CDATA[<div>
</div>
<table align="center" cellpadding="0" cellspacing="0"><tbody><tr><td><img height="476" src="https://lh4.googleusercontent.com/nRew6YjrG9MDigzP5ALRQj454qUhlLyR5xySKkgK413iCE6-M_ydHKgn8ORzaRRWPyj-FK_uYjlzBQSocXwsuzPdDA6He8WRwd0gNlYmU_MBlkKu8gD_PcIm44o2nsrNCwSa9X9b" width="640"></td></tr><tr><td>Your app, your map style. For iOS and Android.</td></tr></tbody></table><br />
Cross-platform custom map styling is here&#8212;change the color palette of your maps, hide labels, vary road density and toggle points of interest. Your maps can now match your brand and style across your website and your apps!<br /><br />
The Google Maps APIs now support you in creating beautiful styled maps for your Android and iOS apps as well as your website using the same JSON style object.<br /><br /><h3>
Easily create your style</h3>
The new <a href="https://mapstyle.withgoogle.com/" target="_blank">Google Maps APIs Styling Wizard</a> helps you to create a map style in a few clicks. Use one of our pre-built styles or create your own style from scratch.<br /><br />
Access advanced options for further control over every available aspect of your map style including visibility, fills &#38; stroke weight.<br /><br /><table align="center" cellpadding="0" cellspacing="0"><tbody><tr><td><img height="360" src="https://lh4.googleusercontent.com/q-GCVpr80yj-FrP7bpb1fe5ok03IrQSkFLc5Jkbsh_c-muRskAuipPrCSUX1hMWGUIzV1KcfypAoS12UbdZ0oypdAAqzNtgyco-uPfyoRQSy6sfA_2M5rdtQIxUFIOFABocwhl4k" width="621"></td></tr><tr><td>Use the styling wizard for point and click custom style creation.</td></tr></tbody></table><span></span><br /><h3>
Show what&#8217;s important, hide the rest </h3>
Custom map styling provides you with ways to tailor your map for a particular use case. Got your own transit stops and want to turn the Google ones off? We&#8217;ve got you covered. Want to hide highways and highlight water features? Done. You can control the visibility of labels, landscapes, transit icons, points of interest, roads and more to create the look that reflects your brand and purpose. See the samples for <a href="https://developers.google.com/maps/documentation/android-api/hiding-features" target="_blank">Android</a>, <a href="https://developers.google.com/maps/documentation/ios-sdk/hiding-features" target="_blank">iOS</a> and <a href="https://developers.google.com/maps/documentation/javascript/examples/hiding-features" target="_blank">JavaScript</a>.<br /><br />
Both the iOS and the Android SDKs now support business points of interest as well; this means you&#8217;ll now see hotels, restaurants and shops on your maps. They&#8217;ll only be visible when you compile with the latest SDKs and you can control their visibility via styling.<br /><br /><h3>
Style once, use on any platform</h3>
When you&#8217;re happy with your new map style, you can export &#38; use the same JSON styling object in our iOS, Android and JavaScript Maps APIs. The Styling Wizard also provides the URL for you to use with the Google Static Maps API. <br /><br />
To enable a custom style in your app or website, take a look at the code samples:  <a href="https://github.com/googlemaps/android-samples/blob/master/ApiDemos/app/src/main/java/com/example/mapdemo/StyledMapDemoActivity.java" target="_blank">Android</a>, <a href="https://github.com/googlemaps/maps-sdk-for-ios-samples/blob/master/GoogleMaps/GoogleMapsDemos/Samples/StyledMapViewController.m" target="_blank">iOS</a> &#38; <a href="https://developers.google.com/maps/documentation/javascript/examples/style-selector" target="_blank">JavaScript</a>. <br /><br />
You can distribute the styles with your app, fetch them dynamically, and even change them at runtime. <br /><table align="center" cellpadding="0" cellspacing="0"><tbody><tr><td><img height="360" src="https://lh4.googleusercontent.com/gKIQmAZwp65s6zgenLoq3HMFDqG2PmasGXmwJzCV36JGferiCKO32ZXJLDBywcii5sGf9iOStgOn-pa2YzovIcX-ACPO0yfCCxAJGMx9X8aV8pbg6EhaefhlQzU9NP2fWQ3ASXBS" width="640"></td></tr><tr><td>Custom styles now work on native iOS and Android apps as well as the web.</td></tr></tbody></table><div>
<span></span></div>
The <a href="https://developers.google.com/maps/documentation/android-api/releases" target="_blank">Android</a> and <a href="https://developers.google.com/maps/documentation/ios-sdk/releases" target="_blank">iOS</a> release notes contain details of bugs fixed as well as the custom basemap styling features mentioned in this post.  Read the Maps APIs styling guides for <a href="https://developers.google.com/maps/documentation/android-api/styling" target="_blank">Android</a>, <a href="https://developers.google.com/maps/documentation/ios-sdk/styling" target="_blank">iOS</a> and <a href="https://developers.google.com/maps/documentation/javascript/styling" target="_blank">JavaScript</a>, and watch the Styling your Maps Geocast (embedded below).<br /><br /><div>
</div>
<br /><span>A big thank you</span> to Android and iOS developers everywhere for using the Google Maps Android API and the Google Maps SDK for iOS and submitting feedback via the <a href="https://code.google.com/p/gmaps-api-issues/" target="_blank">issue tracker</a>. We heard you!<br /><br />
Share your styled basemaps on <a href="https://twitter.com/search?f=tweets&#38;q=%23mapstyle" target="_blank">Twitter</a> and <a href="https://plus.google.com/s/%23mapstyle" target="_blank">G+</a> via #mapstyle and show us what you&#8217;ve done!<br /><table><tbody><tr><td><img alt="author image" border="0" src="https://lh3.googleusercontent.com/6vY84AOYgFkem78tpMCEVfW5XJJ3jQkP5GC1-q3jfcwXiuLoyhal527iFmM02FL43vk6XV7XIqnU7daYNMxDwOKqr5RZK4bdnYXQlyBrpfr-DwO5u2tqFVBtj6ZgpdEfxV2v7Ocy"></td>  <td><i>Posted by Megan Boundey, Product Manager, Google Maps Mobile APIs</i></td></tr></tbody></table>]]></description>
				<content:encoded><![CDATA[<div class="separator" style="clear: both; text-align: center;">
</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><img height="476" src="https://lh4.googleusercontent.com/nRew6YjrG9MDigzP5ALRQj454qUhlLyR5xySKkgK413iCE6-M_ydHKgn8ORzaRRWPyj-FK_uYjlzBQSocXwsuzPdDA6He8WRwd0gNlYmU_MBlkKu8gD_PcIm44o2nsrNCwSa9X9b" style="border: none; margin-left: auto; margin-right: auto; transform: rotate(0rad);" width="640" /></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Your app, your map style. For iOS and Android.</td></tr>
</tbody></table>
<br />
Cross-platform custom map styling is here—change the color palette of your maps, hide labels, vary road density and toggle points of interest. Your maps can now match your brand and style across your website and your apps!<br />
<br />
The Google Maps APIs now support you in creating beautiful styled maps for your Android and iOS apps as well as your website using the same JSON style object.<br />
<br />
<h3>
Easily create your style</h3>
The new <a href="https://mapstyle.withgoogle.com/" >Google Maps APIs Styling Wizard</a> helps you to create a map style in a few clicks. Use one of our pre-built styles or create your own style from scratch.<br />
<br />
Access advanced options for further control over every available aspect of your map style including visibility, fills &amp; stroke weight.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><img height="360" src="https://lh4.googleusercontent.com/q-GCVpr80yj-FrP7bpb1fe5ok03IrQSkFLc5Jkbsh_c-muRskAuipPrCSUX1hMWGUIzV1KcfypAoS12UbdZ0oypdAAqzNtgyco-uPfyoRQSy6sfA_2M5rdtQIxUFIOFABocwhl4k" style="border: none; margin-left: auto; margin-right: auto; transform: rotate(0rad);" width="621" /></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Use the styling wizard for point and click custom style creation.</td></tr>
</tbody></table>
<span id="docs-internal-guid-970f459c-4d45-6e4f-36f1-6774308050c5"></span><br />
<h3>
Show what’s important, hide the rest </h3>
Custom map styling provides you with ways to tailor your map for a particular use case. Got your own transit stops and want to turn the Google ones off? We’ve got you covered. Want to hide highways and highlight water features? Done. You can control the visibility of labels, landscapes, transit icons, points of interest, roads and more to create the look that reflects your brand and purpose. See the samples for <a href="https://developers.google.com/maps/documentation/android-api/hiding-features" >Android</a>, <a href="https://developers.google.com/maps/documentation/ios-sdk/hiding-features" >iOS</a> and <a href="https://developers.google.com/maps/documentation/javascript/examples/hiding-features" >JavaScript</a>.<br />
<br />
Both the iOS and the Android SDKs now support business points of interest as well; this means you’ll now see hotels, restaurants and shops on your maps. They’ll only be visible when you compile with the latest SDKs and you can control their visibility via styling.<br />
<br />
<h3>
Style once, use on any platform</h3>
When you’re happy with your new map style, you can export &amp; use the same JSON styling object in our iOS, Android and JavaScript Maps APIs. The Styling Wizard also provides the URL for you to use with the Google Static Maps API. <br />
<br />
To enable a custom style in your app or website, take a look at the code samples:  <a href="https://github.com/googlemaps/android-samples/blob/master/ApiDemos/app/src/main/java/com/example/mapdemo/StyledMapDemoActivity.java" >Android</a>, <a href="https://github.com/googlemaps/maps-sdk-for-ios-samples/blob/master/GoogleMaps/GoogleMapsDemos/Samples/StyledMapViewController.m" >iOS</a> &amp; <a href="https://developers.google.com/maps/documentation/javascript/examples/style-selector" >JavaScript</a>. <br />
<br />
You can distribute the styles with your app, fetch them dynamically, and even change them at runtime. <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;"><img height="360" src="https://lh4.googleusercontent.com/gKIQmAZwp65s6zgenLoq3HMFDqG2PmasGXmwJzCV36JGferiCKO32ZXJLDBywcii5sGf9iOStgOn-pa2YzovIcX-ACPO0yfCCxAJGMx9X8aV8pbg6EhaefhlQzU9NP2fWQ3ASXBS" style="border: none; margin-left: auto; margin-right: auto; transform: rotate(0rad);" width="640" /></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Custom styles now work on native iOS and Android apps as well as the web.</td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: center;">
<span style="background-color: white; color: #212121; font-family: &quot;arial&quot;; font-size: 14.6667px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"></span></div>
The <a href="https://developers.google.com/maps/documentation/android-api/releases" >Android</a> and <a href="https://developers.google.com/maps/documentation/ios-sdk/releases" >iOS</a> release notes contain details of bugs fixed as well as the custom basemap styling features mentioned in this post.  Read the Maps APIs styling guides for <a href="https://developers.google.com/maps/documentation/android-api/styling" >Android</a>, <a href="https://developers.google.com/maps/documentation/ios-sdk/styling" >iOS</a> and <a href="https://developers.google.com/maps/documentation/javascript/styling" >JavaScript</a>, and watch the Styling your Maps Geocast (embedded below).<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/sLZxAB1el6w" width="560"></iframe></div>
<br />
<span style="font-size: x-large;">A big thank you</span> to Android and iOS developers everywhere for using the Google Maps Android API and the Google Maps SDK for iOS and submitting feedback via the <a href="https://code.google.com/p/gmaps-api-issues/" >issue tracker</a>. We heard you!<br />
<br />
Share your styled basemaps on <a href="https://twitter.com/search?f=tweets&amp;q=%23mapstyle" >Twitter</a> and <a href="https://plus.google.com/s/%23mapstyle" >G+</a> via #mapstyle and show us what you’ve done!<br />
<table><tbody>
<tr> <td style="width: 80px;"><img alt="author image" border="0" src="https://lh3.googleusercontent.com/6vY84AOYgFkem78tpMCEVfW5XJJ3jQkP5GC1-q3jfcwXiuLoyhal527iFmM02FL43vk6XV7XIqnU7daYNMxDwOKqr5RZK4bdnYXQlyBrpfr-DwO5u2tqFVBtj6ZgpdEfxV2v7Ocy" style="border-radius: 50%; text-align: center; width: 80px;" /></td>  <td><i>Posted by Megan Boundey, Product Manager, Google Maps Mobile APIs</i></td></tr>
</tbody></table>
]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/custom-map-styling-with-the-google-maps-apis-on-android-and-ios/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Making the most of the Google Maps Web Service APIs</title>
		<link>https://googledata.org/google-maps/making-the-most-of-the-google-maps-web-service-apis/</link>
		<comments>https://googledata.org/google-maps/making-the-most-of-the-google-maps-web-service-apis/#comments</comments>
		<pubDate>Thu, 15 Sep 2016 16:31:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=14a658761a7c6658bce270742bb2f60f</guid>
		<description><![CDATA[When it comes to app development, there can be a disconnect between the robust app we intended to build and the code we actually get into a minimum viable product. These shortcuts end up causing error conditions once under load in production.<br /><br />
The Google Maps API team maintains client libraries that give you the power to develop with the confidence that your app will scale smoothly. We provide client libraries for <a href="https://github.com/googlemaps/google-maps-services-python/" target="_blank">Python</a>, <a href="https://github.com/googlemaps/google-maps-services-java/" target="_blank">Java</a>, and <a href="https://github.com/googlemaps/google-maps-services-go/" target="_blank">Go</a>, which are used by thousands of developers around the world. We're excited to announce the recent addition of <a href="https://github.com/googlemaps/google-maps-services-js" target="_blank">Node.js</a> to the client library family. <br /><br />
When building mobile applications, it is a best practice to use native APIS like <a href="https://developers.google.com/places/android-api/" target="_blank">Places API for Android</a> and <a href="https://developers.google.com/places/ios-api/" target="_blank">Places API for iOS</a> where you can, but when you find that your use case requires data that is only available via the Google Maps APIs Web Services, such as <a href="https://developers.google.com/maps/documentation/elevation/start" target="_blank">Elevation</a>, then using these client libraries is the best way forward.<br /><br />
These libraries help you implement API request best practices such as:<br /><ul><li>Requests are sent at the default rate limit for each web service, but of course this is configurable.</li>
<li>The client libraries will automatically retry any request if the API sends a 5xx error. Retries use exponential back-off, which helps in the event of intermittent failures.</li>
<li>The client libraries make it easy to authenticate with your freely available API Key. Google Maps APIs Premium Plan customers can alternatively use their client ID and secret.</li>
<li>The Java and Go libraries return native objects for each of the API responses. The Python and Node.js libraries return the structure as it is received from the API.</li>
</ul>
The client libraries can help you in a variety of ways. One of them is exposing the result sets in a format that makes most sense for the language in question. For example, the Java and Go client libraries include object hierarchies that are type-safe representations of the potential results for each API. This  allows you to write code in the comfort of your editor with the knowledge that the compiler will catch any mistakes.<br /><a href="https://www.blogger.com/"></a><span></span><span></span><br />
With 3 million apps and websites using Google Maps APIs, we have an important tip for ensuring reliability when using web services: call APIs from a server rather than directly from Android or iOS. This secures your API key so that your quota can't be consumed by a bad actor, along with being able to add caching to handle common requests quickly.<br /><br />
A server instance acts as a proxy that takes requests from your Android and iOS apps and then forwards them to the Google Maps Web Service APIs on your app&#8217;s behalf. The easiest way to create a server side proxy is using the Google Maps Web Service client libraries from <a href="https://cloud.google.com/appengine/" target="_blank">Google App Engine</a> instances. For more detail, please watch Laurence Moroney&#8217;s Google I/O 2016 session &#8220;<a href="https://www.youtube.com/watch?v=QqOYZ5Yu47Y&#38;feature=youtu.be" target="_blank">Building geo services that scale</a>&#8221;.<br /><br />
You can learn more about the Google Maps API web services in our <a href="https://developers.google.com/maps/web-services/overview" target="_blank">documentation</a>. The easiest way to use these APIs and follow best practices is to use the <a href="https://developers.google.com/maps/web-services/client-library" target="_blank">Client Libraries for Google Maps Web Services</a>. Download the client libraries for <a href="https://github.com/googlemaps/google-maps-services-java" target="_blank">Java</a>, <a href="https://github.com/googlemaps/google-maps-services-python" target="_blank">Python</a>, <a href="https://github.com/googlemaps/google-maps-services-go/" target="_blank">Go</a> or <a href="https://github.com/googlemaps/google-maps-services-js" target="_blank">Node.js</a> from Github to start using them today!<br /><table><tbody><tr><td><br /><div>
<img alt="author image" border="0" src="https://lh6.googleusercontent.com/VsCCQFmzQjjI1o0JVWtLF69SGkoFrdyBnHaibB731DlKt8dFPoZgF7C-FJMlKYXuJw6fbqOR8yWiShUaUz1XIGW7qVxE-VUatNkFUYNcCsTPOwHDj2kF6ffZ8JtS-HipXGutmrrV"></div>
</td>  <td><i>Posted by Brett Morgan, Developer Programs Engineer</i></td></tr></tbody></table><br /><span><span></span></span>]]></description>
				<content:encoded><![CDATA[When it comes to app development, there can be a disconnect between the robust app we intended to build and the code we actually get into a minimum viable product. These shortcuts end up causing error conditions once under load in production.<br />
<br />
The Google Maps API team maintains client libraries that give you the power to develop with the confidence that your app will scale smoothly. We provide client libraries for <a href="https://github.com/googlemaps/google-maps-services-python/" >Python</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>, which are used by thousands of developers around the world. We're excited to announce the recent addition of <a href="https://github.com/googlemaps/google-maps-services-js" >Node.js</a> to the client library family. <br />
<br />
When building mobile applications, it is a best practice to use native APIS like <a href="https://developers.google.com/places/android-api/" >Places API for Android</a> and <a href="https://developers.google.com/places/ios-api/" >Places API for iOS</a> where you can, but when you find that your use case requires data that is only available via the Google Maps APIs Web Services, such as <a href="https://developers.google.com/maps/documentation/elevation/start" >Elevation</a>, then using these client libraries is the best way forward.<br />
<br />
These libraries help you implement API request best practices such as:<br />
<ul>
<li>Requests are sent at the default rate limit for each web service, but of course this is configurable.</li>
<li>The client libraries will automatically retry any request if the API sends a 5xx error. Retries use exponential back-off, which helps in the event of intermittent failures.</li>
<li>The client libraries make it easy to authenticate with your freely available API Key. Google Maps APIs Premium Plan customers can alternatively use their client ID and secret.</li>
<li>The Java and Go libraries return native objects for each of the API responses. The Python and Node.js libraries return the structure as it is received from the API.</li>
</ul>
The client libraries can help you in a variety of ways. One of them is exposing the result sets in a format that makes most sense for the language in question. For example, the Java and Go client libraries include object hierarchies that are type-safe representations of the potential results for each API. This  allows you to write code in the comfort of your editor with the knowledge that the compiler will catch any mistakes.<br />
<a href="https://www.blogger.com/"></a><span id="goog_393085923"></span><span id="goog_393085924"></span><br />
With 3 million apps and websites using Google Maps APIs, we have an important tip for ensuring reliability when using web services: call APIs from a server rather than directly from Android or iOS. This secures your API key so that your quota can't be consumed by a bad actor, along with being able to add caching to handle common requests quickly.<br />
<br />
A server instance acts as a proxy that takes requests from your Android and iOS apps and then forwards them to the Google Maps Web Service APIs on your app’s behalf. The easiest way to create a server side proxy is using the Google Maps Web Service client libraries from <a href="https://cloud.google.com/appengine/" >Google App Engine</a> instances. For more detail, please watch Laurence Moroney’s Google I/O 2016 session “<a href="https://www.youtube.com/watch?v=QqOYZ5Yu47Y&amp;feature=youtu.be" >Building geo services that scale</a>”.<br />
<br />
You can learn more about the Google Maps API web services in our <a href="https://developers.google.com/maps/web-services/overview" >documentation</a>. The easiest way to use these APIs and follow best practices is to use the <a href="https://developers.google.com/maps/web-services/client-library" >Client Libraries for Google Maps Web Services</a>. Download the client libraries for <a href="https://github.com/googlemaps/google-maps-services-java" >Java</a>, <a href="https://github.com/googlemaps/google-maps-services-python" >Python</a>, <a href="https://github.com/googlemaps/google-maps-services-go/" >Go</a> or <a href="https://github.com/googlemaps/google-maps-services-js" >Node.js</a> from Github to start using them today!<br />
<table><tbody>
<tr> <td style="width: 80px;"><br />
<div class="separator" style="clear: both; text-align: center;">
<img alt="author image" border="0" src="https://lh6.googleusercontent.com/VsCCQFmzQjjI1o0JVWtLF69SGkoFrdyBnHaibB731DlKt8dFPoZgF7C-FJMlKYXuJw6fbqOR8yWiShUaUz1XIGW7qVxE-VUatNkFUYNcCsTPOwHDj2kF6ffZ8JtS-HipXGutmrrV" style="border-radius: 50%; width: 80px;" /></div>
</td>  <td><i>Posted by Brett Morgan, Developer Programs Engineer</i></td></tr>
</tbody></table>
<br />
<span id="docs-internal-guid-06bb5e1c-2e5f-db36-0136-7065c332134d"><span style="color: #434343; font-family: &quot;arial&quot;; font-size: 14.6667px; vertical-align: baseline; white-space: pre-wrap;"></span></span>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/making-the-most-of-the-google-maps-web-service-apis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>New JavaScript Street View renderer brings rendering improvements and better mobile support</title>
		<link>https://googledata.org/google-maps/new-javascript-street-view-renderer-brings-rendering-improvements-and-better-mobile-support/</link>
		<comments>https://googledata.org/google-maps/new-javascript-street-view-renderer-brings-rendering-improvements-and-better-mobile-support/#comments</comments>
		<pubDate>Thu, 18 Aug 2016 00:05:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=f621f4e7249b42187362f1d2efb228cb</guid>
		<description><![CDATA[Street View is one of Google Maps&#8217; most loved features, providing users with a way to explore and experience the world around them. Developers all over the world use Street View in the Google Maps JavaScript API to make their apps more unique and exciting, giving their users a sense of what it&#8217;s like to visit a place in real life. <br /><br />
Today we&#8217;re making Street View even better, especially on mobile devices, by launching a new Street View renderer in the Google Maps JavaScript API. Read on for the full details of what we&#8217;ve improved!<br /><br /><h3>
Better display</h3>
<h4>
Smoother Transitions</h4>
Transitions from one point to another in Street View now include more animation frames, creating the effect of gliding smoothly to the next location. Transitions in the old renderer looked like jumping from one location to another.<br /><br /><div dir="ltr">
<table><colgroup><col width="360"><col width="359"></colgroup><tbody><tr><td><div dir="ltr">
<span><span>Old renderer</span></span></div>
</td><td><div dir="ltr">
<span><span>New renderer</span></span></div>
</td></tr><tr><td><img alt="next-old-short.gif" height="200" src="https://lh3.googleusercontent.com/vs1N2akdnqZJLcO73xv9F5F_jDIarAMA8RbtvsPZCMnJWUeHmOMcyTOh0HI5XXbMIUw-N9GoTm4nSDz63EMeazd8tSlPOxIM17WurMZ3aBUtK8xZFzAr8IrP2uFDWfRv1e61sXlO" width="320"></td><td><img alt="next-new-short.gif" height="200" src="https://lh5.googleusercontent.com/QV6p9LnkjLDIOy6qRNh6ParKnHVdUly2-xq7jd4rG9kMZ9SHWAAYzaWmjuEnLYnjonUkUsEliwfmAXLvqfv1pJPsfJX2zk_9TPSC7ssdm6P4q5FII30qKirgwiICY18KOtFG-FJW" width="320"></td></tr></tbody></table></div>
<br /><h4>
Smoother Loading Animations</h4>
The old renderer repeats images while loading new content, resulting in a stuttering effect. The new renderer uses lower resolution imagery while loading, resulting in a smoother animation when rotating an image in Street View.<br /><br /><div dir="ltr">
<table><colgroup><col width="360"><col width="359"></colgroup><tbody><tr><td><div dir="ltr">
<span><span>Old renderer</span></span></div>
</td><td><div dir="ltr">
<span><span>New renderer</span></span></div>
</td></tr><tr><td><div dir="ltr">
<span><img alt="old.gif" height="200" src="https://lh6.googleusercontent.com/2VehNMbzJX1O16jVko2K6wsGXqiM_scPrX1HTJr4rpmKJQA0-JVmW6EKFM9ytULj62Fscs7zUjvf0gY5DTkjoAX47SHR9_9964xfZ37wAkTLLoICiLEn98gxXPNfpokiJLLimzKs" width="320"></span></div>
</td><td><div dir="ltr">
<span><img alt="new.gif" height="200" src="https://lh3.googleusercontent.com/fxEiucnJJVriI3SxhXf8vtQTU3AQzLTQWrQFCEUsRYZUY6vKGyucNukvmLhBz9RvTLding48ygZzqwaZRYvWEzpaOyB3sqOrynd6mKlsspRGGHQHoN6duCVLfEvIL2c0H6NN6tD8" width="320"></span></div>
</td></tr></tbody></table></div>
<h4>
Object modeling improvements</h4>
Objects in Street View look better in the new renderer because it builds a 360-degree model that considers all possible perspectives. For example, this high rise building has wavy lines in the old renderer, as opposed to crisp lines in the new renderer.<br /><br /><div dir="ltr">
<table><colgroup><col width="360"><col width="359"></colgroup><tbody><tr><td><div dir="ltr">
<span><span>Old renderer</span></span></div>
</td><td><div dir="ltr">
<span><span>New renderer</span></span></div>
</td></tr><tr><td><img height="200" src="https://lh6.googleusercontent.com/feZmtVtffsfPNvYUU4EGdRtb7lOLAVc_XgiPJXNmKPDTaI-AXEiBzyeUqbO2XjoHP4x8YCvVRQboV8hBE0av6wWiJdWluItva86gl0uSa1qT0HMYALMkJ5FvcWqzQvtSxjaTeL9K" width="320"></td><td><img height="200" src="https://lh3.googleusercontent.com/6zn1tbKetmlniikA6aqpL1_xxroTeeeW9SYh7GqXsMDgWxcpIK0278IGN8IyR6y6A_SFUe4afTWz9gjP-VTR81QZC_aJ56sukx8Rq9nnXiX8UshDI6_hBSnRPYgZK8VcZjKKsLjc" width="320"></td></tr></tbody></table></div>
<br />
In another example: for imagery on an incline, such as a street with a steep hill, the new renderer corrects the objects to be vertical, whereas the old renderer would have shown the objects at an angle.<br /><br /><div dir="ltr">
<table><colgroup><col width="360"><col width="359"></colgroup><tbody><tr><td><div dir="ltr">
<span><span>Old renderer</span></span></div>
</td><td><div dir="ltr">
<span><span>New renderer</span></span></div>
</td></tr><tr><td><img height="200" src="https://lh3.googleusercontent.com/5WUWEZfgxW_2X4w1nkMZvBPWlVKtJAtqGSTM1wWRG03lMsu22EJtvDcbKAjR1oWYoVHtiT5UWLpyfDdgNUtXrXWwTiM-k0qXbrF49iOV2Dt04uJtrEnl-C4zc2JkF1xoEMZObsPc" width="320"></td><td><img height="200" src="https://lh6.googleusercontent.com/QK_jFeB_u_B6f_102piuLDXD3Z4_y7GNgjZji0iKc1PRWG8iSjsDqIpV6c-fXlfM_6GGWgf3574Qq2OBQVRLHt2YqZsF-7D601A9gEBF6kQcBVFuAB4IM4tPdBLdv-ScBm_2PRn9" width="320"></td></tr></tbody></table></div>
<h3>
Better mobile support</h3>
<h4>
WebGL imagery</h4>
The new renderer uses WebGL (on <a href="https://en.wikipedia.org/wiki/WebGL#Support">browsers that support it</a>) which results in a higher frame rate and better rendering, especially on mobile devices. On mobile devices, the old renderer would display a fish-eye projection of the image, whereas WebGL allows us to present a rendered sphere that looks as it would in reality. For example, the street in the image below is straight, but the old renderer made it look curved on mobile devices.<br /><div dir="ltr">
<span></span><br /><div dir="ltr">
<table><colgroup><col width="360"><col width="359"></colgroup><tbody><tr><td><div dir="ltr">
<span>Old renderer</span></div>
</td><td><div dir="ltr">
<span>New renderer</span></div>
</td></tr><tr><td><div dir="ltr">
<span><img alt="WebGL_before.png" height="200" src="https://lh5.googleusercontent.com/BY3qrzNW0RzISArkYg3kYUDTZRbkHCBZ9fzxneHdUlytm7kBwNr-THvhFyP7QCsL9gcr8S5x-9FwvRw8XCqkejhmsd8XMPCWxLRpcUsqHf05lRzrX8YKwRDGqVAMMJU4_9rAxcl-" width="320"></span></div>
</td><td><div dir="ltr">
<span><img alt="WebGL_after.png" height="200" src="https://lh6.googleusercontent.com/Q2jMLejW_o0okCGKimK7qBYSEtP4huI5Fo8v8ZvcsizZADcF1YWZagcgaTw9oao3j33Y4vBpFhPGPlC2YSSmEGD9ZMEhJvI9aLAOoD234WER-Vpj_PdkDaC9WeZW8-CfdZQq10_h" width="320"></span></div>
</td></tr></tbody></table></div>
</div>
<h4>
Touch support</h4>
As mobile web usage grows, users expect familiar touch-based interactions to work everywhere. The new renderer supports the same natural touch-based gestures on mobile which have been available in the Google Maps Android app: pinch-to-zoom and double-tap-to-go. In the old renderer, zooming was only available through the +/- buttons, and movement was only possible by clicking the arrows on the ground.<br /><br /><h4>
Motion tracking on mobile devices</h4>
Mobile devices give developers the opportunity to provide their users with more natural ways to explore and interact with their applications. We&#8217;ve enabled support for device orientation events on Street View so that users on mobile devices can look around in Street View by moving their phone. Developers have the option to turn this off if they prefer. Please see the <a href="https://developers.google.com/maps/documentation/javascript/streetview?utm_source=geodevsite&#38;utm_medium=website&#38;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost&#38;utm_content=#motion-tracking" target="_blank">developer documentation</a><span></span><span></span><a href="https://www.blogger.com/"></a> for more details, or open the documentation link on a mobile device to see motion tracking in action. <br /><br /><h3>
Better controls</h3>
<h4>
X Forward</h4>
When using a desktop device with a mouse or trackpad, users will see a small "X" at the cursor location that indicates the next camera location if they choose to move forward. Arrows indicate the direction of movement. Wall rectangles identify the direction the camera will point towards.<br /><br /><div dir="ltr">
<table><colgroup><col width="360"><col width="359"></colgroup><tbody><tr><td><div dir="ltr">
<span>Next image targets</span></div>
</td><td><div dir="ltr">
<span>Next centered image target</span></div>
</td></tr><tr><td><div dir="ltr">
<span><img height="200" src="https://lh4.googleusercontent.com/bSeHEipDYtEiFOBNMMeRQw-LGDNJ0aETTDUmG_7yYwVH4cQuNLBRzwcqfuYNkydy4kCqhb441Xt8V0zhIUObGlPGehfqCmLfaL9mpf07NAsc2t9dzHvoOf0kr9VtDenvGZ9_OYZa" width="320"></span></div>
</td><td><div dir="ltr">
<span><img height="200" src="https://lh4.googleusercontent.com/dggZUDqruDnihSTkSwOwycRC6pEOoXErmZJvi7jtV0cFbu9PEVW-zYZs8NzbfVbpevoK5Jcave8gxBJEx71ZhYcLghIpCxZWDTx1KFWw-1iF0KJoHalFSGrnF5ynAlstweLaaADd" width="320"></span></div>
</td></tr></tbody></table></div>
<h4>
Cleaner street names, labels and targets</h4>
Street names and labels are now separated from controls, removing overlap issues and allowing for clean display in right-to-left and left-to-right languages.<br /><br /><div dir="ltr">
<table><colgroup><col width="360"><col width="359"></colgroup><tbody><tr><td><div dir="ltr">
<span>Old renderer</span></div>
</td><td><div dir="ltr">
<span>New renderer</span></div>
</td></tr><tr><td><div dir="ltr">
<span><img height="200" src="https://lh3.googleusercontent.com/9mBLz3mhqYvECS0HwRigC6OQsjDrnQTY7JeJvNr1-0ggpDIURhdb1v-vBy6bmdlFP1VceVQgbyj-WeOoefVPxOS_haXYHOYtHSNOP7PWfsbOyKY3mMoEl1uPG4urW8XMJQPCloAw" width="320"></span></div>
</td><td><div dir="ltr">
<span><img height="200" src="https://lh6.googleusercontent.com/ML56mnoHEYZF0ruzUOiE3BC4VYjQsFblsEUVhNmowNzZEOwPhIec3FF0x2dGfVLDk2PW_UD6XALO_9YYtLo--I6XM-wcUMpc2HtrkOFGddgfEnylABR3AuZdHiGT3AE0asf31nSI" width="320"></span></div>
</td></tr></tbody></table></div>
We hope you enjoy using the new and improved Street View renderer! Also 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&#38;utm_medium=website&#38;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost">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 />
For more information on Street View in the Google Maps JavaScript API, please see the <a href="https://developers.google.com/maps/documentation/javascript/streetview?utm_source=geodevsite&#38;utm_medium=website&#38;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost&#38;utm_content=#motion-tracking" target="_blank">developer documentation</a>.<br /><table><tbody><tr><td><br /><div>
<img alt="author image" border="0" src="https://lh6.googleusercontent.com/mbzhN4UgcBZWGmNITagTVcFZZBsOqxRKXwzK6231tfvjiRMN0JwZYDL--z0X3qgQUmvW-e5c9qZwETINRrS4i1whh9LwqRcM27pTVPGhePv1WmWRxC3_twbglXD3wFXPshuSPnuT"></div>
</td>  <td><i>Posted by Elena Kelareva, Product Manager, Google Maps APIs</i></td></tr></tbody></table><br />]]></description>
				<content:encoded><![CDATA[Street View is one of Google Maps’ most loved features, providing users with a way to explore and experience the world around them. Developers all over the world use Street View in the Google Maps JavaScript API to make their apps more unique and exciting, giving their users a sense of what it’s like to visit a place in real life. <br />
<br />
Today we’re making Street View even better, especially on mobile devices, by launching a new Street View renderer in the Google Maps JavaScript API. Read on for the full details of what we’ve improved!<br />
<br />
<h3>
Better display</h3>
<h4>
Smoother Transitions</h4>
Transitions from one point to another in Street View now include more animation frames, creating the effect of gliding smoothly to the next location. Transitions in the old renderer looked like jumping from one location to another.<br />
<br />
<div dir="ltr" style="margin-left: 0pt;">
<table style="border-collapse: collapse; border: none;"><colgroup><col width="360"></col><col width="359"></col></colgroup><tbody>
<tr style="height: 0px;"><td style="border-bottom: solid #000000 0px; border-left: solid #000000 0px; border-right: solid #000000 0px; border-top: solid #000000 0px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-size: 13.3333px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: &quot;helvetica neue&quot; , &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">Old renderer</span></span></div>
</td><td style="border-bottom: solid #000000 0px; border-left: solid #000000 0px; border-right: solid #000000 0px; border-top: solid #000000 0px; padding: 0; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-size: 13.3333px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: &quot;helvetica neue&quot; , &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">New renderer</span></span></div>
</td></tr>
<tr style="height: 0px;"><td style="border-bottom: solid #000000 0px; border-left: solid #000000 0px; border-right: solid #000000 0px; border-top: solid #000000 0px; padding: 0; vertical-align: top;"><img alt="next-old-short.gif" height="200" src="https://lh3.googleusercontent.com/vs1N2akdnqZJLcO73xv9F5F_jDIarAMA8RbtvsPZCMnJWUeHmOMcyTOh0HI5XXbMIUw-N9GoTm4nSDz63EMeazd8tSlPOxIM17WurMZ3aBUtK8xZFzAr8IrP2uFDWfRv1e61sXlO" style="border: none; font-family: 'open sans'; font-size: 13.3333px; font-weight: 700; line-height: 1.2; text-align: center; transform: rotate(0rad); white-space: pre-wrap;" width="320" /></td><td style="border-bottom: solid #000000 0px; border-left: solid #000000 0px; border-right: solid #000000 0px; border-top: solid #000000 0px; padding: 0; vertical-align: top;"><img alt="next-new-short.gif" height="200" src="https://lh5.googleusercontent.com/QV6p9LnkjLDIOy6qRNh6ParKnHVdUly2-xq7jd4rG9kMZ9SHWAAYzaWmjuEnLYnjonUkUsEliwfmAXLvqfv1pJPsfJX2zk_9TPSC7ssdm6P4q5FII30qKirgwiICY18KOtFG-FJW" style="border: none; font-family: 'open sans'; font-size: 13.3333px; font-weight: 700; line-height: 1.2; text-align: center; transform: rotate(0rad); white-space: pre-wrap;" width="320" /></td></tr>
</tbody></table>
</div>
<br />
<h4>
Smoother Loading Animations</h4>
The old renderer repeats images while loading new content, resulting in a stuttering effect. The new renderer uses lower resolution imagery while loading, resulting in a smoother animation when rotating an image in Street View.<br />
<br />
<div dir="ltr" style="margin-left: 0pt;">
<table style="border-collapse: collapse; border: none;"><colgroup><col width="360"></col><col width="359"></col></colgroup><tbody>
<tr style="height: 0px;"><td style="border-bottom: solid #000000 0px; border-left: solid #000000 0px; border-right: solid #000000 0px; border-top: solid #000000 0px; padding: 0; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-size: 13.3333px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: &quot;helvetica neue&quot; , &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">Old renderer</span></span></div>
</td><td style="border-bottom: solid #000000 0px; border-left: solid #000000 0px; border-right: solid #000000 0px; border-top: solid #000000 0px; padding: 0; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-size: 13.3333px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: &quot;helvetica neue&quot; , &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">New renderer</span></span></div>
</td></tr>
<tr style="height: 0px;"><td style="border-bottom: solid #000000 0px; border-left: solid #000000 0px; border-right: solid #000000 0px; border-top: solid #000000 0px; padding: 0; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: &quot;arial&quot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img alt="old.gif" height="200" src="https://lh6.googleusercontent.com/2VehNMbzJX1O16jVko2K6wsGXqiM_scPrX1HTJr4rpmKJQA0-JVmW6EKFM9ytULj62Fscs7zUjvf0gY5DTkjoAX47SHR9_9964xfZ37wAkTLLoICiLEn98gxXPNfpokiJLLimzKs" style="border: none; transform: rotate(0rad);" width="320" /></span></div>
</td><td style="border-bottom: solid #000000 0px; border-left: solid #000000 0px; border-right: solid #000000 0px; border-top: solid #000000 0px; padding: 0; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: &quot;arial&quot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img alt="new.gif" height="200" src="https://lh3.googleusercontent.com/fxEiucnJJVriI3SxhXf8vtQTU3AQzLTQWrQFCEUsRYZUY6vKGyucNukvmLhBz9RvTLding48ygZzqwaZRYvWEzpaOyB3sqOrynd6mKlsspRGGHQHoN6duCVLfEvIL2c0H6NN6tD8" style="border: none; transform: rotate(0rad);" width="320" /></span></div>
</td></tr>
</tbody></table>
</div>
<h4>
Object modeling improvements</h4>
Objects in Street View look better in the new renderer because it builds a 360-degree model that considers all possible perspectives. For example, this high rise building has wavy lines in the old renderer, as opposed to crisp lines in the new renderer.<br />
<br />
<div dir="ltr" style="margin-left: 0pt;">
<table style="border-collapse: collapse; border: none;"><colgroup><col width="360"></col><col width="359"></col></colgroup><tbody>
<tr style="height: 0px;"><td style="border-bottom: solid #000000 0px; border-left: solid #000000 0px; border-right: solid #000000 0px; border-top: solid #000000 0px; padding: 0; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-size: 13.3333px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: &quot;helvetica neue&quot; , &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">Old renderer</span></span></div>
</td><td style="border-bottom: solid #000000 0px; border-left: solid #000000 0px; border-right: solid #000000 0px; border-top: solid #000000 0px; padding: 0; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-size: 13.3333px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: &quot;helvetica neue&quot; , &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">New renderer</span></span></div>
</td></tr>
<tr style="height: 0px;"><td style="border-bottom: solid #000000 0px; border-left: solid #000000 0px; border-right: solid #000000 0px; border-top: solid #000000 0px; padding: 0; vertical-align: top;"><img height="200" src="https://lh6.googleusercontent.com/feZmtVtffsfPNvYUU4EGdRtb7lOLAVc_XgiPJXNmKPDTaI-AXEiBzyeUqbO2XjoHP4x8YCvVRQboV8hBE0av6wWiJdWluItva86gl0uSa1qT0HMYALMkJ5FvcWqzQvtSxjaTeL9K" style="border: none; font-family: 'open sans'; font-size: 13.3333px; line-height: 1.2; transform: rotate(0rad); white-space: pre-wrap;" width="320" /></td><td style="border-bottom: solid #000000 0px; border-left: solid #000000 0px; border-right: solid #000000 0px; border-top: solid #000000 0px; padding: 0; vertical-align: top;"><img height="200" src="https://lh3.googleusercontent.com/6zn1tbKetmlniikA6aqpL1_xxroTeeeW9SYh7GqXsMDgWxcpIK0278IGN8IyR6y6A_SFUe4afTWz9gjP-VTR81QZC_aJ56sukx8Rq9nnXiX8UshDI6_hBSnRPYgZK8VcZjKKsLjc" style="border: none; font-family: 'open sans'; font-size: 13.3333px; line-height: 1.2; transform: rotate(0rad); white-space: pre-wrap;" width="320" /></td></tr>
</tbody></table>
</div>
<br />
In another example: for imagery on an incline, such as a street with a steep hill, the new renderer corrects the objects to be vertical, whereas the old renderer would have shown the objects at an angle.<br />
<br />
<div dir="ltr" style="margin-left: 0pt;">
<table style="border-collapse: collapse; border: none;"><colgroup><col width="360"></col><col width="359"></col></colgroup><tbody>
<tr style="height: 0px;"><td style="border-bottom: solid #000000 0px; border-left: solid #000000 0px; border-right: solid #000000 0px; border-top: solid #000000 0px; padding: 0; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-size: 13.3333px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: &quot;helvetica neue&quot; , &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">Old renderer</span></span></div>
</td><td style="border-bottom: solid #000000 0px; border-left: solid #000000 0px; border-right: solid #000000 0px; border-top: solid #000000 0px; padding: 0; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-size: 13.3333px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: &quot;helvetica neue&quot; , &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">New renderer</span></span></div>
</td></tr>
<tr style="height: 0px;"><td style="border-bottom: solid #000000 0px; border-left: solid #000000 0px; border-right: solid #000000 0px; border-top: solid #000000 0px; padding: 0; vertical-align: top;"><img height="200" src="https://lh3.googleusercontent.com/5WUWEZfgxW_2X4w1nkMZvBPWlVKtJAtqGSTM1wWRG03lMsu22EJtvDcbKAjR1oWYoVHtiT5UWLpyfDdgNUtXrXWwTiM-k0qXbrF49iOV2Dt04uJtrEnl-C4zc2JkF1xoEMZObsPc" style="border: none; font-family: 'open sans'; font-size: 13.3333px; line-height: 1.2; transform: rotate(0rad); white-space: pre-wrap;" width="320" /></td><td style="border-bottom: solid #000000 0px; border-left: solid #000000 0px; border-right: solid #000000 0px; border-top: solid #000000 0px; padding: 0; vertical-align: top;"><img height="200" src="https://lh6.googleusercontent.com/QK_jFeB_u_B6f_102piuLDXD3Z4_y7GNgjZji0iKc1PRWG8iSjsDqIpV6c-fXlfM_6GGWgf3574Qq2OBQVRLHt2YqZsF-7D601A9gEBF6kQcBVFuAB4IM4tPdBLdv-ScBm_2PRn9" style="border: none; font-family: 'open sans'; font-size: 13.3333px; line-height: 1.2; transform: rotate(0rad); white-space: pre-wrap;" width="320" /></td></tr>
</tbody></table>
</div>
<h3>
Better mobile support</h3>
<h4>
WebGL imagery</h4>
The new renderer uses WebGL (on <a href="https://en.wikipedia.org/wiki/WebGL#Support">browsers that support it</a>) which results in a higher frame rate and better rendering, especially on mobile devices. On mobile devices, the old renderer would display a fish-eye projection of the image, whereas WebGL allows us to present a rendered sphere that looks as it would in reality. For example, the street in the image below is straight, but the old renderer made it look curved on mobile devices.<br />
<div dir="ltr" style="margin-left: 0pt;">
<span id="docs-internal-guid-441317e1-e45c-3067-40b1-080382e2793f"></span><br />
<div dir="ltr" style="margin-left: 0pt;">
<table style="border-collapse: collapse; border: none;"><colgroup><col width="360"></col><col width="359"></col></colgroup><tbody>
<tr style="height: 0px;"><td style="border-bottom: solid #000000 0px; border-left: solid #000000 0px; border-right: solid #000000 0px; border-top: solid #000000 0px; padding: 0; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="font-family: &quot;helvetica neue&quot; , &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: 13.3333px; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;">Old renderer</span></div>
</td><td style="border-bottom: solid #000000 0px; border-left: solid #000000 0px; border-right: solid #000000 0px; border-top: solid #000000 0px; padding: 0; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="font-family: &quot;helvetica neue&quot; , &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: 13.3333px; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;">New renderer</span></div>
</td></tr>
<tr style="height: 0px;"><td style="border-bottom: solid #000000 0px; border-left: solid #000000 0px; border-right: solid #000000 0px; border-top: solid #000000 0px; padding: 0; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="font-family: &quot;arial&quot;; font-size: 13.3333px; vertical-align: baseline; white-space: pre-wrap;"><img alt="WebGL_before.png" height="200" src="https://lh5.googleusercontent.com/BY3qrzNW0RzISArkYg3kYUDTZRbkHCBZ9fzxneHdUlytm7kBwNr-THvhFyP7QCsL9gcr8S5x-9FwvRw8XCqkejhmsd8XMPCWxLRpcUsqHf05lRzrX8YKwRDGqVAMMJU4_9rAxcl-" style="border: none; transform: rotate(0rad);" width="320" /></span></div>
</td><td style="border-bottom: solid #000000 0px; border-left: solid #000000 0px; border-right: solid #000000 0px; border-top: solid #000000 0px; padding: 0; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="font-family: &quot;open sans&quot;; font-size: 13.3333px; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;"><img alt="WebGL_after.png" height="200" src="https://lh6.googleusercontent.com/Q2jMLejW_o0okCGKimK7qBYSEtP4huI5Fo8v8ZvcsizZADcF1YWZagcgaTw9oao3j33Y4vBpFhPGPlC2YSSmEGD9ZMEhJvI9aLAOoD234WER-Vpj_PdkDaC9WeZW8-CfdZQq10_h" style="border: none; transform: rotate(0rad);" width="320" /></span></div>
</td></tr>
</tbody></table>
</div>
</div>
<h4>
Touch support</h4>
As mobile web usage grows, users expect familiar touch-based interactions to work everywhere. The new renderer supports the same natural touch-based gestures on mobile which have been available in the Google Maps Android app: pinch-to-zoom and double-tap-to-go. In the old renderer, zooming was only available through the +/- buttons, and movement was only possible by clicking the arrows on the ground.<br />
<br />
<h4>
Motion tracking on mobile devices</h4>
Mobile devices give developers the opportunity to provide their users with more natural ways to explore and interact with their applications. We’ve enabled support for device orientation events on Street View so that users on mobile devices can look around in Street View by moving their phone. Developers have the option to turn this off if they prefer. Please see the <a href="https://developers.google.com/maps/documentation/javascript/streetview?utm_source=geodevsite&amp;utm_medium=website&amp;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost&amp;utm_content=#motion-tracking" >developer documentation</a><span id="goog_700245662"></span><span id="goog_700245663"></span><a href="https://www.blogger.com/"></a> for more details, or open the documentation link on a mobile device to see motion tracking in action. <br />
<br />
<h3>
Better controls</h3>
<h4>
X Forward</h4>
When using a desktop device with a mouse or trackpad, users will see a small "X" at the cursor location that indicates the next camera location if they choose to move forward. Arrows indicate the direction of movement. Wall rectangles identify the direction the camera will point towards.<br />
<br />
<div dir="ltr" style="margin-left: 0pt;">
<table style="border-collapse: collapse; border: none;"><colgroup><col width="360"></col><col width="359"></col></colgroup><tbody>
<tr style="height: 0px;"><td style="border-bottom: solid #000000 0px; border-left: solid #000000 0px; border-right: solid #000000 0px; border-top: solid #000000 0px; padding: 0; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: &quot;helvetica neue&quot; , &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Next image targets</span></div>
</td><td style="border-bottom: solid #000000 0px; border-left: solid #000000 0px; border-right: solid #000000 0px; border-top: solid #000000 0px; padding: 0; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: &quot;helvetica neue&quot; , &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Next centered image target</span></div>
</td></tr>
<tr style="height: 235px;"><td style="border-bottom: solid #000000 0px; border-left: solid #000000 0px; border-right: solid #000000 0px; border-top: solid #000000 0px; padding: 0; vertical-align: top;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: &quot;arial&quot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img height="200" src="https://lh4.googleusercontent.com/bSeHEipDYtEiFOBNMMeRQw-LGDNJ0aETTDUmG_7yYwVH4cQuNLBRzwcqfuYNkydy4kCqhb441Xt8V0zhIUObGlPGehfqCmLfaL9mpf07NAsc2t9dzHvoOf0kr9VtDenvGZ9_OYZa" style="border: none; transform: rotate(0rad);" width="320" /></span></div>
</td><td style="border-bottom: solid #000000 0px; border-left: solid #000000 0px; border-right: solid #000000 0px; border-top: solid #000000 0px; padding: 0; vertical-align: top;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: &quot;arial&quot;; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img height="200" src="https://lh4.googleusercontent.com/dggZUDqruDnihSTkSwOwycRC6pEOoXErmZJvi7jtV0cFbu9PEVW-zYZs8NzbfVbpevoK5Jcave8gxBJEx71ZhYcLghIpCxZWDTx1KFWw-1iF0KJoHalFSGrnF5ynAlstweLaaADd" style="border: none; transform: rotate(0rad);" width="320" /></span></div>
</td></tr>
</tbody></table>
</div>
<h4>
Cleaner street names, labels and targets</h4>
Street names and labels are now separated from controls, removing overlap issues and allowing for clean display in right-to-left and left-to-right languages.<br />
<br />
<div dir="ltr" style="margin-left: 0pt;">
<table style="border-collapse: collapse; border: none;"><colgroup><col width="360"></col><col width="359"></col></colgroup><tbody>
<tr style="height: 0px;"><td style="border-bottom: solid #000000 0px; border-left: solid #000000 0px; border-right: solid #000000 0px; border-top: solid #000000 0px; padding: 0; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: &quot;helvetica neue&quot; , &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Old renderer</span></div>
</td><td style="border-bottom: solid #000000 0px; border-left: solid #000000 0px; border-right: solid #000000 0px; border-top: solid #000000 0px; padding: 0; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: &quot;helvetica neue&quot; , &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">New renderer</span></div>
</td></tr>
<tr style="height: 233px;"><td style="border-bottom: solid #000000 0px; border-left: solid #000000 0px; border-right: solid #000000 0px; border-top: solid #000000 0px; padding: 0; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: &quot;open sans&quot;; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img height="200" src="https://lh3.googleusercontent.com/9mBLz3mhqYvECS0HwRigC6OQsjDrnQTY7JeJvNr1-0ggpDIURhdb1v-vBy6bmdlFP1VceVQgbyj-WeOoefVPxOS_haXYHOYtHSNOP7PWfsbOyKY3mMoEl1uPG4urW8XMJQPCloAw" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="320" /></span></div>
</td><td style="border-bottom: solid #000000 0px; border-left: solid #000000 0px; border-right: solid #000000 0px; border-top: solid #000000 0px; padding: 0; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: &quot;open sans&quot;; font-size: 13.333333333333332px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img height="200" src="https://lh6.googleusercontent.com/ML56mnoHEYZF0ruzUOiE3BC4VYjQsFblsEUVhNmowNzZEOwPhIec3FF0x2dGfVLDk2PW_UD6XALO_9YYtLo--I6XM-wcUMpc2HtrkOFGddgfEnylABR3AuZdHiGT3AE0asf31nSI" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="320" /></span></div>
</td></tr>
</tbody></table>
</div>
We hope you enjoy using the new and improved Street View renderer! Also 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&amp;utm_medium=website&amp;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost">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 />
For more information on Street View in the Google Maps JavaScript API, please see the <a href="https://developers.google.com/maps/documentation/javascript/streetview?utm_source=geodevsite&amp;utm_medium=website&amp;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost&amp;utm_content=#motion-tracking" >developer documentation</a>.<br />
<table><tbody>
<tr> <td style="width: 80px;"><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>
</tbody></table>
<br />]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/new-javascript-street-view-renderer-brings-rendering-improvements-and-better-mobile-support/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Keep users focused on what&#8217;s important with the latest Google Maps Android API</title>
		<link>https://googledata.org/google-maps/keep-users-focused-on-whats-important-with-the-latest-google-maps-android-api/</link>
		<comments>https://googledata.org/google-maps/keep-users-focused-on-whats-important-with-the-latest-google-maps-android-api/#comments</comments>
		<pubDate>Mon, 01 Aug 2016 23:44:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=f35d261a51d1d3b8fd723e7ce8da13d6</guid>
		<description><![CDATA[Released today, the latest version of the Google Maps Android API includes more developer requested features: you can now track camera movements more accurately via our new camera listeners, set the minimum &#38; maximum zoom levels on your map, and restrict the user&#8217;s panning to particular lat/lng bounds of the camera target. In addition, we&#8217;ve added a new marker Tag&#160;property so you can now associate your own data object with a marker.<br /><br /><h4>
Track camera movements more accurately</h4>
As one of our top requests, developers have been asking for a better way to track camera movements and the ability to see why the camera is moving, whether caused by user gestures, built-in API animations or developer controlled movements [<a href="https://code.google.com/p/gmaps-api-issues/issues/detail?id=4636" target="_blank">Issue 4636</a>]. Our new camera change listeners support you in doing this. Your app can now receive notifications for camera start, ongoing, and end events.<br /><br />
See the developer&#8217;s guide to <a href="https://developers.google.com/maps/documentation/android-api/events#camera_change_events" target="_blank">camera change events</a> and take a look at this <a href="https://github.com/googlemaps/android-samples/blob/master/ApiDemos/app/src/main/java/com/example/mapdemo/CameraDemoActivity.java" target="_blank">code sample</a> which shows you how to detect when the user drags the map, and draws a line to track this movement when it happens.<br /><br /><h4>
Control the zooming, panning and scrolling experience</h4>
Have you ever wanted to be able to control how much your user can zoom in and out and pan around on your map so that you can more tightly control the experience? Or have you got tile overlays only for zoom levels 15 through 20 and wish you could limit the zooming capability of both the map and your tile overlays to those particular levels?<br /><br />
You can now set the min and max zoom levels on your map by using <span><a href="https://developers.google.com/android/reference/com/google/android/gms/maps/GoogleMap#setMinZoomPreference(float)" target="_blank">GoogleMap.setMinZoomPreference()</a></span> and <span><a href="https://developers.google.com/android/reference/com/google/android/gms/maps/GoogleMap#setMaxZoomPreference(float)" target="_blank">GoogleMap.setMaxZoomPreference()</a></span> [<a href="https://code.google.com/p/gmaps-api-issues/issues/detail?id=4663" target="_blank">Issue 4663</a>]. These zoom levels will also apply to any tile overlays you have on your map.<br /><br />
In addition, you can also constrain the lat/lng center bounds of the focal point of the map (the camera target) so that users can only scroll and pan within these bounds using <span><a href="https://developers.google.com/android/reference/com/google/android/gms/maps/GoogleMap#setLatLngBoundsForCameraTarget(com.google.android.gms.maps.model.LatLngBounds)" target="_blank">GoogleMap.setLatLngBoundsForCameraTarget()</a></span>. This is awesome if you want your users to stay within the map area of your tile overlays, or you wish to confine the map in your app to a particular local area.<br /><table align="center" cellpadding="0" cellspacing="0"><tbody><tr><td><a href="https://1.bp.blogspot.com/-NAtR_DYU77Y/V5_Y8pZT4-I/AAAAAAAAAh4/ZDtRwMg4ZNElL9kncbwQjmLOgLbqholtACLcB/s1600/clamp.gif"><img border="0" height="195" src="https://1.bp.blogspot.com/-NAtR_DYU77Y/V5_Y8pZT4-I/AAAAAAAAAh4/ZDtRwMg4ZNElL9kncbwQjmLOgLbqholtACLcB/s400/clamp.gif" width="400"></a></td></tr><tr><td><div>
<span>Pan and zoom limits on a map for Adelaide, a beautiful city in South Australia</span></div>
</td></tr></tbody></table>
See the developer&#8217;s guide to learn more about <a href="https://developers.google.com/maps/documentation/android-api/views#setting_boundaries" target="_blank">setting boundaries on the map</a> as well as this <a href="https://github.com/googlemaps/android-samples/blob/master/ApiDemos/app/src/main/java/com/example/mapdemo/CameraClampingDemoActivity.java" target="_blank">code sample</a>.<br /><br /><h4>
Marker tags</h4>
Does your app cater for different types of markers and you want to treat them differently when a user taps on them? Or do you want to assign priorities to your markers? The new marker Tag property allows you to <a href="https://developers.google.com/maps/documentation/android-api/marker#associate_data_with_a_marker" target="_blank">associate whatever data object you like with a marker</a>, supporting you in doing this and more [<a href="https://code.google.com/p/gmaps-api-issues/issues/detail?id=4650" target="_blank">Issue 4650</a>].<br /><br />
A big thank you to Android developers everywhere for using the Google Maps Android API and submitting feedback via the <a href="https://code.google.com/p/gmaps-api-issues/" target="_blank">issue tracker</a>.<br /><br />
Our <a href="https://developers.google.com/maps/documentation/android-api/releases" target="_blank">release notes</a> contain details of bugs fixed as well as the features mentioned in this post. Take a look and start using our new features today!<br /><table><tbody><tr><td><img alt="author image" border="0" src="https://lh3.googleusercontent.com/6vY84AOYgFkem78tpMCEVfW5XJJ3jQkP5GC1-q3jfcwXiuLoyhal527iFmM02FL43vk6XV7XIqnU7daYNMxDwOKqr5RZK4bdnYXQlyBrpfr-DwO5u2tqFVBtj6ZgpdEfxV2v7Ocy"></td>  <td><i>Posted by Megan Boundey, Product Manager, Google Maps Mobile APIs</i></td></tr></tbody></table><br /><br />]]></description>
				<content:encoded><![CDATA[Released today, the latest version of the Google Maps Android API includes more developer requested features: you can now track camera movements more accurately via our new camera listeners, set the minimum &amp; maximum zoom levels on your map, and restrict the user’s panning to particular lat/lng bounds of the camera target. In addition, we’ve added a new marker Tag&nbsp;property so you can now associate your own data object with a marker.<br />
<br />
<h4>
Track camera movements more accurately</h4>
As one of our top requests, developers have been asking for a better way to track camera movements and the ability to see why the camera is moving, whether caused by user gestures, built-in API animations or developer controlled movements [<a href="https://code.google.com/p/gmaps-api-issues/issues/detail?id=4636" >Issue 4636</a>]. Our new camera change listeners support you in doing this. Your app can now receive notifications for camera start, ongoing, and end events.<br />
<br />
See the developer’s guide to <a href="https://developers.google.com/maps/documentation/android-api/events#camera_change_events" >camera change events</a> and take a look at this <a href="https://github.com/googlemaps/android-samples/blob/master/ApiDemos/app/src/main/java/com/example/mapdemo/CameraDemoActivity.java" >code sample</a> which shows you how to detect when the user drags the map, and draws a line to track this movement when it happens.<br />
<br />
<h4>
Control the zooming, panning and scrolling experience</h4>
Have you ever wanted to be able to control how much your user can zoom in and out and pan around on your map so that you can more tightly control the experience? Or have you got tile overlays only for zoom levels 15 through 20 and wish you could limit the zooming capability of both the map and your tile overlays to those particular levels?<br />
<br />
You can now set the min and max zoom levels on your map by using <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;"><a href="https://developers.google.com/android/reference/com/google/android/gms/maps/GoogleMap#setMinZoomPreference(float)" >GoogleMap.setMinZoomPreference()</a></span> and <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;"><a href="https://developers.google.com/android/reference/com/google/android/gms/maps/GoogleMap#setMaxZoomPreference(float)" >GoogleMap.setMaxZoomPreference()</a></span> [<a href="https://code.google.com/p/gmaps-api-issues/issues/detail?id=4663" >Issue 4663</a>]. These zoom levels will also apply to any tile overlays you have on your map.<br />
<br />
In addition, you can also constrain the lat/lng center bounds of the focal point of the map (the camera target) so that users can only scroll and pan within these bounds using <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;"><a href="https://developers.google.com/android/reference/com/google/android/gms/maps/GoogleMap#setLatLngBoundsForCameraTarget(com.google.android.gms.maps.model.LatLngBounds)" >GoogleMap.setLatLngBoundsForCameraTarget()</a></span>. This is awesome if you want your users to stay within the map area of your tile overlays, or you wish to confine the map in your app to a particular local area.<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://1.bp.blogspot.com/-NAtR_DYU77Y/V5_Y8pZT4-I/AAAAAAAAAh4/ZDtRwMg4ZNElL9kncbwQjmLOgLbqholtACLcB/s1600/clamp.gif" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="195" src="https://1.bp.blogspot.com/-NAtR_DYU77Y/V5_Y8pZT4-I/AAAAAAAAAh4/ZDtRwMg4ZNElL9kncbwQjmLOgLbqholtACLcB/s400/clamp.gif" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><div class="p1">
<span class="s1">Pan and zoom limits on a map for Adelaide, a beautiful city in South Australia</span></div>
</td></tr>
</tbody></table>
See the developer’s guide to learn more about <a href="https://developers.google.com/maps/documentation/android-api/views#setting_boundaries" >setting boundaries on the map</a> as well as this <a href="https://github.com/googlemaps/android-samples/blob/master/ApiDemos/app/src/main/java/com/example/mapdemo/CameraClampingDemoActivity.java" >code sample</a>.<br />
<br />
<h4>
Marker tags</h4>
Does your app cater for different types of markers and you want to treat them differently when a user taps on them? Or do you want to assign priorities to your markers? The new marker Tag property allows you to <a href="https://developers.google.com/maps/documentation/android-api/marker#associate_data_with_a_marker" >associate whatever data object you like with a marker</a>, supporting you in doing this and more [<a href="https://code.google.com/p/gmaps-api-issues/issues/detail?id=4650" >Issue 4650</a>].<br />
<br />
A big thank you to Android developers everywhere for using the Google Maps Android API and submitting feedback via the <a href="https://code.google.com/p/gmaps-api-issues/" >issue tracker</a>.<br />
<br />
Our <a href="https://developers.google.com/maps/documentation/android-api/releases" >release notes</a> contain details of bugs fixed as well as the features mentioned in this post. Take a look and start using our new features today!<br />
<table><tbody>
<tr> <td style="width: 80px;"><img alt="author image" border="0" src="https://lh3.googleusercontent.com/6vY84AOYgFkem78tpMCEVfW5XJJ3jQkP5GC1-q3jfcwXiuLoyhal527iFmM02FL43vk6XV7XIqnU7daYNMxDwOKqr5RZK4bdnYXQlyBrpfr-DwO5u2tqFVBtj6ZgpdEfxV2v7Ocy" style="border-radius: 50%; text-align: center; width: 80px;" /></td>  <td><i>Posted by Megan Boundey, Product Manager, Google Maps Mobile APIs</i></td></tr>
</tbody></table>
<br />
<br />]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/keep-users-focused-on-whats-important-with-the-latest-google-maps-android-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Google Places API for iOS &amp; Google Maps SDK for iOS are now in separate CocoaPods</title>
		<link>https://googledata.org/google-maps/google-places-api-for-ios-google-maps-sdk-for-ios-are-now-in-separate-cocoapods/</link>
		<comments>https://googledata.org/google-maps/google-places-api-for-ios-google-maps-sdk-for-ios-are-now-in-separate-cocoapods/#comments</comments>
		<pubDate>Tue, 26 Jul 2016 00:27:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=37a539d2b2548cec32c791ebe83b15d8</guid>
		<description><![CDATA[In today&#8217;s release, the Google Places API for iOS 2.0 and the Google Maps SDK for iOS 2.0 are now in separate CocoaPods. For developers who only use the Google Places API for iOS, this will significantly reduce the binary size of their app.<br /><br /><h4>
What does this mean for me? What do I have to do?</h4>
Nothing immediately for your current implementation, but we strongly suggest that you upgrade within the next year to the new Google Maps SDK for iOS 2.0 and Google Places API for iOS 2.0. The Google Maps for iOS SDK Version 1.x will become unsupported in one year&#8217;s time.<br /><br />
If you are using the Standard Plan Google Maps SDK for iOS 1.x, and haven&#8217;t specified a version in your podfile, you will be automatically upgraded to the new Google Maps SDK for iOS 2.0 when you run &#8216;pod update&#8217;. If you use any Places functionality, we&#8217;ve created this <a href="https://developers.google.com/places/migrate-to-v2" target="_blank">migration guide for the Places API</a> to step you through the process of migrating to the new Google Places API for iOS 2.0. <br /><br />
In addition, we&#8217;ve documented how to extract all the frameworks (<a href="https://developers.google.com/maps/documentation/ios-sdk/start#step_2_install_the_sdk" target="_blank">Maps</a>, <a href="https://developers.google.com/places/ios-api/start#step-2-install-the-api" target="_blank">Places</a>) from the relevant CocoaPods so you can manually include the SDKs in your project rather than using CocoaPods if you wish. [<a href="https://code.google.com/p/gmaps-api-issues/issues/detail?id=8856" target="_blank">Issue 8856</a>]<br /><br /><h4>
What does this mean for Premium Plan Maps SDK customers?</h4>
There is no longer a separate Google Maps Premium Plan SDK. Instead it has been replaced with the new streamlined <a href="https://developers.google.com/maps/documentation/ios-sdk/releases" target="_blank">Google Maps SDK for iOS 2.0</a> for both Standard and Premium Plan developers.<br /><br />
We&#8217;ve created a <a href="https://developers.google.com/maps/premium/migrate-to-v2" target="_blank">Premium Plan migration guide</a> that will step you through the process of migrating to the new Google Maps SDK for iOS 2.0. We&#8217;ve also documented how to <a href="https://developers.google.com/maps/premium/ios-get-started#install_the_sdk" target="_blank">extract the frameworks</a> from the CocoaPods so you can manually include the SDKs in your project if you&#8217;d prefer that. Your Enterprise Maps key will continue to work, as will your Premium Plan. <br /><br />
Please note:<br />
The Google Maps SDK for iOS Premium Plan SDK 1.13.2 (current version) will be supported for one year during which time we suggest you upgrade to the new streamlined Google Maps SDK for iOS 2.0.<br /><br />
Take a look at our <a href="https://developers.google.com/maps/documentation/ios-sdk/releases" target="_blank">release notes</a> and start using version 2.0 today!<br /><table><tbody><tr><td><br /><div>
<img alt="author image" border="0" src="https://lh3.googleusercontent.com/6vY84AOYgFkem78tpMCEVfW5XJJ3jQkP5GC1-q3jfcwXiuLoyhal527iFmM02FL43vk6XV7XIqnU7daYNMxDwOKqr5RZK4bdnYXQlyBrpfr-DwO5u2tqFVBtj6ZgpdEfxV2v7Ocy"></div>
</td>  <td><i>Posted by Megan Boundey, Product Manager, Google Maps Mobile APIs</i></td></tr></tbody></table>]]></description>
				<content:encoded><![CDATA[In today’s release, the Google Places API for iOS 2.0 and the Google Maps SDK for iOS 2.0 are now in separate CocoaPods. For developers who only use the Google Places API for iOS, this will significantly reduce the binary size of their app.<br />
<br />
<h4>
What does this mean for me? What do I have to do?</h4>
Nothing immediately for your current implementation, but we strongly suggest that you upgrade within the next year to the new Google Maps SDK for iOS 2.0 and Google Places API for iOS 2.0. The Google Maps for iOS SDK Version 1.x will become unsupported in one year’s time.<br />
<br />
If you are using the Standard Plan Google Maps SDK for iOS 1.x, and haven’t specified a version in your podfile, you will be automatically upgraded to the new Google Maps SDK for iOS 2.0 when you run ‘pod update’. If you use any Places functionality, we’ve created this <a href="https://developers.google.com/places/migrate-to-v2" >migration guide for the Places API</a> to step you through the process of migrating to the new Google Places API for iOS 2.0. <br />
<br />
In addition, we’ve documented how to extract all the frameworks (<a href="https://developers.google.com/maps/documentation/ios-sdk/start#step_2_install_the_sdk" >Maps</a>, <a href="https://developers.google.com/places/ios-api/start#step-2-install-the-api" >Places</a>) from the relevant CocoaPods so you can manually include the SDKs in your project rather than using CocoaPods if you wish. [<a href="https://code.google.com/p/gmaps-api-issues/issues/detail?id=8856" >Issue 8856</a>]<br />
<br />
<h4>
What does this mean for Premium Plan Maps SDK customers?</h4>
There is no longer a separate Google Maps Premium Plan SDK. Instead it has been replaced with the new streamlined <a href="https://developers.google.com/maps/documentation/ios-sdk/releases" >Google Maps SDK for iOS 2.0</a> for both Standard and Premium Plan developers.<br />
<br />
We’ve created a <a href="https://developers.google.com/maps/premium/migrate-to-v2" >Premium Plan migration guide</a> that will step you through the process of migrating to the new Google Maps SDK for iOS 2.0. We’ve also documented how to <a href="https://developers.google.com/maps/premium/ios-get-started#install_the_sdk" >extract the frameworks</a> from the CocoaPods so you can manually include the SDKs in your project if you’d prefer that. Your Enterprise Maps key will continue to work, as will your Premium Plan. <br />
<br />
Please note:<br />
The Google Maps SDK for iOS Premium Plan SDK 1.13.2 (current version) will be supported for one year during which time we suggest you upgrade to the new streamlined Google Maps SDK for iOS 2.0.<br />
<br />
Take a look at our <a href="https://developers.google.com/maps/documentation/ios-sdk/releases" >release notes</a> and start using version 2.0 today!<br />
<table><tbody>
<tr> <td style="width: 80px;"><br />
<div class="separator" style="clear: both; text-align: center;">
<img alt="author image" border="0" src="https://lh3.googleusercontent.com/6vY84AOYgFkem78tpMCEVfW5XJJ3jQkP5GC1-q3jfcwXiuLoyhal527iFmM02FL43vk6XV7XIqnU7daYNMxDwOKqr5RZK4bdnYXQlyBrpfr-DwO5u2tqFVBtj6ZgpdEfxV2v7Ocy" style="border-radius: 50%; width: 80px;" /></div>
</td>  <td><i>Posted by Megan Boundey, Product Manager, Google Maps Mobile APIs</i></td></tr>
</tbody></table>
]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/google-places-api-for-ios-google-maps-sdk-for-ios-are-now-in-separate-cocoapods/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>I/O session: Location and Proximity Superpowers: Eddystone + Google Beacon Platform</title>
		<link>https://googledata.org/google-maps/io-session-location-and-proximity-superpowers-eddystone-google-beacon-platform/</link>
		<comments>https://googledata.org/google-maps/io-session-location-and-proximity-superpowers-eddystone-google-beacon-platform/#comments</comments>
		<pubDate>Mon, 25 Jul 2016 15:05:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=1a69413f640adbd367f8eb6aa9b762c2</guid>
		<description><![CDATA[Bluetooth beacons mark important places and objects in a way that your phone understands. Last year, we introduced the Google beacon platform including Eddystone, Nearby Messages and the Proximity Beacon API that helps developers build beacon-powered proximity and location features in their apps.<br /><br />
Since then, we&#8217;ve learned that when deployment of physical infrastructure is involved, it&#8217;s important to get the best possible value from your investment. That&#8217;s why the Google beacon platform works differently from the traditional approach.<br /><br />
We don&#8217;t think of beacons as only pointing to a single feature in an app, or a single web resource. Instead, the Google beacon platform enables extensible location infrastructure that you can manage through your Google Developer project and reuse many times. Each beacon can take part in several different interactions: through your app, through other developers&#8217; apps, through Google services, and the web. All of this functionality works transparently across Eddystone-UID and <a href="https://developers.google.com/beacons/eddystone-eid" target="_blank">Eddystone-EID</a> -- because using our APIs means you never have to think about monitoring for the individual bytes that a beacon is broadcasting.<br /><br />
For example, we&#8217;re excited that the City of Amsterdam has adopted Eddystone and the newly released <a href="https://developers.google.com/beacons/proximity/attachments#attachment_visibility" target="_blank">publicly visible namespace</a> feature for the foundation of their <a href="http://open.datapunt.amsterdam.nl/beacons/Beacon%20attachments%20for%20Amsterdam%20Open%20Beacon%20Network.pdf" target="_blank">open beacon network</a>. Or, through <a href="https://developers.google.com/nearby/notifications/overview" target="_blank">Nearby Notifications</a>, Eddystone and the Google beacon platform enable explorers of the BFG Dream Jar Trail to discover cloud-updateable content in <a href="https://www.youtube.com/watch?v=EMun6_BDhHk" target="_blank">Dream Jars across London</a>.<br /><br />
To make getting started as easy as possible we&#8217;ve provided a set of tools to help developers, including links to <a href="https://developers.google.com/beacons/eddystone#beacon_manufacturers" target="_blank">beacon manufacturers</a> that can help you with Eddystone, Beacon Tools (for <a href="https://play.google.com/store/apps/details?id=com.google.android.apps.location.beacon.beacontools&#38;hl=en_GB" target="_blank">Android</a> and <a href="https://itunes.apple.com/us/app/beacon-tools/id1094371356?mt=8" target="_blank">iOS</a>), the <a href="https://developers.google.com/beacons/dashboard/" target="_blank">Beacon Dashboard</a>, a <a href="https://codelabs.developers.google.com/codelabs/hello-beacons/index.html#0" target="_blank">codelab</a> and of course our <a href="https://developers.google.com/beacons/" target="_blank">documentation</a>. And, if you were not able to attend Google I/O in person this year, you can watch my session, Location and Proximity Superpowers: Eddystone + Google Beacon Platform:<br /><div>
</div>
We can&#8217;t wait to see what you build!<br /><table><tbody><tr><td><br /><div>
<img alt="author image" border="0" src="https://lh3.googleusercontent.com/K6x9FKjtgDMai_4WzmO2jBqDvR_LzjmnTV20HlLNzfSbbofkqLPl1hu2Z_hZtfPnH09z9TvZqKSJVUuP7pzyJLJUfOrAUsSUo7POl9YPrYMXVigY5q4YFZGBWGOkja2vY5aKhOKj"></div>
</td>  <td>About Peter: <em>I am a Product Manager for the Google beacon platform, including the open beacon format Eddystone, and Google's cloud services that integrate beacon technology with first and third party apps. When I&#8217;m not working at Google I enjoy taking my dog, Oscar, for walks on Hampstead Heath.</em></td> </tr></tbody></table>]]></description>
				<content:encoded><![CDATA[Bluetooth beacons mark important places and objects in a way that your phone understands. Last year, we introduced the Google beacon platform including Eddystone, Nearby Messages and the Proximity Beacon API that helps developers build beacon-powered proximity and location features in their apps.<br />
<br />
Since then, we’ve learned that when deployment of physical infrastructure is involved, it’s important to get the best possible value from your investment. That’s why the Google beacon platform works differently from the traditional approach.<br />
<br />
We don’t think of beacons as only pointing to a single feature in an app, or a single web resource. Instead, the Google beacon platform enables extensible location infrastructure that you can manage through your Google Developer project and reuse many times. Each beacon can take part in several different interactions: through your app, through other developers’ apps, through Google services, and the web. All of this functionality works transparently across Eddystone-UID and <a href="https://developers.google.com/beacons/eddystone-eid" >Eddystone-EID</a> -- because using our APIs means you never have to think about monitoring for the individual bytes that a beacon is broadcasting.<br />
<br />
For example, we’re excited that the City of Amsterdam has adopted Eddystone and the newly released <a href="https://developers.google.com/beacons/proximity/attachments#attachment_visibility" >publicly visible namespace</a> feature for the foundation of their <a href="http://open.datapunt.amsterdam.nl/beacons/Beacon%20attachments%20for%20Amsterdam%20Open%20Beacon%20Network.pdf" >open beacon network</a>. Or, through <a href="https://developers.google.com/nearby/notifications/overview" >Nearby Notifications</a>, Eddystone and the Google beacon platform enable explorers of the BFG Dream Jar Trail to discover cloud-updateable content in <a href="https://www.youtube.com/watch?v=EMun6_BDhHk" >Dream Jars across London</a>.<br />
<br />
To make getting started as easy as possible we’ve provided a set of tools to help developers, including links to <a href="https://developers.google.com/beacons/eddystone#beacon_manufacturers" >beacon manufacturers</a> that can help you with Eddystone, Beacon Tools (for <a href="https://play.google.com/store/apps/details?id=com.google.android.apps.location.beacon.beacontools&amp;hl=en_GB" >Android</a> and <a href="https://itunes.apple.com/us/app/beacon-tools/id1094371356?mt=8" >iOS</a>), the <a href="https://developers.google.com/beacons/dashboard/" >Beacon Dashboard</a>, a <a href="https://codelabs.developers.google.com/codelabs/hello-beacons/index.html#0" >codelab</a> and of course our <a href="https://developers.google.com/beacons/" >documentation</a>. And, if you were not able to attend Google I/O in person this year, you can watch my session, Location and Proximity Superpowers: Eddystone + Google Beacon Platform:<br />
<div style="text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/3nYyApSiSLQ" width="560"></iframe></div>
We can’t wait to see what you build!<br />
<table><tbody>
<tr> <td style="width: 80px;"><br />
<div class="separator" style="clear: both; text-align: center;">
<img alt="author image" border="0" src="https://lh3.googleusercontent.com/K6x9FKjtgDMai_4WzmO2jBqDvR_LzjmnTV20HlLNzfSbbofkqLPl1hu2Z_hZtfPnH09z9TvZqKSJVUuP7pzyJLJUfOrAUsSUo7POl9YPrYMXVigY5q4YFZGBWGOkja2vY5aKhOKj" style="border-radius: 50%; width: 80px;" /></div>
</td>  <td>About Peter: <em>I am a Product Manager for the Google beacon platform, including the open beacon format Eddystone, and Google's cloud services that integrate beacon technology with first and third party apps. When I’m not working at Google I enjoy taking my dog, Oscar, for walks on Hampstead Heath.</em></td> </tr>
</tbody></table>
]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/io-session-location-and-proximity-superpowers-eddystone-google-beacon-platform/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Announcing marker clustering in the Google Maps SDK for iOS Utility Library</title>
		<link>https://googledata.org/google-maps/announcing-marker-clustering-in-the-google-maps-sdk-for-ios-utility-library/</link>
		<comments>https://googledata.org/google-maps/announcing-marker-clustering-in-the-google-maps-sdk-for-ios-utility-library/#comments</comments>
		<pubDate>Tue, 19 Jul 2016 01:02:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=d56a751bec20d18ab45db2975aca83d0</guid>
		<description><![CDATA[Today we&#8217;ve added <a href="https://developers.google.com/maps/documentation/ios-sdk/utility/marker-clustering?utm_source=geodevsite&#38;utm_medium=website&#38;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost&#38;utm_content=iOSmarkers" target="_blank">marker clustering</a> to the <a href="https://developers.google.com/maps/documentation/ios-sdk/utility/setup?utm_source=geodevsite&#38;utm_medium=website&#38;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost&#38;utm_content=iOSmarkers" target="_blank">Google Maps SDK for iOS Utility Library</a>! This much-requested feature is now available for <a href="https://developers.google.com/maps/documentation/ios-sdk/utility/setup?utm_source=geodevsite&#38;utm_medium=website&#38;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost&#38;utm_content=iOSmarkers" target="_blank">iOS</a> in addition to <a href="https://developers.google.com/maps/documentation/android-api/utility/marker-clustering?utm_source=geodevsite&#38;utm_medium=website&#38;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost&#38;utm_content=iOSmarkers" target="_blank">Android</a> and <a href="https://developers.google.com/maps/articles/toomanymarkers?utm_source=geodevsite&#38;utm_medium=website&#38;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost&#38;utm_content=iOSmarkers" target="_blank">JavaScript</a>.<br /><br />
Do you ever feel that your map just has too many markers on it, making it feel cluttered and hard to comprehend? Or, perhaps you want to show where the popular restaurants are in your city, but you still want your map to look clean?<br /><br />
Marker clustering supports you in doing this. As the zoom levels of the map change, you can aggregate markers, indicating clearly to your users exactly where those popular restaurants are located. As your user zooms in, the markers progressively split out until all of the individual markers are displayed.<br /><div>
<a href="https://1.bp.blogspot.com/-0_dZoHUYBmc/V41ehl-CRfI/AAAAAAAAAhg/k_oAVf5FVbweBLA2OmcsCXk7NDrsQhZwACLcB/s1600/iphone_clustering_transparency.gif"><img border="0" height="314" src="https://1.bp.blogspot.com/-0_dZoHUYBmc/V41ehl-CRfI/AAAAAAAAAhg/k_oAVf5FVbweBLA2OmcsCXk7NDrsQhZwACLcB/s640/iphone_clustering_transparency.gif" width="640"></a></div>
Using the new marker clustering feature in the Google Maps SDK for iOS Utility Library is an easy 4 step process:<br /><ul><li>Add &#8216;Google-Maps-iOS-Utils&#8217; to your Podfile</li>
<li>Instantiate the <span>GMUClusterManager</span></li>
<li>Implement the <span>GMUClusterItem</span> protocol for your marker objects</li>
<li>Add the marker objects to the cluster manager</li>
</ul>
We provide the default algorithm, renderer and icon generator to support you in doing this. In addition, you can also fully customize each of these by extending the default implementations, or by providing your own implementation of these protocols: <span>GMUClusterAlgorithm</span>, <span>GMUClusterRenderer</span>, <span>GMUClusterIconGenerator</span>.<br /><br />
Take a look at the <a href="https://developers.google.com/maps/documentation/ios-sdk/utility/marker-clustering?utm_source=geodevsite&#38;utm_medium=website&#38;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost&#38;utm_content=iOSmarkers" target="_blank">documentation</a> and <a href="https://github.com/googlemaps/google-maps-ios-utils/tree/1.0.0/samples" target="_blank">demo samples</a>, and start using marker clustering in the <a href="https://developers.google.com/maps/documentation/ios-sdk/utility/setup?utm_source=geodevsite&#38;utm_medium=website&#38;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost&#38;utm_content=iOSmarkers" target="_blank">Google Maps SDK for iOS Utility Library</a> today!<br /><table><tbody><tr><td><br /><div>
<img alt="author image" border="0" src="https://lh3.googleusercontent.com/6vY84AOYgFkem78tpMCEVfW5XJJ3jQkP5GC1-q3jfcwXiuLoyhal527iFmM02FL43vk6XV7XIqnU7daYNMxDwOKqr5RZK4bdnYXQlyBrpfr-DwO5u2tqFVBtj6ZgpdEfxV2v7Ocy"></div>
</td> 
<td><i>Posted by Megan Boundey, Product Manager, Google Maps Mobile APIs</i></td> </tr></tbody></table>]]></description>
				<content:encoded><![CDATA[Today we’ve added <a href="https://developers.google.com/maps/documentation/ios-sdk/utility/marker-clustering?utm_source=geodevsite&amp;utm_medium=website&amp;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost&amp;utm_content=iOSmarkers" >marker clustering</a> to the <a href="https://developers.google.com/maps/documentation/ios-sdk/utility/setup?utm_source=geodevsite&amp;utm_medium=website&amp;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost&amp;utm_content=iOSmarkers" >Google Maps SDK for iOS Utility Library</a>! This much-requested feature is now available for <a href="https://developers.google.com/maps/documentation/ios-sdk/utility/setup?utm_source=geodevsite&amp;utm_medium=website&amp;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost&amp;utm_content=iOSmarkers" >iOS</a> in addition to <a href="https://developers.google.com/maps/documentation/android-api/utility/marker-clustering?utm_source=geodevsite&amp;utm_medium=website&amp;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost&amp;utm_content=iOSmarkers" >Android</a> and <a href="https://developers.google.com/maps/articles/toomanymarkers?utm_source=geodevsite&amp;utm_medium=website&amp;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost&amp;utm_content=iOSmarkers" >JavaScript</a>.<br />
<br />
Do you ever feel that your map just has too many markers on it, making it feel cluttered and hard to comprehend? Or, perhaps you want to show where the popular restaurants are in your city, but you still want your map to look clean?<br />
<br />
Marker clustering supports you in doing this. As the zoom levels of the map change, you can aggregate markers, indicating clearly to your users exactly where those popular restaurants are located. As your user zooms in, the markers progressively split out until all of the individual markers are displayed.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-0_dZoHUYBmc/V41ehl-CRfI/AAAAAAAAAhg/k_oAVf5FVbweBLA2OmcsCXk7NDrsQhZwACLcB/s1600/iphone_clustering_transparency.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="314" src="https://1.bp.blogspot.com/-0_dZoHUYBmc/V41ehl-CRfI/AAAAAAAAAhg/k_oAVf5FVbweBLA2OmcsCXk7NDrsQhZwACLcB/s640/iphone_clustering_transparency.gif" width="640" /></a></div>
Using the new marker clustering feature in the Google Maps SDK for iOS Utility Library is an easy 4 step process:<br />
<ul>
<li>Add ‘Google-Maps-iOS-Utils’ to your Podfile</li>
<li>Instantiate the <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">GMUClusterManager</span></li>
<li>Implement the <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">GMUClusterItem</span> protocol for your marker objects</li>
<li>Add the marker objects to the cluster manager</li>
</ul>
We provide the default algorithm, renderer and icon generator to support you in doing this. In addition, you can also fully customize each of these by extending the default implementations, or by providing your own implementation of these protocols: <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">GMUClusterAlgorithm</span>, <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">GMUClusterRenderer</span>, <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">GMUClusterIconGenerator</span>.<br />
<br />
Take a look at the <a href="https://developers.google.com/maps/documentation/ios-sdk/utility/marker-clustering?utm_source=geodevsite&amp;utm_medium=website&amp;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost&amp;utm_content=iOSmarkers" >documentation</a> and <a href="https://github.com/googlemaps/google-maps-ios-utils/tree/1.0.0/samples" >demo samples</a>, and start using marker clustering in the <a href="https://developers.google.com/maps/documentation/ios-sdk/utility/setup?utm_source=geodevsite&amp;utm_medium=website&amp;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost&amp;utm_content=iOSmarkers" >Google Maps SDK for iOS Utility Library</a> today!<br />
<table><tbody>
<tr> <td style="width: 80px;"><br />
<div class="separator" style="clear: both; text-align: center;">
<img alt="author image" border="0" src="https://lh3.googleusercontent.com/6vY84AOYgFkem78tpMCEVfW5XJJ3jQkP5GC1-q3jfcwXiuLoyhal527iFmM02FL43vk6XV7XIqnU7daYNMxDwOKqr5RZK4bdnYXQlyBrpfr-DwO5u2tqFVBtj6ZgpdEfxV2v7Ocy" style="border-radius: 50%; width: 80px;" /></div>
</td> 
<td><i>Posted by Megan Boundey, Product Manager, Google Maps Mobile APIs</i></td> </tr>
</tbody></table>
]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/announcing-marker-clustering-in-the-google-maps-sdk-for-ios-utility-library/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>I/O session live: Building geo services that scale</title>
		<link>https://googledata.org/google-maps/io-session-live-building-geo-services-that-scale/</link>
		<comments>https://googledata.org/google-maps/io-session-live-building-geo-services-that-scale/#comments</comments>
		<pubDate>Thu, 14 Jul 2016 18:57:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=862539a9e3fb8c95e57e91824e004f32</guid>
		<description><![CDATA[<div>
<i>Posted by Laurence Moroney, Developer Advocate at Google</i></div>
<br />
While at Google I/O, l had the opportunity to present the session &#8216;Building geo services that scale&#8217;.  I&#8217;m pleased to share it more broadly for those of you who were not able to be there in person:<br /><div>
</div>
<i>Building geo services that scale</i><br />
Not all map and geo applications run entirely on your mobile device. Perhaps you want to protect your keys or other API access data from reverse engineering by putting them in the cloud, or you have custom business logic that you run on your server that you don't want to distribute via mobile. To protect your keys and API access data you'll need to operate some kind of service. In this session you'll learn how to build that service on the Google Cloud Platform and consume it in a mobile application that uses the Google Maps APIs.<br /><div>
<span><img alt="DSC_3206 (1).jpg" height="426" src="https://lh4.googleusercontent.com/a9TTh5Wvr9HV1kvx1xzWfpIq-apFRTPapVDlraSaIbHp_cSbGuoe2uyAxzMzUrXcScY2PpZeCAGoXaOPZLu7GIqKDiYvsCt8jUW4iqWxgpdSGfKTSgsuFt4B3oR3v1p2wgzWuNnh" width="640"></span></div>
<table><tbody><tr><td><br /><div>
</div>
<img alt="author image" border="0" src="https://4.bp.blogspot.com/-Civ0vs_fVv4/V4ASp64f_aI/AAAAAAAAAgY/IE-dp1TlEPIqsaGC8RxYpvEGHAGe7gWSACLcB/s1600/laurence.jpg"></td>  <td>About Laurence: <em>I am a Developer Advocate at Google, working on mobile services, specializing in cross-platform developer technologies. As the host of 'Coffee with a Googler' on the Google Developers channel I&#8217;m able to meet with some of those most creative and inspiring developers at Google and learn about the projects they&#8217;re leading. When I&#8217;m not Googling, I&#8217;m involved in many things, including working on the revival comics for the Stargate TV shows, and enjoying the geek cred that this brings.</em><br /><div>
</div>
</td> </tr></tbody></table><br /><br />]]></description>
				<content:encoded><![CDATA[<div class="separator" style="clear: both; text-align: left;">
<i>Posted by Laurence Moroney, Developer Advocate at Google</i></div>
<br />
While at Google I/O, l had the opportunity to present the session ‘Building geo services that scale’.  I’m pleased to share it more broadly for those of you who were not able to be there in person:<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/QqOYZ5Yu47Y" width="560"></iframe></div>
<i>Building geo services that scale</i><br />
Not all map and geo applications run entirely on your mobile device. Perhaps you want to protect your keys or other API access data from reverse engineering by putting them in the cloud, or you have custom business logic that you run on your server that you don't want to distribute via mobile. To protect your keys and API access data you'll need to operate some kind of service. In this session you'll learn how to build that service on the Google Cloud Platform and consume it in a mobile application that uses the Google Maps APIs.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="background-color: white; color: #212121; font-family: &quot;arial&quot;; font-size: 13.3333px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="DSC_3206 (1).jpg" height="426" src="https://lh4.googleusercontent.com/a9TTh5Wvr9HV1kvx1xzWfpIq-apFRTPapVDlraSaIbHp_cSbGuoe2uyAxzMzUrXcScY2PpZeCAGoXaOPZLu7GIqKDiYvsCt8jUW4iqWxgpdSGfKTSgsuFt4B3oR3v1p2wgzWuNnh" style="border: none; transform: rotate(0rad);" width="640" /></span></div>
<table><tbody>
<tr> <td style="width: 80px;"><br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<img alt="author image" border="0" src="https://4.bp.blogspot.com/-Civ0vs_fVv4/V4ASp64f_aI/AAAAAAAAAgY/IE-dp1TlEPIqsaGC8RxYpvEGHAGe7gWSACLcB/s1600/laurence.jpg" style="border-radius: 50%; width: 80px;" /></td>  <td>About Laurence: <em>I am a Developer Advocate at Google, working on mobile services, specializing in cross-platform developer technologies. As the host of 'Coffee with a Googler' on the Google Developers channel I’m able to meet with some of those most creative and inspiring developers at Google and learn about the projects they’re leading. When I’m not Googling, I’m involved in many things, including working on the revival comics for the Stargate TV shows, and enjoying the geek cred that this brings.</em><br />
<div class="separator" style="clear: both; text-align: center;">
</div>
</td> </tr>
</tbody></table>
<br />
<br />]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/io-session-live-building-geo-services-that-scale/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Behind the Australian Elections Map: Mapping democracy in real-time</title>
		<link>https://googledata.org/google-maps/behind-the-australian-elections-map-mapping-democracy-in-real-time/</link>
		<comments>https://googledata.org/google-maps/behind-the-australian-elections-map-mapping-democracy-in-real-time/#comments</comments>
		<pubDate>Fri, 01 Jul 2016 23:53:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=37f65dc9cfb45a49282062813949e3e4</guid>
		<description><![CDATA[It's elections time in Australia! With 94% of eligible Australians registered to vote, there will be close to 15 million participants this year.<br /><br />
Googlers in the Sydney office were recently chatting about the upcoming election and realized we all had similar questions: what were the results last cycle, where are the closest polling stations, and where do we look for real-time results on election day? Friends and family were asking the same questions, so we decided to build a solution using <a href="https://developers.google.com/maps/documentation/javascript/">Google Maps APIs</a>,  <a href="https://firebase.google.com/">Firebase</a>,  <a href="https://cloud.google.com/appengine/">Google App Engine</a>,  <a href="https://cloud.google.com/compute/">Google Cloud Compute</a>,  <a href="http://angular.io/">Angular 2</a>,  <a href="https://translate.google.com/toolkit/list#translations/active">the Google Translation Toolkit</a> and Go.<br /><br /><br /><br />
The aim of <a href="https://election.google.com.au/" target="_blank">the election map</a> was to provide all the information that Australians would need to participate in the voting process. We wanted to cover pre-, mid- and post-election needs, including:<br /><br /><ol><li>A polling place locator with searchable addresses, suburbs, and electorates</li>
<li>Directions and navigation to the polling places, accessible via the election map</li>
<li>Real-time election results once polling has closed and counting has started</li>
<li>The ability to share and embed maps.</li>
</ol><br /><table align="center" cellpadding="0" cellspacing="0"><tbody><tr><td><a href="https://2.bp.blogspot.com/-PV-2nLyjsVc/V3b8VG9AFCI/AAAAAAAAAfc/Z_fcufbQcZMgw7jjDS01XqmAZ75Vvke8ACKgB/s1600/Screen%2BShot%2B2016-07-01%2Bat%2B4.25.04%2BPM.png"><img border="0" src="https://2.bp.blogspot.com/-PV-2nLyjsVc/V3b8VG9AFCI/AAAAAAAAAfc/Z_fcufbQcZMgw7jjDS01XqmAZ75Vvke8ACKgB/s640/Screen%2BShot%2B2016-07-01%2Bat%2B4.25.04%2BPM.png"></a></td></tr><tr><td>UX mockup: map and fake election results using testing data</td></tr></tbody></table><br /><strong>The pre-election map</strong> displays static electorate data, polling booths and ballot papers. It also indicates who won the electorate in the last 2013 election. To do this, we sourced 2013 election data from the Australian Electoral Commission (AEC) and stored it in a Go application intended for Google App Engine so that it could be served to the website frontend. The AEC provided us with data about electorate boundaries and polling place locations.<br /><br />
The website frontend was built using Angular 2 and we've used several open source projects, including <a href="http://www.gdal.org/">GDAL</a>, <a href="https://github.com/mbloch/mapshaper">mapshaper</a> and a <a href="https://github.com/smira/go-point-clustering">point clustering library</a>. These libraries allowed us to send only the required details for a user's viewport, while keeping data usage reasonably low and reducing visual noise.<br /><br /><table align="center" cellpadding="0" cellspacing="0"><tbody><tr><td><a href="https://1.bp.blogspot.com/-GnV9ivQTO4Y/V3b92Xl9Y0I/AAAAAAAAAfo/WunDpuoNwxsAPXEakq5Ip4q3j3OYQ3pWACLcB/s1600/Screen%2BShot%2B2016-07-01%2Bat%2B4.33.21%2BPM.png"><img border="0" src="https://1.bp.blogspot.com/-GnV9ivQTO4Y/V3b92Xl9Y0I/AAAAAAAAAfo/WunDpuoNwxsAPXEakq5Ip4q3j3OYQ3pWACLcB/s640/Screen%2BShot%2B2016-07-01%2Bat%2B4.33.21%2BPM.png"></a></td></tr><tr><td>Polling location information with address and directions intent</td></tr></tbody></table><strong>Day-of website visitors</strong> will have the ability to search for polling stations and learn about what services are available at each location (accessibility, <a href="https://en.wikipedia.org/wiki/Sausage_sizzle">sausage sizzle</a> and/or cake stand). We sourced the sausage sizzle and cake stand data from <a href="http://democracysausage.org/">Democracy Sausage</a> and <a href="http://www.electionsausagesizzle.com.au/">Snagvotes</a>. We used the polling place ID to match these to the AEC polling place identifiers. We built a small Google Compute Engine app which sources the data from our sausage sizzle data sources and broadcasts it out to our live web application using <a href="https://firebase.google.com/docs/database/">Firebase Realtime Database</a>.<br /><table align="center" cellpadding="0" cellspacing="0"><tbody><tr><td><a href="https://2.bp.blogspot.com/-1F7tklP3tTI/V3b9enBijjI/AAAAAAAAAfk/NXglLcD6Tb4kNRpUCG95orGqV7EEgbYRwCLcB/s1600/Screen%2BShot%2B2016-07-01%2Bat%2B4.30.58%2BPM.png"><img border="0" src="https://2.bp.blogspot.com/-1F7tklP3tTI/V3b9enBijjI/AAAAAAAAAfk/NXglLcD6Tb4kNRpUCG95orGqV7EEgbYRwCLcB/s640/Screen%2BShot%2B2016-07-01%2Bat%2B4.30.58%2BPM.png"></a></td></tr><tr><td>Autocomplete searches for polling locations</td></tr></tbody></table>
To enable the search functionality, we use two different services in parallel. We first attempt to match the search query against the electorate list on the client. We also use the <a href="https://developers.google.com/maps/documentation/javascript/places">Google Maps Javascript API Places Library</a> with <a href="https://developers.google.com/places/web-service/autocomplete">Autocomplete</a> to provide suggestions of what users might be searching for, including suburbs, places of interest and addresses. This gives our users the ability to select recommendations instead of having to type full queries.<br /><br />
Voters also need to plan their trip to the polling booths. We relied on Google Maps' existing real-time traffic information and turn-by-turn directions to provide directions functionality.<br /><br /><strong>After 6pm on election night</strong> and when votes begin to be counted, we will switch the site to show real time election results. To do this, again we are using the <a href="http://www.aec.gov.au/media/mediafeed/">AEC data</a> feed and <a href="https://firebase.google.com/docs/database/">Firebase Realtime Database</a>. <br /><br />
To make it really easy for people to visualize the elections results we employed a hemicycle (half donut circle) in the left sidebar to display real-time results. We also added "share" and "embed" features so people and media can easily share information about the election.<br /><hr /><div>
<a href="https://3.bp.blogspot.com/-qx55jDBRxlg/V3b-KBi3t3I/AAAAAAAAAfw/1C2qVAr_XHYEOzacYFKIKJ2iL5mMKBIxgCLcB/s1600/Screen%2BShot%2B2016-07-01%2Bat%2B4.34.41%2BPM.png"><img border="0" src="https://3.bp.blogspot.com/-qx55jDBRxlg/V3b-KBi3t3I/AAAAAAAAAfw/1C2qVAr_XHYEOzacYFKIKJ2iL5mMKBIxgCLcB/s640/Screen%2BShot%2B2016-07-01%2Bat%2B4.34.41%2BPM.png"></a></div>
This project was put together by a cross-functional group of Google volunteers including software engineers, UX Designers, product managers and the legal and marketing teams. We'll all be voting on July 2nd, cake in hand. See you at the polls!<br /><br /><table><tbody><tr><td><div>
<img alt="author image" border="0" src="https://3.bp.blogspot.com/-l7PeKvUD1S0/V3b-dE6jnvI/AAAAAAAAAf4/-T3nfduCEUQ0L3zJdHeB2APV9Q2qxv6TgCLcB/s200/Screen%2BShot%2B2016-07-01%2Bat%2B4.35.47%2BPM.png"></div>
</td> <td>About Taylah: <em>I am an Associate Product Manager at Google&#8217;s Sydney office where I work on Google Maps for Android Auto. I love working on Google Maps as you get to help millions of people explore the world every day. When I&#8217;m not at work, I love exploring beautiful places, shopping in thrift stores, painting and spending time with my family and friends.</em></td> </tr></tbody></table><br />]]></description>
				<content:encoded><![CDATA[It's elections time in Australia! With 94% of eligible Australians registered to vote, there will be close to 15 million participants this year.<br />
<br />
Googlers in the Sydney office were recently chatting about the upcoming election and realized we all had similar questions: what were the results last cycle, where are the closest polling stations, and where do we look for real-time results on election day? Friends and family were asking the same questions, so we decided to build a solution using <a href="https://developers.google.com/maps/documentation/javascript/">Google Maps APIs</a>,  <a href="https://firebase.google.com/">Firebase</a>,  <a href="https://cloud.google.com/appengine/">Google App Engine</a>,  <a href="https://cloud.google.com/compute/">Google Cloud Compute</a>,  <a href="http://angular.io/">Angular 2</a>,  <a href="https://translate.google.com/toolkit/list#translations/active">the Google Translation Toolkit</a> and Go.<br />
<br />
<iframe height="400px" src="https://election.google.com.au/?center=-33.924725,151.098863&amp;zoom=13&amp;electorate=barton&amp;sidebar=hide" style="border: none;" width="660px"></iframe><br />
<br />
The aim of <a href="https://election.google.com.au/" >the election map</a> was to provide all the information that Australians would need to participate in the voting process. We wanted to cover pre-, mid- and post-election needs, including:<br />
<br />
<ol>
<li>A polling place locator with searchable addresses, suburbs, and electorates</li>
<li>Directions and navigation to the polling places, accessible via the election map</li>
<li>Real-time election results once polling has closed and counting has started</li>
<li>The ability to share and embed maps.</li>
</ol>
<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://2.bp.blogspot.com/-PV-2nLyjsVc/V3b8VG9AFCI/AAAAAAAAAfc/Z_fcufbQcZMgw7jjDS01XqmAZ75Vvke8ACKgB/s1600/Screen%2BShot%2B2016-07-01%2Bat%2B4.25.04%2BPM.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://2.bp.blogspot.com/-PV-2nLyjsVc/V3b8VG9AFCI/AAAAAAAAAfc/Z_fcufbQcZMgw7jjDS01XqmAZ75Vvke8ACKgB/s640/Screen%2BShot%2B2016-07-01%2Bat%2B4.25.04%2BPM.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">UX mockup: map and fake election results using testing data</td></tr>
</tbody></table>
<br />
<strong>The pre-election map</strong> displays static electorate data, polling booths and ballot papers. It also indicates who won the electorate in the last 2013 election. To do this, we sourced 2013 election data from the Australian Electoral Commission (AEC) and stored it in a Go application intended for Google App Engine so that it could be served to the website frontend. The AEC provided us with data about electorate boundaries and polling place locations.<br />
<br />
The website frontend was built using Angular 2 and we've used several open source projects, including <a href="http://www.gdal.org/">GDAL</a>, <a href="https://github.com/mbloch/mapshaper">mapshaper</a> and a <a href="https://github.com/smira/go-point-clustering">point clustering library</a>. These libraries allowed us to send only the required details for a user's viewport, while keeping data usage reasonably low and reducing visual noise.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://1.bp.blogspot.com/-GnV9ivQTO4Y/V3b92Xl9Y0I/AAAAAAAAAfo/WunDpuoNwxsAPXEakq5Ip4q3j3OYQ3pWACLcB/s1600/Screen%2BShot%2B2016-07-01%2Bat%2B4.33.21%2BPM.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://1.bp.blogspot.com/-GnV9ivQTO4Y/V3b92Xl9Y0I/AAAAAAAAAfo/WunDpuoNwxsAPXEakq5Ip4q3j3OYQ3pWACLcB/s640/Screen%2BShot%2B2016-07-01%2Bat%2B4.33.21%2BPM.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Polling location information with address and directions intent</td></tr>
</tbody></table>
<strong>Day-of website visitors</strong> will have the ability to search for polling stations and learn about what services are available at each location (accessibility, <a href="https://en.wikipedia.org/wiki/Sausage_sizzle">sausage sizzle</a> and/or cake stand). We sourced the sausage sizzle and cake stand data from <a href="http://democracysausage.org/">Democracy Sausage</a> and <a href="http://www.electionsausagesizzle.com.au/">Snagvotes</a>. We used the polling place ID to match these to the AEC polling place identifiers. We built a small Google Compute Engine app which sources the data from our sausage sizzle data sources and broadcasts it out to our live web application using <a href="https://firebase.google.com/docs/database/">Firebase Realtime Database</a>.<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://2.bp.blogspot.com/-1F7tklP3tTI/V3b9enBijjI/AAAAAAAAAfk/NXglLcD6Tb4kNRpUCG95orGqV7EEgbYRwCLcB/s1600/Screen%2BShot%2B2016-07-01%2Bat%2B4.30.58%2BPM.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://2.bp.blogspot.com/-1F7tklP3tTI/V3b9enBijjI/AAAAAAAAAfk/NXglLcD6Tb4kNRpUCG95orGqV7EEgbYRwCLcB/s640/Screen%2BShot%2B2016-07-01%2Bat%2B4.30.58%2BPM.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Autocomplete searches for polling locations</td></tr>
</tbody></table>
To enable the search functionality, we use two different services in parallel. We first attempt to match the search query against the electorate list on the client. We also use the <a href="https://developers.google.com/maps/documentation/javascript/places">Google Maps Javascript API Places Library</a> with <a href="https://developers.google.com/places/web-service/autocomplete">Autocomplete</a> to provide suggestions of what users might be searching for, including suburbs, places of interest and addresses. This gives our users the ability to select recommendations instead of having to type full queries.<br />
<br />
Voters also need to plan their trip to the polling booths. We relied on Google Maps' existing real-time traffic information and turn-by-turn directions to provide directions functionality.<br />
<br />
<strong>After 6pm on election night</strong> and when votes begin to be counted, we will switch the site to show real time election results. To do this, again we are using the <a href="http://www.aec.gov.au/media/mediafeed/">AEC data</a> feed and <a href="https://firebase.google.com/docs/database/">Firebase Realtime Database</a>. <br />
<br />
To make it really easy for people to visualize the elections results we employed a hemicycle (half donut circle) in the left sidebar to display real-time results. We also added "share" and "embed" features so people and media can easily share information about the election.<br />
<hr />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-qx55jDBRxlg/V3b-KBi3t3I/AAAAAAAAAfw/1C2qVAr_XHYEOzacYFKIKJ2iL5mMKBIxgCLcB/s1600/Screen%2BShot%2B2016-07-01%2Bat%2B4.34.41%2BPM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://3.bp.blogspot.com/-qx55jDBRxlg/V3b-KBi3t3I/AAAAAAAAAfw/1C2qVAr_XHYEOzacYFKIKJ2iL5mMKBIxgCLcB/s640/Screen%2BShot%2B2016-07-01%2Bat%2B4.34.41%2BPM.png" /></a></div>
This project was put together by a cross-functional group of Google volunteers including software engineers, UX Designers, product managers and the legal and marketing teams. We'll all be voting on July 2nd, cake in hand. See you at the polls!<br />
<br />
<table><tbody>
<tr> <td style="width: 80px;"><div class="separator" style="clear: both; text-align: center;">
<img alt="author image" border="0" src="https://3.bp.blogspot.com/-l7PeKvUD1S0/V3b-dE6jnvI/AAAAAAAAAf4/-T3nfduCEUQ0L3zJdHeB2APV9Q2qxv6TgCLcB/s200/Screen%2BShot%2B2016-07-01%2Bat%2B4.35.47%2BPM.png" style="border-radius: 50%; width: 80px;" /></div>
</td> <td>About Taylah: <em>I am an Associate Product Manager at Google’s Sydney office where I work on Google Maps for Android Auto. I love working on Google Maps as you get to help millions of people explore the world every day. When I’m not at work, I love exploring beautiful places, shopping in thrift stores, painting and spending time with my family and friends.</em></td> </tr>
</tbody></table>
<br />]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/behind-the-australian-elections-map-mapping-democracy-in-real-time/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Kick off your summer travels with these new Google Maps features</title>
		<link>https://googledata.org/google-maps/kick-off-your-summer-travels-with-these-new-google-maps-features/</link>
		<comments>https://googledata.org/google-maps/kick-off-your-summer-travels-with-these-new-google-maps-features/#comments</comments>
		<pubDate>Thu, 30 Jun 2016 13:00:00 +0000</pubDate>
		<dc:creator><![CDATA[Lat Long]]></dc:creator>
				<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[google lat-long]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=002c431d55dfbffeaaba9a583230fd54</guid>
		<description><![CDATA[<span>The weather&#8217;s heating up, kids are out of school, and that means only one thing: summer&#8217;s officially here. Summer brings weekend road trips, faraway escapes and all kinds of getaways in between. And with the latest update to Google Maps, we're introducing two new features to get you where you&#8217;re going and help you remember your travels in a brand new way. </span><br /><span><br /></span><span>Road trip warriors can now get multi-stop directions in Google Maps on Android (coming soon to iOS). Just open the app, enter a destination, tap the corner menu, and then click &#8220;Add a stop&#8221;. To rearrange the order of your stops, tap and hold the three dot menu to the left of &#8220;Add stop&#8221; and drag it to the position you want &#8211; you can even search for types of places like gas stations or restaurants like you normally would. Once you&#8217;ve added all your stops, tap &#8220;Done&#8221; and your multi-stop route is complete. When you enter navigation mode you&#8217;ll have the same seamless driving experience you&#8217;re used to, whether you&#8217;re going from errand to errand or hitting scenic spots along Route 66.</span><br /><span><br /></span><br /><div><a href="http://2.bp.blogspot.com/-8l52kBKmhmA/V3Qoz9DcoAI/AAAAAAAAE4c/7graHk1fHLISmRcxeMyI19W7tcfXBSZyQCK4B/s1600/image%2B%25283%2529.gif"><span></span></a></div><div><span><a href="http://3.bp.blogspot.com/-nobE_2186a8/V3RvdoByUGI/AAAAAAAAE44/vphlFNOvpj8FzAQC2mKHBpTU6Q8RNRY_wCK4B/s1600/ForOlga_1.5sec.gif"><img border="0" height="640" src="https://3.bp.blogspot.com/-nobE_2186a8/V3RvdoByUGI/AAAAAAAAE44/vphlFNOvpj8FzAQC2mKHBpTU6Q8RNRY_wCK4B/s640/ForOlga_1.5sec.gif" width="360"></a></span></div><div><span>A lot of the fun of traveling is the memories created while exploring new places with friends, family or even solo. Pictures are a traditional way to remember those moments, but now Your Timeline users on Android can preserve their travel memories and info in a new way. Google Maps users with Location History enabled can open Your Timeline, select a date from their recent vacation or everyday life and add notes to help remember what they did that day&#8212;or save important notes for later.</span></div><br /><div><a href="http://4.bp.blogspot.com/-1f1ke8vLsBA/V3QqyTw0nlI/AAAAAAAAE4o/ki2V_h-v3UkMk5IsYBPf-OHS4f_E1YxUQCK4B/s1600/Screen%2BShot%2B2016-06-29%2Bat%2B1.07.58%2BPM.png"><img border="0" height="640" src="https://4.bp.blogspot.com/-1f1ke8vLsBA/V3QqyTw0nlI/AAAAAAAAE4o/ki2V_h-v3UkMk5IsYBPf-OHS4f_E1YxUQCK4B/s640/Screen%2BShot%2B2016-06-29%2Bat%2B1.07.58%2BPM.png" width="360"></a></div><div><span><span></span></span></div><div><span><span><br /></span></span><br /><div><span>No matter where your travels take you this summer and beyond, these new Google Maps features will get you there and help keep track of all the memories you make along the way.</span></div></div><span><br /></span><i><span>Posted by Liz Davidoff, Communications Manager, Google Maps<br /></span></i><br /><br />]]></description>
				<content:encoded><![CDATA[<span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">The weather’s heating up, kids are out of school, and that means only one thing: summer’s officially here. Summer brings weekend road trips, faraway escapes and all kinds of getaways in between. And with the latest update to Google Maps, we're introducing two new features to get you where you’re going and help you remember your travels in a brand new way. </span><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">Road trip warriors can now get multi-stop directions in Google Maps on Android (coming soon to iOS). Just open the app, enter a destination, tap the corner menu, and then click “Add a stop”. To rearrange the order of your stops, tap and hold the three dot menu to the left of “Add stop” and drag it to the position you want – you can even search for types of places like gas stations or restaurants like you normally would. Once you’ve added all your stops, tap “Done” and your multi-stop route is complete. When you enter navigation mode you’ll have the same seamless driving experience you’re used to, whether you’re going from errand to errand or hitting scenic spots along Route 66.</span><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span><br /><div style="text-align: center;"><a href="http://2.bp.blogspot.com/-8l52kBKmhmA/V3Qoz9DcoAI/AAAAAAAAE4c/7graHk1fHLISmRcxeMyI19W7tcfXBSZyQCK4B/s1600/image%2B%25283%2529.gif" imageanchor="1"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"></span></a></div><div style="text-align: center;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><a href="http://3.bp.blogspot.com/-nobE_2186a8/V3RvdoByUGI/AAAAAAAAE44/vphlFNOvpj8FzAQC2mKHBpTU6Q8RNRY_wCK4B/s1600/ForOlga_1.5sec.gif" imageanchor="1"><img border="0" height="640" src="https://3.bp.blogspot.com/-nobE_2186a8/V3RvdoByUGI/AAAAAAAAE44/vphlFNOvpj8FzAQC2mKHBpTU6Q8RNRY_wCK4B/s640/ForOlga_1.5sec.gif" width="360" /></a></span></div><div style="text-align: left;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">A lot of the fun of traveling is the memories created while exploring new places with friends, family or even solo. Pictures are a traditional way to remember those moments, but now Your Timeline users on Android can preserve their travel memories and info in a new way. Google Maps users with Location History enabled can open Your Timeline, select a date from their recent vacation or everyday life and add notes to help remember what they did that day—or save important notes for later.</span></div><br /><div style="text-align: center;"><a href="http://4.bp.blogspot.com/-1f1ke8vLsBA/V3QqyTw0nlI/AAAAAAAAE4o/ki2V_h-v3UkMk5IsYBPf-OHS4f_E1YxUQCK4B/s1600/Screen%2BShot%2B2016-06-29%2Bat%2B1.07.58%2BPM.png" imageanchor="1"><img border="0" height="640" src="https://4.bp.blogspot.com/-1f1ke8vLsBA/V3QqyTw0nlI/AAAAAAAAE4o/ki2V_h-v3UkMk5IsYBPf-OHS4f_E1YxUQCK4B/s640/Screen%2BShot%2B2016-06-29%2Bat%2B1.07.58%2BPM.png" width="360" /></a></div><div style="text-align: center;"><span id="docs-internal-guid-d4bcee10-9dc0-60a7-6f2b-32b22c1f3bca"><span style="font-family: &quot;arial&quot;; font-size: 14.6667px; vertical-align: baseline; white-space: pre-wrap;"></span></span></div><div style="text-align: center;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: 14.6667px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-size: 14.6667px;"><br /></span></span><br /><div style="text-align: left;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; vertical-align: baseline; white-space: pre-wrap;">No matter where your travels take you this summer and beyond, these new Google Maps features will get you there and help keep track of all the memories you make along the way.</span></div></div><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span><i><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">Posted by Liz Davidoff, Communications Manager, Google Maps<br /></span></i><br /><br />]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/kick-off-your-summer-travels-with-these-new-google-maps-features/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Marker zIndex and more come to the Google Maps Android API</title>
		<link>https://googledata.org/google-maps/marker-zindex-and-more-come-to-the-google-maps-android-api/</link>
		<comments>https://googledata.org/google-maps/marker-zindex-and-more-come-to-the-google-maps-android-api/#comments</comments>
		<pubDate>Mon, 27 Jun 2016 23:36:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=105c00de197ba6606d8fb182f74bb131</guid>
		<description><![CDATA[Released today, the latest version of the Google Maps Android API includes several popular developer requested features including the ability to order the display of markers on the map with the new marker zIndex property, the ability to set the transparency of your tile overlays, and a new circle click listener.<br /><br /><br /><h2> <span><span>Marker zIndex</span></span></h2> <a href="https://developers.google.com/maps/documentation/android-api/marker#marker_z-index">Marker zIndex</a> is one of the most requested features on our <a href="https://code.google.com/p/gmaps-api-issues/issues/list?can=2&#38;q=apitype:Android2%20type:Enhancement&#38;sort=-stars&#38;colspec=ID%20Type%20Status%20Introduced%20Fixed%20Summary%20Internal%20Stars">issue tracker</a> - today's release gives you the ability to control the order in which markers are displayed on the map [<a href="https://code.google.com/p/gmaps-api-issues/issues/detail?id=7762">Issue 7762</a>]. This gives you control over which tap target your user is most likely to hit by setting the zIndex property on each marker. The markers are drawn in order of the zIndex, with the the highest zIndex marker drawn on top.<br /><br /><br /><table><tbody><tr><td><div> </div> <div> <img alt="animated image with cars moving over a plane" border="0" height="320" src="https://1.bp.blogspot.com/-YZG7bs2TbdE/V3G1oX1dUyI/AAAAAAAAAe4/02TZqbb__UUaAHmW7Gr9Ir4GFHtfRxQ9QCLcB/s320/image02.gif" width="154"></div><br /><div> </div> </td>    <td><div> </div> <div> <img alt="animated image with cars moving under a plane thanks to zIndex" border="0" height="320" src="https://3.bp.blogspot.com/-Dd8C6bXOZfk/V3G1odxB_XI/AAAAAAAAAe8/6k43a5v0MXkGjAkKG_20T2hteM2scz0PACLcB/s320/image00.gif" width="154"></div><br /><div> </div> </td> </tr><tr><td><b>Before: </b>No control over the marker zIndex. The plane will be obscured by some of the cars.</td>  <td><b>After:</b> The zIndex of the plane is set to be the highest. The plane is now always visible on top.</td> </tr></tbody></table><br /><h2> <span><span>Tile overlay transparency</span></span></h2> Just like ground overlays, you can now set the <a href="https://developers.google.com/maps/documentation/android-api/tileoverlay#transparency">transparency of your tile overlay</a> to allow the basemap to show through [<a href="https://code.google.com/p/gmaps-api-issues/issues/detail?id=4765">Issue 4765</a>].<br /><span><span> </span></span> <br /><h2> <span><span><span>Circle clickability</span></span></span></h2> Just like polylines and polygons, apps compiled with the latest release can now have circle clickability via the <span><a href="https://developers.google.com/android/reference/com/google/android/gms/maps/GoogleMap.OnCircleClickListener">OnCircleClickListener</a></span>. You can enable or disable the clickability of circles by calling <span>setClickable(boolean)</span> on the relevant circle.<br /><br /><h2> <span><span><span>getMapAsync() now required</span></span></span></h2> In December 2014 <a href="https://developers.google.com/maps/documentation/android-api/releases#december_8_2014">we deprecated getMap()</a> in favor of <span><a href="https://developers.google.com/android/reference/com/google/android/gms/maps/MapFragment.html#public-methods">getMapAsync()</a></span>. From this release onwards, you'll need to use <span><a href="https://developers.google.com/android/reference/com/google/android/gms/maps/MapFragment.html#public-methods">getMapAsync()</a></span> in order to compile your apps. Note that existing apps in the wild on your users' devices won't be impacted by this change as the <span>getMap()</span> method still exists within the Google Play Services APK that is delivered to Android devices.<br /><br />
 If you haven't already done so, follow these steps:<br /><br />
 Here's a sample fragment using the deprecated <span>getMap()</span>, with a fictitious <span>doStuff()</span> method that would implement the fragment's initial logic:<br /><pre>import android.os.Bundle;
 import android.support.v4.app.FragmentActivity;
 import com.google.android.gms.maps.GoogleMap;
 import com.google.android.gms.maps.SupportMapFragment;

 public class MainActivity extends FragmentActivity {

     private GoogleMap mMap;

     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.main);
         mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
         doStuff();
     }

 }</pre><br /><br />
 The above however was error prone, since <span>getMap()</span> could potentially return null. Here's the same sample using <span><a href="https://developers.google.com/android/reference/com/google/android/gms/maps/MapFragment.html#public-methods">getMapAsync()</a></span>:<br /><br /><pre>import android.os.Bundle;
 import android.support.v4.app.FragmentActivity;
 import com.google.android.gms.maps.GoogleMap;
 import com.google.android.gms.maps.OnMapReadyCallback;
 import com.google.android.gms.maps.SupportMapFragment;

 public class MainActivity extends FragmentActivity implements OnMapReadyCallback {

     private GoogleMap mMap;

     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.main);
         ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMapAsync(this);
     }

     @Override
     public void onMapReady(GoogleMap map) {
         mMap = map;
         doStuff();
     }

 }</pre><br />
 You can see we now implement the <span><a href="https://developers.google.com/android/reference/com/google/android/gms/maps/OnMapReadyCallback">OnMapReadyCallback</a></span> interface which defines the <span><a href="https://developers.google.com/android/reference/com/google/android/gms/maps/OnMapReadyCallback.html#public-methods">onMapReady()</a></span> method, which will be called when the <a href="https://developers.google.com/android/reference/com/google/android/gms/maps/GoogleMap"><span>GoogleMap</span></a> instance is ready. We&#8217;ve also moved the call to the fictitious <span>doStuff()</span> method into <span><a href="https://developers.google.com/android/reference/com/google/android/gms/maps/OnMapReadyCallback.html#public-methods">onMapReady()</a></span>, since this is where we now want to start the fragment's initial logic.<br /><br />
 A big thank you to Android developers everywhere for using the Google Maps Android API and submitting feedback via the <a href="https://code.google.com/p/gmaps-api-issues/">issue tracker</a>.<br /><br />
 Our <a href="https://developers.google.com/maps/documentation/android-api/releases#june_27_2016">release notes</a> contain details of bugs fixed, deprecation notices, as well as the features mentioned in this post. Take a look and start using our new features today!<br /><br /><br /><br /><table><tbody><tr><td><div> <img border="0" src="https://lh3.googleusercontent.com/jtHHfhZBUMZNUp22QRmsOJxWQ2Vb3bOHmlq0tO9yk8bxgrbZR3G1jSxBIjTNp-6zIPYq03hOPGzJxk-ySJpjPE5C5nQ6xoBXhoj--1-zSy1DVtxW-UnWZIp4i6H3IcMU18hLdBZh" alt="author image"></div> </td> <td><em>Posted by Megan Boundey, Product Manager, Google Maps Mobile APIs.</em></td> </tr></tbody></table>]]></description>
				<content:encoded><![CDATA[ Released today, the latest version of the Google Maps Android API includes several popular developer requested features including the ability to order the display of markers on the map with the new marker zIndex property, the ability to set the transparency of your tile overlays, and a new circle click listener.<br />
<br />
 <br />
 <h2> <span style="color: #444444; font-family: &quot;arial&quot;;"><span style="background-color: white; font-size: 14.6667px; white-space: pre-wrap;">Marker zIndex</span></span></h2> <a href="https://developers.google.com/maps/documentation/android-api/marker#marker_z-index">Marker zIndex</a> is one of the most requested features on our <a href="https://code.google.com/p/gmaps-api-issues/issues/list?can=2&amp;q=apitype:Android2%20type:Enhancement&amp;sort=-stars&amp;colspec=ID%20Type%20Status%20Introduced%20Fixed%20Summary%20Internal%20Stars">issue tracker</a> - today's release gives you the ability to control the order in which markers are displayed on the map [<a href="https://code.google.com/p/gmaps-api-issues/issues/detail?id=7762">Issue 7762</a>]. This gives you control over which tap target your user is most likely to hit by setting the zIndex property on each marker. The markers are drawn in order of the zIndex, with the the highest zIndex marker drawn on top.<br />
<br />
<br />
 <table><tbody>
 <tr>  <td><div class="separator" style="clear: both; text-align: center;"> </div> <div style="margin-left: 1em; margin-right: 1em;"> <img alt="animated image with cars moving over a plane" border="0" height="320" src="https://1.bp.blogspot.com/-YZG7bs2TbdE/V3G1oX1dUyI/AAAAAAAAAe4/02TZqbb__UUaAHmW7Gr9Ir4GFHtfRxQ9QCLcB/s320/image02.gif" style="margin: 0px auto; text-align: center;" width="154" /></div><br />
 <div> </div> </td>    <td><div class="separator" style="clear: both; text-align: center;"> </div> <div style="margin-left: 1em; margin-right: 1em;"> <img alt="animated image with cars moving under a plane thanks to zIndex" border="0" height="320" src="https://3.bp.blogspot.com/-Dd8C6bXOZfk/V3G1odxB_XI/AAAAAAAAAe8/6k43a5v0MXkGjAkKG_20T2hteM2scz0PACLcB/s320/image00.gif" style="margin: 0px auto; text-align: center;" width="154" /></div><br />
 <div> </div> </td> </tr>
 <tr> <td><b>Before: </b>No control over the marker zIndex. The plane will be obscured by some of the cars.</td>  <td><b>After:</b> The zIndex of the plane is set to be the highest. The plane is now always visible on top.</td> </tr>
 </tbody> </table><br />
 <h2> <span style="color: #444444; font-family: &quot;arial&quot;;"><span style="background-color: white; font-size: 14.6667px; white-space: pre-wrap;">Tile overlay transparency</span></span></h2> Just like ground overlays, you can now set the <a href="https://developers.google.com/maps/documentation/android-api/tileoverlay#transparency">transparency of your tile overlay</a> to allow the basemap to show through [<a href="https://code.google.com/p/gmaps-api-issues/issues/detail?id=4765">Issue 4765</a>].<br />
 <span style="color: #444444; font-family: &quot;arial&quot;;"><span style="background-color: white; font-size: 14.6667px; white-space: pre-wrap;"> </span></span> <br />
 <h2> <span style="color: #444444; font-family: &quot;arial&quot;;"><span style="background-color: white; font-size: 14.6667px; white-space: pre-wrap;"><span style="font-size: 14.6667px;">Circle clickability</span></span></span></h2> Just like polylines and polygons, apps compiled with the latest release can now have circle clickability via the <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;"><a href="https://developers.google.com/android/reference/com/google/android/gms/maps/GoogleMap.OnCircleClickListener">OnCircleClickListener</a></span>. You can enable or disable the clickability of circles by calling <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">setClickable(boolean)</span> on the relevant circle.<br />
<br />
 <h2> <span style="color: #444444; font-family: &quot;arial&quot;;"><span style="background-color: white; font-size: 14.6667px; white-space: pre-wrap;"><span style="font-size: 14.6667px;">getMapAsync() now required</span></span></span></h2> In December 2014 <a href="https://developers.google.com/maps/documentation/android-api/releases#december_8_2014">we deprecated getMap()</a> in favor of <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;"><a href="https://developers.google.com/android/reference/com/google/android/gms/maps/MapFragment.html#public-methods">getMapAsync()</a></span>. From this release onwards, you'll need to use <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;"><a href="https://developers.google.com/android/reference/com/google/android/gms/maps/MapFragment.html#public-methods">getMapAsync()</a></span> in order to compile your apps. Note that existing apps in the wild on your users' devices won't be impacted by this change as the <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">getMap()</span> method still exists within the Google Play Services APK that is delivered to Android devices.<br />
<br />
 If you haven't already done so, follow these steps:<br />
<br />
 Here's a sample fragment using the deprecated <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">getMap()</span>, with a fictitious <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">doStuff()</span> method that would implement the fragment's initial logic:<br />
 <pre>import android.os.Bundle;
 import android.support.v4.app.FragmentActivity;
 import com.google.android.gms.maps.GoogleMap;
 import com.google.android.gms.maps.SupportMapFragment;

 public class MainActivity extends FragmentActivity {

     private GoogleMap mMap;

     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.main);
         mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
         doStuff();
     }

 }</pre><br />
<br />
 The above however was error prone, since <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">getMap()</span> could potentially return null. Here's the same sample using <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;"><a href="https://developers.google.com/android/reference/com/google/android/gms/maps/MapFragment.html#public-methods">getMapAsync()</a></span>:<br />
<br />
 <pre>import android.os.Bundle;
 import android.support.v4.app.FragmentActivity;
 import com.google.android.gms.maps.GoogleMap;
 import com.google.android.gms.maps.OnMapReadyCallback;
 import com.google.android.gms.maps.SupportMapFragment;

 public class MainActivity extends FragmentActivity implements OnMapReadyCallback {

     private GoogleMap mMap;

     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.main);
         ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMapAsync(this);
     }

     @Override
     public void onMapReady(GoogleMap map) {
         mMap = map;
         doStuff();
     }

 }</pre><br />
 You can see we now implement the <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;"><a href="https://developers.google.com/android/reference/com/google/android/gms/maps/OnMapReadyCallback">OnMapReadyCallback</a></span> interface which defines the <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;"><a href="https://developers.google.com/android/reference/com/google/android/gms/maps/OnMapReadyCallback.html#public-methods">onMapReady()</a></span> method, which will be called when the <a href="https://developers.google.com/android/reference/com/google/android/gms/maps/GoogleMap"><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">GoogleMap</span></a> instance is ready. We’ve also moved the call to the fictitious <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">doStuff()</span> method into <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;"><a href="https://developers.google.com/android/reference/com/google/android/gms/maps/OnMapReadyCallback.html#public-methods">onMapReady()</a></span>, since this is where we now want to start the fragment's initial logic.<br />
<br />
 A big thank you to Android developers everywhere for using the Google Maps Android API and submitting feedback via the <a href="https://code.google.com/p/gmaps-api-issues/">issue tracker</a>.<br />
<br />
 Our <a href="https://developers.google.com/maps/documentation/android-api/releases#june_27_2016">release notes</a> contain details of bugs fixed, deprecation notices, as well as the features mentioned in this post. Take a look and start using our new features today!<br />
<br />
 <br><br><table><tbody>
 <tr> <td style="width: 80px;"><div class="separator" style="clear: both; text-align: center;"> <img border="0" src="https://lh3.googleusercontent.com/jtHHfhZBUMZNUp22QRmsOJxWQ2Vb3bOHmlq0tO9yk8bxgrbZR3G1jSxBIjTNp-6zIPYq03hOPGzJxk-ySJpjPE5C5nQ6xoBXhoj--1-zSy1DVtxW-UnWZIp4i6H3IcMU18hLdBZh" style="border-radius: 50%; width: 80px;" alt="author image" /></div> </td> <td><em>Posted by Megan Boundey, Product Manager, Google Maps Mobile APIs.</em></td> </tr>
 </tbody></table>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/marker-zindex-and-more-come-to-the-google-maps-android-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Building for Scale: Updates to Google Maps APIs Standard Plan</title>
		<link>https://googledata.org/google-maps/building-for-scale-updates-to-google-maps-apis-standard-plan/</link>
		<comments>https://googledata.org/google-maps/building-for-scale-updates-to-google-maps-apis-standard-plan/#comments</comments>
		<pubDate>Wed, 22 Jun 2016 22:51:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=0aa5ab747d15bb5d53686b324879571c</guid>
		<description><![CDATA[Eleven years after a developer first reverse-engineered a Google Map, there are more than three million location-informed apps and websites generating billions of requests daily, all powered by Google Maps APIs. From <a href="http://googlegeodevelopers.blogspot.com/2015/06/lyft-connects-drivers-and-riders-with.html">unicorns</a> to <a href="http://googlegeodevelopers.blogspot.com/2015/04/sun-surveyor-brings-augmented-reality.html">passion projects</a> to <a href="http://googleforwork.blogspot.com/search/label/Mapping%20a%20better%20world">public service</a>, the power of maps and location data is limited only by the creativity of developers.<br /><br />
The Internet landscape has dramatically shifted from desktops to mobile devices in the last decade, and as a result, our services have evolved to meet the needs of our developers and their users. More devices means exponentially more requests, and hundreds of millions of global users are just coming online. Therefore, today we are announcing a few updates to bring more simplicity and consistency to our <a href="https://developers.google.com/maps/pricing-and-plans/?utm_source=geoblog&#38;utm_medium=social&#38;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost&#38;utm_content=TBC">Standard Plan limits and pricing</a>.<br /><br />
As of June 22, 2016 we are making the following changes to the Google Maps APIs Standard Plan:<br /><br /><ol><li>We no longer support keyless access (any request that doesn't include an API key). Future product updates are only available for <a href="https://developers.google.com/maps/documentation/javascript/get-api-key?utm_source=geoblog&#38;utm_medium=social&#38;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost&#38;utm_content=TBC">requests made with an API key</a>. API keys allow us to contact developers when required and help us identify misbehaving implementations.</li>
<li>We have implemented a simple 25,000 map loads per day free limit to new Google Maps JavaScript API, Static Maps API, and Street View Image API implementations. The confusing 90-consecutive-day grace period for these APIs is being retired on October 12, 2016. With this change, developers can predictably plan for growth while media sites and US nonprofits can request more quota at no charge <a href="https://developers.google.com/maps/pricing-and-plans/?utm_source=geoblog&#38;utm_medium=social&#38;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost&#38;utm_content=TBC#nonprofit-and-news-media-organization-grants">via our dedicated support programs</a>.</li>
<li>We have reduced the daily map load maximum limit you can purchase for Google Maps JavaScript API, Static Maps API, and Street View Image API from 1,000,000 to 100,000 requests per API.* We believe higher-volume developers are best served with a <a href="https://developers.google.com/maps/premium/?utm_source=geoblog&#38;utm_medium=social&#38;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost&#38;utm_content=TBC">Premium Plan license</a>, which includes technical support and a Service Level Agreement, and with this change we've also created consistency between Standard Plan quotas across our maps and web service APIs.</li>
<li>We now count Google Maps JavaScript API client-side requests towards the daily limit of the associated web service API.*</li>
</ol><br />
The new policies will apply immediately to all Maps API implementations created on or after June 22nd, 2016.<br /><br />
Existing applications have been grandfathered based on their current usage to ensure that they continue to function both now and in the future. We will also be proactively contacting all existing API key users who, based on usage growth patterns, may be impacted in the future. If you&#8217;re an existing user, please take the time to read our <a href="https://developers.google.com/maps/pricing-and-plans/standard-plan-2016-update?utm_source=geoblog&#38;utm_medium=social&#38;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost&#38;utm_content=TBC">Policy Update for Standard Plan summary</a> for details on how each of these changes might affect your implementation.<br /><br /><i>Posted by Ken Hoetmer, Product Manager, Google Maps APIs</i><br /><span><i><br /></i></span> <span><i>* <a href="https://developers.google.com/maps/pricing-and-plans/standard-plan-2016-update?utm_source=geoblog&#38;utm_medium=social&#38;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost&#38;utm_content=TBC">Exceptions may apply</a> for implementations that were exceeding new quotas prior to June 22, 2016.</i></span>]]></description>
				<content:encoded><![CDATA[Eleven years after a developer first reverse-engineered a Google Map, there are more than three million location-informed apps and websites generating billions of requests daily, all powered by Google Maps APIs. From <a href="http://googlegeodevelopers.blogspot.com/2015/06/lyft-connects-drivers-and-riders-with.html">unicorns</a> to <a href="http://googlegeodevelopers.blogspot.com/2015/04/sun-surveyor-brings-augmented-reality.html">passion projects</a> to <a href="http://googleforwork.blogspot.com/search/label/Mapping%20a%20better%20world">public service</a>, the power of maps and location data is limited only by the creativity of developers.<br />
<br />
The Internet landscape has dramatically shifted from desktops to mobile devices in the last decade, and as a result, our services have evolved to meet the needs of our developers and their users. More devices means exponentially more requests, and hundreds of millions of global users are just coming online. Therefore, today we are announcing a few updates to bring more simplicity and consistency to our <a href="https://developers.google.com/maps/pricing-and-plans/?utm_source=geoblog&amp;utm_medium=social&amp;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost&amp;utm_content=TBC">Standard Plan limits and pricing</a>.<br />
<br />
As of June 22, 2016 we are making the following changes to the Google Maps APIs Standard Plan:<br />
<br />
<ol>
<li>We no longer support keyless access (any request that doesn't include an API key). Future product updates are only available for <a href="https://developers.google.com/maps/documentation/javascript/get-api-key?utm_source=geoblog&amp;utm_medium=social&amp;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost&amp;utm_content=TBC">requests made with an API key</a>. API keys allow us to contact developers when required and help us identify misbehaving implementations.</li>
<li>We have implemented a simple 25,000 map loads per day free limit to new Google Maps JavaScript API, Static Maps API, and Street View Image API implementations. The confusing 90-consecutive-day grace period for these APIs is being retired on October 12, 2016. With this change, developers can predictably plan for growth while media sites and US nonprofits can request more quota at no charge <a href="https://developers.google.com/maps/pricing-and-plans/?utm_source=geoblog&amp;utm_medium=social&amp;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost&amp;utm_content=TBC#nonprofit-and-news-media-organization-grants">via our dedicated support programs</a>.</li>
<li>We have reduced the daily map load maximum limit you can purchase for Google Maps JavaScript API, Static Maps API, and Street View Image API from 1,000,000 to 100,000 requests per API.* We believe higher-volume developers are best served with a <a href="https://developers.google.com/maps/premium/?utm_source=geoblog&amp;utm_medium=social&amp;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost&amp;utm_content=TBC">Premium Plan license</a>, which includes technical support and a Service Level Agreement, and with this change we've also created consistency between Standard Plan quotas across our maps and web service APIs.</li>
<li>We now count Google Maps JavaScript API client-side requests towards the daily limit of the associated web service API.*</li>
</ol>
<br />
The new policies will apply immediately to all Maps API implementations created on or after June 22nd, 2016.<br />
<br />
Existing applications have been grandfathered based on their current usage to ensure that they continue to function both now and in the future. We will also be proactively contacting all existing API key users who, based on usage growth patterns, may be impacted in the future. If you’re an existing user, please take the time to read our <a href="https://developers.google.com/maps/pricing-and-plans/standard-plan-2016-update?utm_source=geoblog&amp;utm_medium=social&amp;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost&amp;utm_content=TBC">Policy Update for Standard Plan summary</a> for details on how each of these changes might affect your implementation.<br />
<br />
<i>Posted by Ken Hoetmer, Product Manager, Google Maps APIs</i><br />
<span style="font-size: x-small;"><i><br />
</i></span> <span style="font-size: x-small;"><i>* <a href="https://developers.google.com/maps/pricing-and-plans/standard-plan-2016-update?utm_source=geoblog&amp;utm_medium=social&amp;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost&amp;utm_content=TBC">Exceptions may apply</a> for implementations that were exceeding new quotas prior to June 22, 2016.</i></span>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/building-for-scale-updates-to-google-maps-apis-standard-plan/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Learn about developing geo applications over coffee with Ankur Kotwal and Ken Hoetmer</title>
		<link>https://googledata.org/google-maps/learn-about-developing-geo-applications-over-coffee-with-ankur-kotwal-and-ken-hoetmer/</link>
		<comments>https://googledata.org/google-maps/learn-about-developing-geo-applications-over-coffee-with-ankur-kotwal-and-ken-hoetmer/#comments</comments>
		<pubDate>Tue, 21 Jun 2016 16:19:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=755f0ce091d0a152fcadb75c94d7b224</guid>
		<description><![CDATA[<span><i>Posted by Laurence Moroney, Developer Advocate at Google</i></span><br /><br />
While at Google I/O, I had a chance to sit down for a cup of coffee with Ankur Kotwal, Developer Advocate at Google and Ken Hoetmer, Product Manager for the Google Maps APIs. Both had an interesting perspective on how maps have evolved and where they are headed.<br /><br />
In Ankur&#8217;s session we discussed technologies beyond the visualization aspects of maps, including the Directions API, Places API and Roads API. He highlighted innovative ways developers are using Google Maps APIs including VR, marker clustering and heatmaps. We also spoke about <a href="https://santatracker.google.com/#village">Santa Tracker</a>, which Ankur has been a part of for four years (he also revealed what Santa likes to do during his time off). Ankur announced the new Google Maps APIs <a href="https://developers.google.com/maps/beta/">Beta program</a>, so if you have not signed-up, head over to the site to apply.<br /><br /><div><div><b>Learn about developing Geo applications over Coffee with Ankur Kotwal</b></div></div><div></div><br />
While speaking with Ken, we discussed how he started working with maps and the Google Maps API as well as how he eventually landed at Google on the Sydney maps team. Ken spoke about how use cases have evolved from interactive maps to more powerful applications and insights driven by location information made available through the APIs. He shared details about some newer APIs including native <a href="https://developers.google.com/places/ios-api/">iOS</a> and <a href="https://developers.google.com/places/android-api/">Android</a> Places API, <a href="https://developers.google.com/maps/documentation/roads/intro">Roads API</a>, <a href="https://developers.google.com/maps/documentation/directions/">Directions API</a> and Predictive Travel Time (estimating travel time and routes based on now or in the future). He also highlighted some notable location-based intelligence use cases including Uber, GoJek, Dash Labs and the city of Sydney. <br /><b><br /></b> <b>Google Maps APIs and Coffee with Product Manager Ken Hoetmer</b><br /><div></div><br /><br /><br /><br /><br /><br /><br /><br /><table><tbody><tr><td><div><img alt="author image" border="0" src="https://4.bp.blogspot.com/-Civ0vs_fVv4/V4ASp64f_aI/AAAAAAAAAgY/IE-dp1TlEPIqsaGC8RxYpvEGHAGe7gWSACLcB/s1600/laurence.jpg"></div></td> <td>About Laurence: <em>I am a Developer Advocate at Google, working on mobile services, specializing in cross-platform developer technologies. As the host of 'Coffee with a Googler' on the Google Developers channel I&#8217;m able to meet with some of those most creative and inspiring developers at Google and learn about the projects they&#8217;re leading. When I&#8217;m not Googling, I&#8217;m involved in many things, including working on the revival comics for the Stargate TV shows, and enjoying the geek cred that this brings.</em></td> </tr></tbody></table><br />]]></description>
				<content:encoded><![CDATA[<span class="post-author"><i>Posted by Laurence Moroney, Developer Advocate at Google</i></span><br />
<br />
While at Google I/O, I had a chance to sit down for a cup of coffee with Ankur Kotwal, Developer Advocate at Google and Ken Hoetmer, Product Manager for the Google Maps APIs. Both had an interesting perspective on how maps have evolved and where they are headed.<br />
<br />
In Ankur’s session we discussed technologies beyond the visualization aspects of maps, including the Directions API, Places API and Roads API. He highlighted innovative ways developers are using Google Maps APIs including VR, marker clustering and heatmaps. We also spoke about <a href="https://santatracker.google.com/#village">Santa Tracker</a>, which Ankur has been a part of for four years (he also revealed what Santa likes to do during his time off). Ankur announced the new Google Maps APIs <a href="https://developers.google.com/maps/beta/">Beta program</a>, so if you have not signed-up, head over to the site to apply.<br />
<br />
<div style="text-align: center;"><div style="text-align: left;"><b>Learn about developing Geo applications over Coffee with Ankur Kotwal</b></div></div><div style="text-align: center;"><iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/IJTURPro6tc?rel=0" frameborder="0" allowfullscreen></iframe></div><br />
While speaking with Ken, we discussed how he started working with maps and the Google Maps API as well as how he eventually landed at Google on the Sydney maps team. Ken spoke about how use cases have evolved from interactive maps to more powerful applications and insights driven by location information made available through the APIs. He shared details about some newer APIs including native <a href="https://developers.google.com/places/ios-api/">iOS</a> and <a href="https://developers.google.com/places/android-api/">Android</a> Places API, <a href="https://developers.google.com/maps/documentation/roads/intro">Roads API</a>, <a href="https://developers.google.com/maps/documentation/directions/">Directions API</a> and Predictive Travel Time (estimating travel time and routes based on now or in the future). He also highlighted some notable location-based intelligence use cases including Uber, GoJek, Dash Labs and the city of Sydney. <br />
<b><br />
</b> <b>Google Maps APIs and Coffee with Product Manager Ken Hoetmer</b><br />
<div style="text-align: center;"><iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/qZF1_4TRGzo?rel=0" frameborder="0" allowfullscreen></iframe></div><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<table><tbody>
<tr> <td style="width: 80px;"><div class="separator" style="clear: both; text-align: center;"><img alt="author image" border="0" src="https://4.bp.blogspot.com/-Civ0vs_fVv4/V4ASp64f_aI/AAAAAAAAAgY/IE-dp1TlEPIqsaGC8RxYpvEGHAGe7gWSACLcB/s1600/laurence.jpg" style="border-radius: 50%; width: 80px;" /></div></td> <td>About Laurence: <em>I am a Developer Advocate at Google, working on mobile services, specializing in cross-platform developer technologies. As the host of 'Coffee with a Googler' on the Google Developers channel I’m able to meet with some of those most creative and inspiring developers at Google and learn about the projects they’re leading. When I’m not Googling, I’m involved in many things, including working on the revival comics for the Stargate TV shows, and enjoying the geek cred that this brings.</em></td> </tr>
</tbody></table><br />
]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/learn-about-developing-geo-applications-over-coffee-with-ankur-kotwal-and-ken-hoetmer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>More descriptive JavaScript console error messages</title>
		<link>https://googledata.org/google-maps/more-descriptive-javascript-console-error-messages/</link>
		<comments>https://googledata.org/google-maps/more-descriptive-javascript-console-error-messages/#comments</comments>
		<pubDate>Thu, 16 Jun 2016 17:49:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=954097ba33150a87c5832e18c4d8dc72</guid>
		<description><![CDATA[<span><i>Posted by Kosuke Mizubayashi, Technical Solutions Engineer at Google</i></span><br /><br />
Over the past few months we've rolled out several JavaScript console error message improvements designed to help developers implement Google Maps JavaScript API into web apps. Our goal was to:<br /><br /><ul><li>Give developers more descriptive error messages</li>
<li>Provide developers with a suggested solution to resolve the error</li>
<li>Avoid popups for displaying error messages</li>
<li>Create a positive experience for end-users in the event an error occurs</li>
</ul><br /><i>How do developers usually use the JavaScript console? When? Why?</i><br />
Web developers use browser tools to develop and debug their applications. They can find various messages in the JavaScript console to which their application, libraries or APIs write. For users of our Google Maps JavaScript API, we have returned error messages in the JavaScript console for some types of Maps API errors. But, these messages were often not descriptive enough for web developers to investigate the issue and find solutions.<br /><i><br /></i> <i>What happened when users saw the old error messages?</i><br />
Our previous popup error messages showed up on the top of the web page. This JavaScript alert prevented users from interacting with the page until the &#8220;OK&#8221; button was clicked, even if they were not interacting with the map. We served 4 basic error messages that pointed to the general troubleshooting page of our website.<br /><div><span><img alt="Error_message.png" height="248" src="https://lh5.googleusercontent.com/NmSY8yUacuew5YMC3ppa2Qi7DMNY0wKcxaPpkXni5WE02WCJSHqu-79gg2SY9B7SBW3EyTcAIci32fxqEsPmLdJkCFI2ePqFhGiQEJzYS73Qe_3h3R9OZXQUgEgu3lXDF8I5ZGZp" width="481"></span></div><span></span><br /><i>What do developers and users see now?</i><br />
We now display 21 different error messages in the console &#8212;you can see the full list in our <a href="https://developers.google.com/maps/documentation/javascript/error-messages">developer documentation</a>. In addition, we've provided direct links from specific errors to self-service solutions on the developer site. We've also simplified the error messages displayed to end users -the improved error appears in the map div itself, allowing users to interact with the rest of the page even if the map load fails.<br /><div><span><img alt="JS Console error message.png" height="224" src="https://lh5.googleusercontent.com/iEk9yiijP-HJWPDltbINVIhT3mgjZcEhqRnGV1-kQMX26ZNgAFYMhPKj_emWcYBVSyfAAuqbPHhL3SHvFcfUsWmd06TAVz9o8rlY6MxNBfkoKFGdVY1SA0GY-zhLurtd6_TpFIOc" width="640"></span></div><span></span><br />
We hope these changes will improve your implementation and interactions with your end users.<br /><br /><br /><table><tbody><tr><td><div><img border="0" src="https://lh5.googleusercontent.com/vorm2JsnekXrw6v-WAdXEepnBqZnQranx0oybLbeMCDphHyoTlZso8N-6beTMMRmyu1nDARge5V1MA3RY64kiGlDYew3jmGu81bV-s0vZxWwvQ1qDro80sD12Zwpv7OAjiqNtnqW" alt="author image"></div></td> <td>About Kosuke: <em>I&#8217;ve been a Technical Solutions Engineer at Google for 6 years. I enjoy working on the Google Maps APIs because there is always a new discovery on maps. Outside of Google, I love beer, especially after skiing in the mountains.</em></td> </tr></tbody></table>]]></description>
				<content:encoded><![CDATA[<span class="post-author"><i>Posted by Kosuke Mizubayashi, Technical Solutions Engineer at Google</i></span><br />
<br />
Over the past few months we've rolled out several JavaScript console error message improvements designed to help developers implement Google Maps JavaScript API into web apps. Our goal was to:<br />
<br />
<ul><li>Give developers more descriptive error messages</li>
<li>Provide developers with a suggested solution to resolve the error</li>
<li>Avoid popups for displaying error messages</li>
<li>Create a positive experience for end-users in the event an error occurs</li>
</ul><br />
<i>How do developers usually use the JavaScript console? When? Why?</i><br />
Web developers use browser tools to develop and debug their applications. They can find various messages in the JavaScript console to which their application, libraries or APIs write. For users of our Google Maps JavaScript API, we have returned error messages in the JavaScript console for some types of Maps API errors. But, these messages were often not descriptive enough for web developers to investigate the issue and find solutions.<br />
<i><br />
</i> <i>What happened when users saw the old error messages?</i><br />
Our previous popup error messages showed up on the top of the web page. This JavaScript alert prevented users from interacting with the page until the “OK” button was clicked, even if they were not interacting with the map. We served 4 basic error messages that pointed to the general troubleshooting page of our website.<br />
<div class="separator" style="clear: both; text-align: center;"><span style="background-color: white; color: #222222; font-family: &quot;arial&quot;; font-size: 12.6667px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="Error_message.png" height="248" src="https://lh5.googleusercontent.com/NmSY8yUacuew5YMC3ppa2Qi7DMNY0wKcxaPpkXni5WE02WCJSHqu-79gg2SY9B7SBW3EyTcAIci32fxqEsPmLdJkCFI2ePqFhGiQEJzYS73Qe_3h3R9OZXQUgEgu3lXDF8I5ZGZp" style="border: none; transform: rotate(0rad);" width="481" /></span></div><span id="docs-internal-guid-b741fd71-5a34-719d-0508-2a80ebcaedd7"></span><br />
<i>What do developers and users see now?</i><br />
We now display 21 different error messages in the console —you can see the full list in our <a href="https://developers.google.com/maps/documentation/javascript/error-messages">developer documentation</a>. In addition, we've provided direct links from specific errors to self-service solutions on the developer site. We've also simplified the error messages displayed to end users -the improved error appears in the map div itself, allowing users to interact with the rest of the page even if the map load fails.<br />
<div class="separator" style="clear: both; text-align: center;"><span style="background-color: white; color: #222222; font-family: &quot;arial&quot;; font-size: 12.6667px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="JS Console error message.png" height="224" src="https://lh5.googleusercontent.com/iEk9yiijP-HJWPDltbINVIhT3mgjZcEhqRnGV1-kQMX26ZNgAFYMhPKj_emWcYBVSyfAAuqbPHhL3SHvFcfUsWmd06TAVz9o8rlY6MxNBfkoKFGdVY1SA0GY-zhLurtd6_TpFIOc" style="border: none; transform: rotate(0rad);" width="640" /></span></div><span id="docs-internal-guid-b741fd71-5a35-392f-cff9-836df9633c1e"></span><br />
We hope these changes will improve your implementation and interactions with your end users.<br />
<br />
<br />
<table><tbody>
<tr> <td style="width: 80px;"><div class="separator" style="clear: both; text-align: center;"><img border="0" src="https://lh5.googleusercontent.com/vorm2JsnekXrw6v-WAdXEepnBqZnQranx0oybLbeMCDphHyoTlZso8N-6beTMMRmyu1nDARge5V1MA3RY64kiGlDYew3jmGu81bV-s0vZxWwvQ1qDro80sD12Zwpv7OAjiqNtnqW" style="border-radius: 50%; width: 80px;" alt="author image" /></div></td> <td>About Kosuke: <em>I’ve been a Technical Solutions Engineer at Google for 6 years. I enjoy working on the Google Maps APIs because there is always a new discovery on maps. Outside of Google, I love beer, especially after skiing in the mountains.</em></td> </tr>
</tbody></table>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/more-descriptive-javascript-console-error-messages/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Google I/O session live: Streamlining developer experiences with the Google Maps APIs</title>
		<link>https://googledata.org/google-maps/google-io-session-live-streamlining-developer-experiences-with-the-google-maps-apis/</link>
		<comments>https://googledata.org/google-maps/google-io-session-live-streamlining-developer-experiences-with-the-google-maps-apis/#comments</comments>
		<pubDate>Tue, 14 Jun 2016 18:18:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=a5689a442414bfe13f8c1bf068053c85</guid>
		<description><![CDATA[<span><i>Posted by Ankur Kotwal, Developer Advocate at Google</i></span><br /><br />
While at Google I/O, Laurence Moroney and I had a chance to present our session titled &#8216;Streamlining developer experiences with the Google Maps APIs&#8217;. We&#8217;re pleased to share it more broadly for those of you who were not able to be there in person:<br /><div></div><i>Streamlining developer experiences with the Google Maps APIs</i><br />
The Google Maps APIs provide a seamless experience for developers of all levels. Some want to offer a map or directions but don't want to build these things themselves; this can be achieved with just a few lines of code. Other developers prefer to integrate natively with off-the-shelf widgets. Finally, some developers want complete control over every aspect of the presentation. This session highlights the Maps APIs that represent the full gamut of the developer experiences, enabling you to get going immediately and scale as necessary. You'll see how widgets and services can be added over time with a suite of Maps APIs, services and libraries.<br /><div><span><img height="480" src="https://lh5.googleusercontent.com/HsxPDDM7ucrxoto1Aq96WWUrzrLqP57KLb6I65F-QuCAdbz-rFgGezAIM9-0gvy-5GSGK9R4AQNtHdFEgJwJocpGBg77ewR9BlguFcwsvNEIKizpTjoH-H4cwzKsYLe0ldZwE_QT" width="640"></span></div><br /><br /><br /><br /><br /><br /><table><tbody><tr><td><div><img border="0" src="https://lh6.googleusercontent.com/fFbsXRqdAUCsvJfx1QCUijH_QlBo0hpeyvMi7HokU8N8rhjyduTHq_QojvMKqbECNZiH0-rM7FT8ZKTIFYDydoUf3Rh6oEc1fVP-IanZEpCBskRMGWaBup6Qms_a5R5k0dqfMdV9" alt="author image"></div></td> <td>About Ankur: <em>I am a Developer Advocate at Google experienced in building on Android and the Google Maps API. I am based out of the Google Sydney office and lead the Geo Developer Relations &#38; Next Billion Users Developer Relations team to inspire developers towards building on the Google developer platform. When I&#8217;m not at Google inspiring other developers, I enjoy spending time with my kids.</em></td> </tr></tbody></table>]]></description>
				<content:encoded><![CDATA[<span class="post-author"><i>Posted by Ankur Kotwal, Developer Advocate at Google</i></span><br />
<br />
While at Google I/O, Laurence Moroney and I had a chance to present our session titled ‘Streamlining developer experiences with the Google Maps APIs’. We’re pleased to share it more broadly for those of you who were not able to be there in person:<br />
<div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/WJY2tGVQDGQ" width="560"></iframe></div><i>Streamlining developer experiences with the Google Maps APIs</i><br />
The Google Maps APIs provide a seamless experience for developers of all levels. Some want to offer a map or directions but don't want to build these things themselves; this can be achieved with just a few lines of code. Other developers prefer to integrate natively with off-the-shelf widgets. Finally, some developers want complete control over every aspect of the presentation. This session highlights the Maps APIs that represent the full gamut of the developer experiences, enabling you to get going immediately and scale as necessary. You'll see how widgets and services can be added over time with a suite of Maps APIs, services and libraries.<br />
<div class="separator" style="clear: both; text-align: center;"><span style="background-color: white; color: #212121; font-family: &quot;arial&quot;; font-size: 13.3333px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img height="480" src="https://lh5.googleusercontent.com/HsxPDDM7ucrxoto1Aq96WWUrzrLqP57KLb6I65F-QuCAdbz-rFgGezAIM9-0gvy-5GSGK9R4AQNtHdFEgJwJocpGBg77ewR9BlguFcwsvNEIKizpTjoH-H4cwzKsYLe0ldZwE_QT" style="border: none; transform: rotate(0rad);" width="640" /></span></div><br />
<br />
<br />
<br />
<br><br><table><tbody>
<tr> <td style="width: 80px;"><div class="separator" style="clear: both; text-align: center;"><img border="0" src="https://lh6.googleusercontent.com/fFbsXRqdAUCsvJfx1QCUijH_QlBo0hpeyvMi7HokU8N8rhjyduTHq_QojvMKqbECNZiH0-rM7FT8ZKTIFYDydoUf3Rh6oEc1fVP-IanZEpCBskRMGWaBup6Qms_a5R5k0dqfMdV9" style="border-radius: 50%; width: 80px;" alt="author image" /></div></td> <td>About Ankur: <em>I am a Developer Advocate at Google experienced in building on Android and the Google Maps API. I am based out of the Google Sydney office and lead the Geo Developer Relations &amp; Next Billion Users Developer Relations team to inspire developers towards building on the Google developer platform. When I’m not at Google inspiring other developers, I enjoy spending time with my kids.</em></td> </tr>
</tbody></table>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/google-io-session-live-streamlining-developer-experiences-with-the-google-maps-apis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Introducing the Google Maps APIs Udacity course</title>
		<link>https://googledata.org/google-maps/introducing-the-google-maps-apis-udacity-course/</link>
		<comments>https://googledata.org/google-maps/introducing-the-google-maps-apis-udacity-course/#comments</comments>
		<pubDate>Wed, 08 Jun 2016 21:46:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=728fc14be6155b8d314f3983454213e9</guid>
		<description><![CDATA[<span><i>Posted by Emily Keller, Technical Program Manager for Google Maps APIs</i></span><br /><br />
The Google Maps Operations team gets to work with thousands of developers each year to create great user experiences and powerful analytics built on maps and location data. We drew from these experiences to create a brand new Google Maps APIs course, in collaboration with Udacity, that teaches developers best practices when using our web APIs.<br /><div><span><img alt="Google Maps 03.jpg" height="351" src="https://lh4.googleusercontent.com/jFlnn2Z6TArXeRWGO70wIN7fa3XCTxlixa3BOBAFqqATP-MCsEgUkHPb4fmoltVPcPDH5DwzBxB42DUidic-Nrrr9QEXye7dhghq_tIJ15ryD13W88k83q0azZ9ab1J3dLV78PhY" width="624"></span></div><span></span><br />
The <a href="https://www.udacity.com/course/google-maps-apis--ud864">new course</a>, available today for free, gives you step-by-step tutorials that demonstrate how to integrate maps and location features into your website, and how to get useful location related data using various Web Service APIs.<br /><br />
You&#8217;ll walk through building a real-estate listings site using a uniquely styled Google map, data visualization, and street view panoramas. You&#8217;ll practice developing location-related features: calculate distance between locations, get directions, and view places of interest data.<br /><div></div>You&#8217;ll also see other examples of Google Maps APIs in action and learn how to secure and monitor your deployment using the Google APIs Console. At the end of the course, you&#8217;ll have built your first map-enabled site and be ready to create your own projects using location data, services, and maps!<br /><br />
Whether you&#8217;re new to Google Maps APIs or just want a refresher, <a href="https://www.udacity.com/course/google-maps-apis--ud864">head over to Udacity</a> to learn about how to start adding location features and map visualizations into your websites, today!<br /><i><br /></i> <br /><br /><br /><table><tbody><tr><td><div><img border="0" src="https://2.bp.blogspot.com/-HXW7MUSlA2s/V4ASaJYHMuI/AAAAAAAAAgU/aUlmQwmKmhY6dLLyDQT7o89NfEsZ0aldACLcB/s1600/emily.jpg" alt="author image"></div></td> <td>About Emily: <em>I happily joined Google in September, 2015. I love working with the Google Maps APIs because they are easy to build with and enable end users to have an intuitive, familiar experience in any site or app. Outside of Google I like to play Zelda, eat pizza and drink coffee with my dog.</em></td> </tr></tbody></table>]]></description>
				<content:encoded><![CDATA[<span class="post-author"><i>Posted by Emily Keller, Technical Program Manager for Google Maps APIs</i></span><br />
<br />
The Google Maps Operations team gets to work with thousands of developers each year to create great user experiences and powerful analytics built on maps and location data. We drew from these experiences to create a brand new Google Maps APIs course, in collaboration with Udacity, that teaches developers best practices when using our web APIs.<br />
<div class="separator" style="clear: both; text-align: center;"><span style="font-family: &quot;arial&quot;; font-size: 14.6667px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="Google Maps 03.jpg" height="351" src="https://lh4.googleusercontent.com/jFlnn2Z6TArXeRWGO70wIN7fa3XCTxlixa3BOBAFqqATP-MCsEgUkHPb4fmoltVPcPDH5DwzBxB42DUidic-Nrrr9QEXye7dhghq_tIJ15ryD13W88k83q0azZ9ab1J3dLV78PhY" style="border: none; transform: rotate(0rad);" width="624" /></span></div><span id="docs-internal-guid-6ea80aaf-2c7f-39d8-99a6-505d1b2b51d1"></span><br />
The <a href="https://www.udacity.com/course/google-maps-apis--ud864">new course</a>, available today for free, gives you step-by-step tutorials that demonstrate how to integrate maps and location features into your website, and how to get useful location related data using various Web Service APIs.<br />
<br />
You’ll walk through building a real-estate listings site using a uniquely styled Google map, data visualization, and street view panoramas. You’ll practice developing location-related features: calculate distance between locations, get directions, and view places of interest data.<br />
<div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/-uXESF89wEk" width="560"></iframe></div>You’ll also see other examples of Google Maps APIs in action and learn how to secure and monitor your deployment using the Google APIs Console. At the end of the course, you’ll have built your first map-enabled site and be ready to create your own projects using location data, services, and maps!<br />
<br />
Whether you’re new to Google Maps APIs or just want a refresher, <a href="https://www.udacity.com/course/google-maps-apis--ud864">head over to Udacity</a> to learn about how to start adding location features and map visualizations into your websites, today!<br />
<i><br />
</i> <br />
<br />
<br />
<table><tbody>
<tr> <td style="width: 80px;"><div class="separator" style="clear: both; text-align: center;"><img border="0" src="https://2.bp.blogspot.com/-HXW7MUSlA2s/V4ASaJYHMuI/AAAAAAAAAgU/aUlmQwmKmhY6dLLyDQT7o89NfEsZ0aldACLcB/s1600/emily.jpg" style="border-radius: 50%; width: 80px;" alt="author image" /></div></td> <td>About Emily: <em>I happily joined Google in September, 2015. I love working with the Google Maps APIs because they are easy to build with and enable end users to have an intuitive, familiar experience in any site or app. Outside of Google I like to play Zelda, eat pizza and drink coffee with my dog.</em></td> </tr>
</tbody></table>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/introducing-the-google-maps-apis-udacity-course/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Google I/O session live: Understand your Place in this world</title>
		<link>https://googledata.org/google-maps/google-io-session-live-understand-your-place-in-this-world/</link>
		<comments>https://googledata.org/google-maps/google-io-session-live-understand-your-place-in-this-world/#comments</comments>
		<pubDate>Tue, 07 Jun 2016 20:57:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=096fc26afbbbbce5fee1b425b9b5b832</guid>
		<description><![CDATA[<span><i>Posted by Florian Bertele, Product Manager on the Google Maps APIs team</i></span><br /><br />
At Google I/O, Ravi Palanki, Android Place API technical lead and I presented our session titled &#8216;Understand your Place in this world&#8217;. Even if you were not able to attend Google I/O in person, you can now watch our session:<br /><div>
</div>
<i>Understand your Place in this world</i><br />
Humans navigate a world made up of places with names, addresses and phone numbers&#8212;not lat/long coordinates. The Google Places API enables an app or website to present location data to users in a human-centered fashion. In this session we shared  how you can use the Places API to discover your environment. I walked the audience through the main use cases and Places API functionalities, across mobile and web. We also showed off some newly-released mobile widgets, and Ravi did a deep-dive into the benefits of the mobile platform, such as optimization for mobile device battery life and increased device accuracy. This session is a great starting point to learn how the Places API can make all your apps -- not just map-centric ones -- smarter.<br /><span><img alt="IMG_20160519_093436.jpg" height="480" src="https://lh4.googleusercontent.com/sQYviQqwJpRbV3Pm3IzlepGaeWuRqbOIdOM4nR0oRuZu_CsVnSnVTJyG_s3ZBhH4MXgRqMo3PCgKXLL-4iACKhX-Tx5oxrDTCgc5jDAnci-N1ijKMD3W3qe1ZLDfbcn3gFu-n0Dk" width="640"></span><span></span><br />
With the <a href="https://developers.google.com/places/">Google Places API</a> you get data from the same database used by Google Maps and Google+ Local. Places features more than 100 million businesses and points of interest that are updated frequently through owner-verified listings and user-moderated contributions.<br /><ul><li>Use the power of mobile to give your users contextual information about where they are, when they&#8217;re there with the <a href="https://developers.google.com/places/android-api/">Places API for Android</a>.</li>
<li><a href="https://developers.google.com/places/web-service/search">Search</a> for and retrieve rich information about local businesses and points of interest, available on every screen with the <a href="https://developers.google.com/places/web-service/">Places API Web Service</a>.</li>
<li>Add <a href="https://developers.google.com/places/android-api/autocomplete">autocomplete</a> to any application, providing type-ahead location-based predictions like the search on Google Maps.</li>
</ul><div>
<span><img alt="IMG_20160519_090128.jpg" height="480" src="https://lh4.googleusercontent.com/Yuv64qng5QRoMnO0UqgpO4jAEVw-TcediAss6ncWMVT9msxwYsGpV2O_mWCEgjnzpUkrgDZUFUWDlaCCL05V6hD0qbtys6GRKHznv6141e2sAjGPMcdTRhJDhbRMHPGAQ4EgOm-r" width="640"></span></div>
I am a product manager on the Maps API team. In my role, I focus on the Places API across all platforms and geographies. When I&#8217;m not at Google, I love running coastal trails, playing the piano and enjoying the fantastic lifestyle in Sydney!]]></description>
				<content:encoded><![CDATA[<span class="post-author"><i>Posted by Florian Bertele, Product Manager on the Google Maps APIs team</i></span><br />
<br />
At Google I/O, Ravi Palanki, Android Place API technical lead and I presented our session titled ‘Understand your Place in this world’. Even if you were not able to attend Google I/O in person, you can now watch our session:<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/QR3PIg0RDnk" width="560"></iframe></div>
<i>Understand your Place in this world</i><br />
Humans navigate a world made up of places with names, addresses and phone numbers—not lat/long coordinates. The Google Places API enables an app or website to present location data to users in a human-centered fashion. In this session we shared  how you can use the Places API to discover your environment. I walked the audience through the main use cases and Places API functionalities, across mobile and web. We also showed off some newly-released mobile widgets, and Ravi did a deep-dive into the benefits of the mobile platform, such as optimization for mobile device battery life and increased device accuracy. This session is a great starting point to learn how the Places API can make all your apps -- not just map-centric ones -- smarter.<br />
<span style="background-color: white; clear: right; color: #212121; float: right; font-family: &quot;arial&quot;; font-size: 13.3333px; margin-bottom: 1em; margin-left: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="IMG_20160519_093436.jpg" height="480" src="https://lh4.googleusercontent.com/sQYviQqwJpRbV3Pm3IzlepGaeWuRqbOIdOM4nR0oRuZu_CsVnSnVTJyG_s3ZBhH4MXgRqMo3PCgKXLL-4iACKhX-Tx5oxrDTCgc5jDAnci-N1ijKMD3W3qe1ZLDfbcn3gFu-n0Dk" style="border: none; transform: rotate(0rad);" width="640" /></span><span id="docs-internal-guid-138b02db-2c68-7cdd-9165-7ba16b1d8614"></span><br />
With the <a href="https://developers.google.com/places/">Google Places API</a> you get data from the same database used by Google Maps and Google+ Local. Places features more than 100 million businesses and points of interest that are updated frequently through owner-verified listings and user-moderated contributions.<br />
<ul>
<li>Use the power of mobile to give your users contextual information about where they are, when they’re there with the <a href="https://developers.google.com/places/android-api/">Places API for Android</a>.</li>
<li><a href="https://developers.google.com/places/web-service/search">Search</a> for and retrieve rich information about local businesses and points of interest, available on every screen with the <a href="https://developers.google.com/places/web-service/">Places API Web Service</a>.</li>
<li>Add <a href="https://developers.google.com/places/android-api/autocomplete">autocomplete</a> to any application, providing type-ahead location-based predictions like the search on Google Maps.</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<span style="background-color: white; color: #212121; font-family: &quot;arial&quot;; font-size: 13.3333px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="IMG_20160519_090128.jpg" height="480" src="https://lh4.googleusercontent.com/Yuv64qng5QRoMnO0UqgpO4jAEVw-TcediAss6ncWMVT9msxwYsGpV2O_mWCEgjnzpUkrgDZUFUWDlaCCL05V6hD0qbtys6GRKHznv6141e2sAjGPMcdTRhJDhbRMHPGAQ4EgOm-r" style="border: none; transform: rotate(0rad);" width="640" /></span></div>
I am a product manager on the Maps API team. In my role, I focus on the Places API across all platforms and geographies. When I’m not at Google, I love running coastal trails, playing the piano and enjoying the fantastic lifestyle in Sydney! ]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/google-io-session-live-understand-your-place-in-this-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>One Day in at Google I/O</title>
		<link>https://googledata.org/google-maps/one-day-in-at-google-io/</link>
		<comments>https://googledata.org/google-maps/one-day-in-at-google-io/#comments</comments>
		<pubDate>Thu, 19 May 2016 15:32:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=d562a6f4092d53b35897ad37fee5dfca</guid>
		<description><![CDATA[<span><i>Posted by Ken Hoetmer, Product Manager, Google Maps APIs</i></span><br /><br />
Day 1 done! We had a great first day at <a href="https://events.google.com/io2016/">Google I/O</a>&#8212;more than 800 developers visited our Geo sandbox to check out apps, play with 360 degree cameras and most importantly, chat with our engineers, product managers, and developer advocates about the apps they&#8217;re building.<br /><div>
<span><img alt="IMG_6610.JPG" height="399" src="https://lh4.googleusercontent.com/WByFX67eTumBkNdIvGv3VYwbCmhcLlYcl8BiNnHNdLsj85-3Fv2kC5E4QweQrZV66f7MFaYi10P5uS-8ROFhRJ2Os7aMTAenK7SEGYtcgqf12ucJtLXbmAXh-4ufiAkCEoyXoXbQ" width="531"></span></div>
<span></span><br />
The Geo sandbox features Sugarbear, a 1959 PD-4104 General Motors Coach that measures 35&#8217; long by 8&#8217; wide with a diesel engine outfitted for biodiesel. Sugarbear made an epic <a href="https://codetheroad.withgoogle.com/">trip across the USA</a> after last year&#8217;s I/O and we&#8217;ve brought her back this year for more demo fun. You can engage with interactive maps experiences and check out customer applications inside the bus. Climb Yosemite's El Capitan, calculate your solar potential with Project Sunroof, and see how Nest and the Environmental Defense Fund use location data to make our lives better. Sugarbear also features Google Maps APIs customers Trucker Path, Zendrive, Postmates, GTX Corp and Vagabond.<br /><div>
<span><img alt="2016-05-18-1.jpg" height="384" src="https://lh6.googleusercontent.com/gjji1W3gNw70Q0hukI3GVeOs4s_7U6hClfPKvea0ck3y_hynEDOHw0wZI98oqa1_vkMacMOIXGDmzrX390Ik0vW3XChKvvjbpAA91ztnSgANWtRSRHlwetKPq2ri3PaB7MIXHiNv" width="512"></span></div>
<span></span><br /><div>
<span></span></div>
The Google I/O event shuttle buses are also being tracked and visualized in real time by an app we built using Firebase and Google Maps APIs. Within the Geo sandbox you can check out the app on the big screen and chat with the developers about how it works on the inside (hint: ask for Brett).<span></span><br /><br />
Geo also hosted one session yesterday: <a href="https://events.google.com/io2016/schedule?sid=84621cfd-0bef-e511-a517-00155d5066d7#day1/84621cfd-0bef-e511-a517-00155d5066d7">Location and Proximity Superpowers: Eddystone + Google Beacon Platform</a>&#160;and we have several additional sessions on Thursday and Friday, including <a href="https://events.google.com/io2016/schedule?sid=89621cfd-0bef-e511-a517-00155d5066d7#day2/89621cfd-0bef-e511-a517-00155d5066d7">Understand your Place in this world</a> and <a href="https://events.google.com/io2016/schedule?sid=8e621cfd-0bef-e511-a517-00155d5066d7#day2/8e621cfd-0bef-e511-a517-00155d5066d7">Building geo services that scale</a>.<br /><div>
<span><img height="480" src="https://lh3.googleusercontent.com/BmL6G9aSCTayncVXnOvAhniNgOmS0BqUll1CBJBUu1XVft90AdUCfa3cIJLuhdB9Hwt5bG--Ys7fnTXd4sKkYVuZG6eOhUAdgXhsOn4CvDl3euCLf73tE9GwjWcANyN10g0E_w_Q" width="640"></span></div>
<span></span><br />
Finally, don&#8217;t forget about our office hours&#8212;scheduled for Thursday, May 19 at 4pm. We&#8217;ll be in the tent for an hour...bring your Maps and Location questions for our Product Managers and Developer Advocates.]]></description>
				<content:encoded><![CDATA[<span class="post-author"><i>Posted by Ken Hoetmer, Product Manager, Google Maps APIs</i></span><br />
<br />
Day 1 done! We had a great first day at <a href="https://events.google.com/io2016/">Google I/O</a>—more than 800 developers visited our Geo sandbox to check out apps, play with 360 degree cameras and most importantly, chat with our engineers, product managers, and developer advocates about the apps they’re building.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: &quot;arial&quot;; font-size: 14.6667px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="IMG_6610.JPG" height="399" src="https://lh4.googleusercontent.com/WByFX67eTumBkNdIvGv3VYwbCmhcLlYcl8BiNnHNdLsj85-3Fv2kC5E4QweQrZV66f7MFaYi10P5uS-8ROFhRJ2Os7aMTAenK7SEGYtcgqf12ucJtLXbmAXh-4ufiAkCEoyXoXbQ" style="border: none; transform: rotate(0rad);" width="531" /></span></div>
<span id="docs-internal-guid-b979450b-c9a2-15e5-55a8-31af58e62796"></span><br />
The Geo sandbox features Sugarbear, a 1959 PD-4104 General Motors Coach that measures 35’ long by 8’ wide with a diesel engine outfitted for biodiesel. Sugarbear made an epic <a href="https://codetheroad.withgoogle.com/">trip across the USA</a> after last year’s I/O and we’ve brought her back this year for more demo fun. You can engage with interactive maps experiences and check out customer applications inside the bus. Climb Yosemite's El Capitan, calculate your solar potential with Project Sunroof, and see how Nest and the Environmental Defense Fund use location data to make our lives better. Sugarbear also features Google Maps APIs customers Trucker Path, Zendrive, Postmates, GTX Corp and Vagabond.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: &quot;arial&quot;; font-size: 14.6667px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="2016-05-18-1.jpg" height="384" src="https://lh6.googleusercontent.com/gjji1W3gNw70Q0hukI3GVeOs4s_7U6hClfPKvea0ck3y_hynEDOHw0wZI98oqa1_vkMacMOIXGDmzrX390Ik0vW3XChKvvjbpAA91ztnSgANWtRSRHlwetKPq2ri3PaB7MIXHiNv" style="border: none; transform: rotate(0rad);" width="512" /></span></div>
<span id="docs-internal-guid-b979450b-c9a4-49b7-f403-88e195e080ce"></span><br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: &quot;arial&quot;; font-size: 14.6667px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"></span></div>
The Google I/O event shuttle buses are also being tracked and visualized in real time by an app we built using Firebase and Google Maps APIs. Within the Geo sandbox you can check out the app on the big screen and chat with the developers about how it works on the inside (hint: ask for Brett).<span id="docs-internal-guid-b979450b-c9a1-ca9a-0b28-9643bd2ba3af"></span><br />
<br />
Geo also hosted one session yesterday: <a href="https://events.google.com/io2016/schedule?sid=84621cfd-0bef-e511-a517-00155d5066d7#day1/84621cfd-0bef-e511-a517-00155d5066d7">Location and Proximity Superpowers: Eddystone + Google Beacon Platform</a>&nbsp;and we have several additional sessions on Thursday and Friday, including <a href="https://events.google.com/io2016/schedule?sid=89621cfd-0bef-e511-a517-00155d5066d7#day2/89621cfd-0bef-e511-a517-00155d5066d7">Understand your Place in this world</a> and <a href="https://events.google.com/io2016/schedule?sid=8e621cfd-0bef-e511-a517-00155d5066d7#day2/8e621cfd-0bef-e511-a517-00155d5066d7">Building geo services that scale</a>.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: &quot;arial&quot;; font-size: 14.6667px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img height="480" src="https://lh3.googleusercontent.com/BmL6G9aSCTayncVXnOvAhniNgOmS0BqUll1CBJBUu1XVft90AdUCfa3cIJLuhdB9Hwt5bG--Ys7fnTXd4sKkYVuZG6eOhUAdgXhsOn4CvDl3euCLf73tE9GwjWcANyN10g0E_w_Q" style="border: none; transform: rotate(0rad);" width="640" /></span></div>
<span id="docs-internal-guid-b979450b-c9a1-700a-e8f3-3f26cc7edb11"></span><br />
Finally, don’t forget about our office hours—scheduled for Thursday, May 19 at 4pm. We’ll be in the tent for an hour...bring your Maps and Location questions for our Product Managers and Developer Advocates.]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/one-day-in-at-google-io/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Google Maps APIs Sessions Set for Google I/O</title>
		<link>https://googledata.org/google-maps/google-maps-apis-sessions-set-for-google-io/</link>
		<comments>https://googledata.org/google-maps/google-maps-apis-sessions-set-for-google-io/#comments</comments>
		<pubDate>Tue, 17 May 2016 14:40:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=684b477325253362b9eb08c90b096273</guid>
		<description><![CDATA[<span><i>Posted by Jac de Haan, Developer Marketing for the Google Maps APIs</i></span><br /><br />
Google I/O starts in just 24 hours! We&#8217;re looking forward to three days of insightful developer conversations, amazing technology and great weather. This year, Google Maps APIs engineers, technical support engineers, product managers, ux-ers, technical writers and developer advocates are traveling from Sydney, New York and Seattle to spend time in the Geo sandbox and demonstrate the power of our APIs. We'll also hold Office Hours to answer your implementation questions.<br /><div>
<span><img alt="IMG_20160516_171414.jpg" height="380" src="https://lh5.googleusercontent.com/4Y9dl_9owjDJ1bGIlKF37ZcgygUySa5ghLR4jwceCdKXJvyazSj00NFRFEUqBvjJBtWnL47RNy-ElOU7kVqb7daIdlk3ENm4T0y425qWU4txmiO6bhtOp9sP91U-Rpig71Y_NMVZ" width="507"></span></div>
<span></span><br />
Here are three of our featured sessions for this year&#8217;s event:<br /><br /><b>Understand your place in this world</b><br />
May 19, 9:00 AM<br />
Humans navigate a world made up of places with names, addresses and phone numbers&#8212;not lat/long coordinates. The Google Places API enables an app or website to present location data to users in a human-friendly fashion. In this session we&#8217;ll do a deep dive into how you can use the Places API to discover your environment. We&#8217;ll give detailed insights into how to use the APIs on web and mobile, show off some newly-released widgets, and take a look at how you can optimize for mobile device battery life. You&#8217;ll learn how the Places API can make all your apps&#8212; not just map-centric ones&#8212;smarter.<br /><br /><b>Building geo services that scale</b><br />
May 19, 2:00 PM<br />
Not all map and geo applications run entirely on your mobile device. Perhaps you want to protect your keys or other API access data from reverse engineering by putting them in the cloud, or you have custom business logic that you run on your server that you don't want to distribute via mobile. To protect your keys and API access data you'll need to operate some kind of service. In this session you'll learn how to build that service on the Google Cloud Platform and consume it in a mobile application that uses the Google Maps APIs.<br /><b><br /></b>
<b>Streamlining developer experiences with the Google Maps APIs</b><br />
May 20, 9:00 AM<br />
The Google Maps APIs provide a seamless experience for developers of all levels. Some want to offer a map or navigation but don't want to build these things themselves; this can be achieved with just a few lines of code. Other developers prefer to integrate natively with off-the-shelf widgets. Finally, some developers want complete control over every aspect of the presentation. This session will highlight the Maps APIs representing the full gamut of the developer experiences, enabling you to get going immediately and scale as necessary. You'll see how widgets and services can be added over time with a suite of Maps APIs, services and libraries.<br /><br />
We hope you&#8217;re able to attend at least one of these sessions to learn directly from Google Maps APIs experts. And, don&#8217;t forget to stop by the Geo sandbox to chat&#8212;just look for the big bus! If you&#8217;re not able to join us in person this year, you can always keep up with our activities via <a href="https://twitter.com/GoogleMapsAPI">Twitter</a> or <a href="https://plus.google.com/+GoogleMapsAPI">G+</a>.]]></description>
				<content:encoded><![CDATA[<span class="post-author"><i>Posted by Jac de Haan, Developer Marketing for the Google Maps APIs</i></span><br />
<br />
Google I/O starts in just 24 hours! We’re looking forward to three days of insightful developer conversations, amazing technology and great weather. This year, Google Maps APIs engineers, technical support engineers, product managers, ux-ers, technical writers and developer advocates are traveling from Sydney, New York and Seattle to spend time in the Geo sandbox and demonstrate the power of our APIs. We'll also hold Office Hours to answer your implementation questions.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: &quot;arial&quot;; font-size: 14.6667px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="IMG_20160516_171414.jpg" height="380" src="https://lh5.googleusercontent.com/4Y9dl_9owjDJ1bGIlKF37ZcgygUySa5ghLR4jwceCdKXJvyazSj00NFRFEUqBvjJBtWnL47RNy-ElOU7kVqb7daIdlk3ENm4T0y425qWU4txmiO6bhtOp9sP91U-Rpig71Y_NMVZ" style="border: none; transform: rotate(0rad);" width="507" /></span></div>
<span id="docs-internal-guid-bcae7eca-bf27-301e-4ea6-a4131e3837ee"></span><br />
Here are three of our featured sessions for this year’s event:<br />
<br />
<b>Understand your place in this world</b><br />
May 19, 9:00 AM<br />
Humans navigate a world made up of places with names, addresses and phone numbers—not lat/long coordinates. The Google Places API enables an app or website to present location data to users in a human-friendly fashion. In this session we’ll do a deep dive into how you can use the Places API to discover your environment. We’ll give detailed insights into how to use the APIs on web and mobile, show off some newly-released widgets, and take a look at how you can optimize for mobile device battery life. You’ll learn how the Places API can make all your apps— not just map-centric ones—smarter.<br />
<br />
<b>Building geo services that scale</b><br />
May 19, 2:00 PM<br />
Not all map and geo applications run entirely on your mobile device. Perhaps you want to protect your keys or other API access data from reverse engineering by putting them in the cloud, or you have custom business logic that you run on your server that you don't want to distribute via mobile. To protect your keys and API access data you'll need to operate some kind of service. In this session you'll learn how to build that service on the Google Cloud Platform and consume it in a mobile application that uses the Google Maps APIs.<br />
<b><br /></b>
<b>Streamlining developer experiences with the Google Maps APIs</b><br />
May 20, 9:00 AM<br />
The Google Maps APIs provide a seamless experience for developers of all levels. Some want to offer a map or navigation but don't want to build these things themselves; this can be achieved with just a few lines of code. Other developers prefer to integrate natively with off-the-shelf widgets. Finally, some developers want complete control over every aspect of the presentation. This session will highlight the Maps APIs representing the full gamut of the developer experiences, enabling you to get going immediately and scale as necessary. You'll see how widgets and services can be added over time with a suite of Maps APIs, services and libraries.<br />
<br />
We hope you’re able to attend at least one of these sessions to learn directly from Google Maps APIs experts. And, don’t forget to stop by the Geo sandbox to chat—just look for the big bus! If you’re not able to join us in person this year, you can always keep up with our activities via <a href="https://twitter.com/GoogleMapsAPI">Twitter</a> or <a href="https://plus.google.com/+GoogleMapsAPI">G+</a>.]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/google-maps-apis-sessions-set-for-google-io/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Get our API Release Notes automagically via RSS</title>
		<link>https://googledata.org/google-maps/get-our-api-release-notes-automagically-via-rss/</link>
		<comments>https://googledata.org/google-maps/get-our-api-release-notes-automagically-via-rss/#comments</comments>
		<pubDate>Thu, 12 May 2016 18:41:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=0fc091b1f0331abd1b88f8c5748eb8e7</guid>
		<description><![CDATA[<span><i>Posted by Sarah Maddox, technical writer for the Google Maps APIs</i></span><br /><br />
The Google Maps APIs team are keen to ensure that our  customers and developer community has the most up to date and useful information about using our APIs. With that goal in mind, we&#8217;ve added RSS feeds to the Release Notes for all the Maps and Places APIs.<br /><br />
Until now, if you wanted to see news about our releases, you&#8217;d need to visit individual API release notes pages periodically. We don't typically announce bug-fix or other small releases via the blog or social media but these are often critical for segments of our developer community.<br /><br />
You can now subscribe to individual API feeds and receive updates automatically when release notes are published. We'll continue to publish all Release Notes on the website as well. Feeds available today:<br /><a href="https://developers.google.com/maps/documentation/android-api/releases?utm_source=mapsAndroid&#38;utm_medium=blog&#38;utm_campaign=releaseNotes">Google Maps Android API</a>&#160;<span><a href="https://developers.google.com/maps/documentation/android-api/feeds/releases.xml?utm_source=mapsAndroid&#38;utm_medium=blog&#38;utm_campaign=rssFeed"><img height="24" src="https://lh4.googleusercontent.com/uaOaKjc8iKXR8LkjeDQfvlf-nMN92Sf-ceAUJiijK5N7m4jhQaKiRaZ8mbGrVLxGpMb0RdqN1pas262cKGNOnU9wN6gZwBNJjsr2MkKv233SraX1TMgMnwnDSPwSn3I9MvzkS4mQ" width="24"></a></span><br /><a href="https://developers.google.com/maps/documentation/ios-sdk/releases?utm_source=mapsIOS&#38;utm_medium=blog&#38;utm_campaign=releaseNotes">Google Maps SDK for iOS</a>&#160;<a href="https://developers.google.com/maps/documentation/ios-sdk/feeds/releases.xml?utm_source=mapsIOS&#38;utm_medium=blog&#38;utm_campaign=rssFeed"><span><img height="24" src="https://lh4.googleusercontent.com/uaOaKjc8iKXR8LkjeDQfvlf-nMN92Sf-ceAUJiijK5N7m4jhQaKiRaZ8mbGrVLxGpMb0RdqN1pas262cKGNOnU9wN6gZwBNJjsr2MkKv233SraX1TMgMnwnDSPwSn3I9MvzkS4mQ" width="24"></span></a><br /><a href="https://developers.google.com/maps/documentation/javascript/releases?utm_source=mapsJavaScript&#38;utm_medium=blog&#38;utm_campaign=releaseNotes">Google Maps JavaScript API</a>&#160;<span><a href="https://developers.google.com/maps/documentation/javascript/feeds/releases.xml?utm_source=mapsJavaScript&#38;utm_medium=blog&#38;utm_campaign=rssFeed"><img height="24" src="https://lh4.googleusercontent.com/uaOaKjc8iKXR8LkjeDQfvlf-nMN92Sf-ceAUJiijK5N7m4jhQaKiRaZ8mbGrVLxGpMb0RdqN1pas262cKGNOnU9wN6gZwBNJjsr2MkKv233SraX1TMgMnwnDSPwSn3I9MvzkS4mQ" width="24"></a></span><br /><a href="https://developers.google.com/maps/documentation/directions/releases?utm_source=mapsDirections&#38;utm_medium=blog&#38;utm_campaign=releaseNotes">Google Maps Directions API</a>&#160;<a href="https://developers.google.com/maps/documentation/directions/feeds/releases.xml?utm_source=mapsDirections&#38;utm_medium=blog&#38;utm_campaign=rssFeed"><span><img height="24" src="https://lh4.googleusercontent.com/uaOaKjc8iKXR8LkjeDQfvlf-nMN92Sf-ceAUJiijK5N7m4jhQaKiRaZ8mbGrVLxGpMb0RdqN1pas262cKGNOnU9wN6gZwBNJjsr2MkKv233SraX1TMgMnwnDSPwSn3I9MvzkS4mQ" width="24"></span></a><br /><a href="https://developers.google.com/maps/documentation/distance-matrix/releases?utm_source=mapsDistanceMatrix&#38;utm_medium=blog&#38;utm_campaign=releaseNotes">Google Maps Distance Matrix API</a>&#160;<a href="https://developers.google.com/maps/documentation/distance-matrix/feeds/releases.xml?utm_source=mapsDistanceMatrix&#38;utm_medium=blog&#38;utm_campaign=rssFeed"><span><img height="24" src="https://lh4.googleusercontent.com/uaOaKjc8iKXR8LkjeDQfvlf-nMN92Sf-ceAUJiijK5N7m4jhQaKiRaZ8mbGrVLxGpMb0RdqN1pas262cKGNOnU9wN6gZwBNJjsr2MkKv233SraX1TMgMnwnDSPwSn3I9MvzkS4mQ" width="24"></span></a><br /><a href="https://developers.google.com/places/android-api/releases?utm_source=placesAndroid&#38;utm_medium=blog&#38;utm_campaign=releaseNotes">Google Places API for Android</a>&#160;<a href="https://developers.google.com/places/android-api/feeds/releases.xml?utm_source=placesAndroid&#38;utm_medium=blog&#38;utm_campaign=rssFeed"><span><img height="24" src="https://lh4.googleusercontent.com/uaOaKjc8iKXR8LkjeDQfvlf-nMN92Sf-ceAUJiijK5N7m4jhQaKiRaZ8mbGrVLxGpMb0RdqN1pas262cKGNOnU9wN6gZwBNJjsr2MkKv233SraX1TMgMnwnDSPwSn3I9MvzkS4mQ" width="24"></span></a><br /><a href="https://developers.google.com/places/ios-api/releases?utm_source=placesIOS&#38;utm_medium=blog&#38;utm_campaign=releaseNotes">Google Places API for iOS</a>&#160;<a href="https://developers.google.com/places/ios-api/feeds/releases.xml?utm_source=placesIOS&#38;utm_medium=blog&#38;utm_campaign=rssFeed"><span><img height="24" src="https://lh4.googleusercontent.com/uaOaKjc8iKXR8LkjeDQfvlf-nMN92Sf-ceAUJiijK5N7m4jhQaKiRaZ8mbGrVLxGpMb0RdqN1pas262cKGNOnU9wN6gZwBNJjsr2MkKv233SraX1TMgMnwnDSPwSn3I9MvzkS4mQ" width="24"></span></a><br /><a href="https://developers.google.com/maps/premium/android-releases?utm_source=mapsAndroidPremium&#38;utm_medium=blog&#38;utm_campaign=releaseNotes">Google Maps Android API Premium Plan</a>&#160;<a href="https://developers.google.com/maps/premium/feeds/android-releases.xml?utm_source=mapsAndroidPremium&#38;utm_medium=blog&#38;utm_campaign=rssFeed"><span><img height="24" src="https://lh4.googleusercontent.com/uaOaKjc8iKXR8LkjeDQfvlf-nMN92Sf-ceAUJiijK5N7m4jhQaKiRaZ8mbGrVLxGpMb0RdqN1pas262cKGNOnU9wN6gZwBNJjsr2MkKv233SraX1TMgMnwnDSPwSn3I9MvzkS4mQ" width="24"></span></a><br /><a href="https://developers.google.com/maps/premium/ios-releases?utm_source=mapsIOSPremium&#38;utm_medium=blog&#38;utm_campaign=releaseNotes">Google Maps SDK for iOS Premium Plan</a>&#160;<a href="https://developers.google.com/maps/premium/feeds/ios-releases.xml?utm_source=mapsIOSPremium&#38;utm_medium=blog&#38;utm_campaign=rssFeed"><span><img height="24" src="https://lh4.googleusercontent.com/uaOaKjc8iKXR8LkjeDQfvlf-nMN92Sf-ceAUJiijK5N7m4jhQaKiRaZ8mbGrVLxGpMb0RdqN1pas262cKGNOnU9wN6gZwBNJjsr2MkKv233SraX1TMgMnwnDSPwSn3I9MvzkS4mQ" width="24"></span></a><br /><br />
I&#8217;ve been a technical writer at Google since 2013. I love my job because it gives me the opportunity to play with code and words, and to make them play nicely with each other. Maps are beautiful, and the docs help people weave stories around geography and places.<br /><div>
<span><img alt="Sarah-034-hallo_2.JPG" height="243" src="https://lh3.googleusercontent.com/C2A2t_slsoMDUmUVkznh5oZRR8NKUI2iV-5Z4vL41ZbxTW4KW0diZxphDZodtus5ELjOVWiUMJmFq1PjuZZTwPfZSztvrqtBmeyVLDi56uNeTgq6g9xAOjTvDncKZmJY43p6DV87" width="348"></span></div>
<span></span><br />
I&#8217;ll be at I/O next week, so I hope to see you there at our Geo sandbox (just look for the bus). Happy mapping!]]></description>
				<content:encoded><![CDATA[<span class="post-author"><i>Posted by Sarah Maddox, technical writer for the Google Maps APIs</i></span><br />
<br />
The Google Maps APIs team are keen to ensure that our  customers and developer community has the most up to date and useful information about using our APIs. With that goal in mind, we’ve added RSS feeds to the Release Notes for all the Maps and Places APIs.<br />
<br />
Until now, if you wanted to see news about our releases, you’d need to visit individual API release notes pages periodically. We don't typically announce bug-fix or other small releases via the blog or social media but these are often critical for segments of our developer community.<br />
<br />
You can now subscribe to individual API feeds and receive updates automatically when release notes are published. We'll continue to publish all Release Notes on the website as well. Feeds available today:<br />
<a href="https://developers.google.com/maps/documentation/android-api/releases?utm_source=mapsAndroid&amp;utm_medium=blog&amp;utm_campaign=releaseNotes">Google Maps Android API</a>&nbsp;<span style="color: #1155cc; font-family: &quot;arial&quot;; font-size: 14.6667px; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"><a href="https://developers.google.com/maps/documentation/android-api/feeds/releases.xml?utm_source=mapsAndroid&amp;utm_medium=blog&amp;utm_campaign=rssFeed" style="text-decoration: none;"><img height="24" src="https://lh4.googleusercontent.com/uaOaKjc8iKXR8LkjeDQfvlf-nMN92Sf-ceAUJiijK5N7m4jhQaKiRaZ8mbGrVLxGpMb0RdqN1pas262cKGNOnU9wN6gZwBNJjsr2MkKv233SraX1TMgMnwnDSPwSn3I9MvzkS4mQ" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="24" /></a></span><br />
<a href="https://developers.google.com/maps/documentation/ios-sdk/releases?utm_source=mapsIOS&amp;utm_medium=blog&amp;utm_campaign=releaseNotes">Google Maps SDK for iOS</a>&nbsp;<a href="https://developers.google.com/maps/documentation/ios-sdk/feeds/releases.xml?utm_source=mapsIOS&amp;utm_medium=blog&amp;utm_campaign=rssFeed" style="text-decoration: none;"><span style="color: #1155cc; font-family: &quot;arial&quot;; font-size: 14.6667px; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"><img height="24" src="https://lh4.googleusercontent.com/uaOaKjc8iKXR8LkjeDQfvlf-nMN92Sf-ceAUJiijK5N7m4jhQaKiRaZ8mbGrVLxGpMb0RdqN1pas262cKGNOnU9wN6gZwBNJjsr2MkKv233SraX1TMgMnwnDSPwSn3I9MvzkS4mQ" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="24" /></span></a><br />
<a href="https://developers.google.com/maps/documentation/javascript/releases?utm_source=mapsJavaScript&amp;utm_medium=blog&amp;utm_campaign=releaseNotes">Google Maps JavaScript API</a>&nbsp;<span style="color: #1155cc; font-family: &quot;arial&quot;; font-size: 14.6667px; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"><a href="https://developers.google.com/maps/documentation/javascript/feeds/releases.xml?utm_source=mapsJavaScript&amp;utm_medium=blog&amp;utm_campaign=rssFeed" style="text-decoration: none;"><img height="24" src="https://lh4.googleusercontent.com/uaOaKjc8iKXR8LkjeDQfvlf-nMN92Sf-ceAUJiijK5N7m4jhQaKiRaZ8mbGrVLxGpMb0RdqN1pas262cKGNOnU9wN6gZwBNJjsr2MkKv233SraX1TMgMnwnDSPwSn3I9MvzkS4mQ" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="24" /></a></span><br />
<a href="https://developers.google.com/maps/documentation/directions/releases?utm_source=mapsDirections&amp;utm_medium=blog&amp;utm_campaign=releaseNotes">Google Maps Directions API</a>&nbsp;<a href="https://developers.google.com/maps/documentation/directions/feeds/releases.xml?utm_source=mapsDirections&amp;utm_medium=blog&amp;utm_campaign=rssFeed" style="text-decoration: none;"><span style="color: #1155cc; font-family: &quot;arial&quot;; font-size: 14.6667px; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"><img height="24" src="https://lh4.googleusercontent.com/uaOaKjc8iKXR8LkjeDQfvlf-nMN92Sf-ceAUJiijK5N7m4jhQaKiRaZ8mbGrVLxGpMb0RdqN1pas262cKGNOnU9wN6gZwBNJjsr2MkKv233SraX1TMgMnwnDSPwSn3I9MvzkS4mQ" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="24" /></span></a><br />
<a href="https://developers.google.com/maps/documentation/distance-matrix/releases?utm_source=mapsDistanceMatrix&amp;utm_medium=blog&amp;utm_campaign=releaseNotes">Google Maps Distance Matrix API</a>&nbsp;<a href="https://developers.google.com/maps/documentation/distance-matrix/feeds/releases.xml?utm_source=mapsDistanceMatrix&amp;utm_medium=blog&amp;utm_campaign=rssFeed" style="text-decoration: none;"><span style="color: #1155cc; font-family: &quot;arial&quot;; font-size: 14.6667px; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"><img height="24" src="https://lh4.googleusercontent.com/uaOaKjc8iKXR8LkjeDQfvlf-nMN92Sf-ceAUJiijK5N7m4jhQaKiRaZ8mbGrVLxGpMb0RdqN1pas262cKGNOnU9wN6gZwBNJjsr2MkKv233SraX1TMgMnwnDSPwSn3I9MvzkS4mQ" style="border: none; transform: rotate(0rad);" width="24" /></span></a><br />
<a href="https://developers.google.com/places/android-api/releases?utm_source=placesAndroid&amp;utm_medium=blog&amp;utm_campaign=releaseNotes">Google Places API for Android</a>&nbsp;<a href="https://developers.google.com/places/android-api/feeds/releases.xml?utm_source=placesAndroid&amp;utm_medium=blog&amp;utm_campaign=rssFeed" style="text-decoration: none;"><span style="color: #1155cc; font-family: &quot;arial&quot;; font-size: 14.6667px; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"><img height="24" src="https://lh4.googleusercontent.com/uaOaKjc8iKXR8LkjeDQfvlf-nMN92Sf-ceAUJiijK5N7m4jhQaKiRaZ8mbGrVLxGpMb0RdqN1pas262cKGNOnU9wN6gZwBNJjsr2MkKv233SraX1TMgMnwnDSPwSn3I9MvzkS4mQ" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="24" /></span></a><br />
<a href="https://developers.google.com/places/ios-api/releases?utm_source=placesIOS&amp;utm_medium=blog&amp;utm_campaign=releaseNotes">Google Places API for iOS</a>&nbsp;<a href="https://developers.google.com/places/ios-api/feeds/releases.xml?utm_source=placesIOS&amp;utm_medium=blog&amp;utm_campaign=rssFeed" style="text-decoration: none;"><span style="color: #1155cc; font-family: &quot;arial&quot;; font-size: 14.6667px; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"><img height="24" src="https://lh4.googleusercontent.com/uaOaKjc8iKXR8LkjeDQfvlf-nMN92Sf-ceAUJiijK5N7m4jhQaKiRaZ8mbGrVLxGpMb0RdqN1pas262cKGNOnU9wN6gZwBNJjsr2MkKv233SraX1TMgMnwnDSPwSn3I9MvzkS4mQ" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="24" /></span></a><br />
<a href="https://developers.google.com/maps/premium/android-releases?utm_source=mapsAndroidPremium&amp;utm_medium=blog&amp;utm_campaign=releaseNotes">Google Maps Android API Premium Plan</a>&nbsp;<a href="https://developers.google.com/maps/premium/feeds/android-releases.xml?utm_source=mapsAndroidPremium&amp;utm_medium=blog&amp;utm_campaign=rssFeed" style="text-decoration: none;"><span style="color: #1155cc; font-family: &quot;arial&quot;; font-size: 14.6667px; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"><img height="24" src="https://lh4.googleusercontent.com/uaOaKjc8iKXR8LkjeDQfvlf-nMN92Sf-ceAUJiijK5N7m4jhQaKiRaZ8mbGrVLxGpMb0RdqN1pas262cKGNOnU9wN6gZwBNJjsr2MkKv233SraX1TMgMnwnDSPwSn3I9MvzkS4mQ" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="24" /></span></a><br />
<a href="https://developers.google.com/maps/premium/ios-releases?utm_source=mapsIOSPremium&amp;utm_medium=blog&amp;utm_campaign=releaseNotes">Google Maps SDK for iOS Premium Plan</a>&nbsp;<a href="https://developers.google.com/maps/premium/feeds/ios-releases.xml?utm_source=mapsIOSPremium&amp;utm_medium=blog&amp;utm_campaign=rssFeed" style="text-decoration: none;"><span style="color: #1155cc; font-family: &quot;arial&quot;; font-size: 14.6667px; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"><img height="24" src="https://lh4.googleusercontent.com/uaOaKjc8iKXR8LkjeDQfvlf-nMN92Sf-ceAUJiijK5N7m4jhQaKiRaZ8mbGrVLxGpMb0RdqN1pas262cKGNOnU9wN6gZwBNJjsr2MkKv233SraX1TMgMnwnDSPwSn3I9MvzkS4mQ" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="24" /></span></a><br />
<br />
I’ve been a technical writer at Google since 2013. I love my job because it gives me the opportunity to play with code and words, and to make them play nicely with each other. Maps are beautiful, and the docs help people weave stories around geography and places.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: &quot;arial&quot;; font-size: 14.6667px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="Sarah-034-hallo_2.JPG" height="243" src="https://lh3.googleusercontent.com/C2A2t_slsoMDUmUVkznh5oZRR8NKUI2iV-5Z4vL41ZbxTW4KW0diZxphDZodtus5ELjOVWiUMJmFq1PjuZZTwPfZSztvrqtBmeyVLDi56uNeTgq6g9xAOjTvDncKZmJY43p6DV87" style="border: none; transform: rotate(0rad);" width="348" /></span></div>
<span id="docs-internal-guid-2d208cb9-a60e-ffa1-2949-d3719e8da271"></span><br />
I’ll be at I/O next week, so I hope to see you there at our Geo sandbox (just look for the bus). Happy mapping! ]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/get-our-api-release-notes-automagically-via-rss/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Advanced marker animations and more with Google Maps SDK for iOS 1.13</title>
		<link>https://googledata.org/google-maps/advanced-marker-animations-and-more-with-google-maps-sdk-for-ios-1-13/</link>
		<comments>https://googledata.org/google-maps/advanced-marker-animations-and-more-with-google-maps-sdk-for-ios-1-13/#comments</comments>
		<pubDate>Mon, 04 Apr 2016 17:01:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=7afc41f48555707424bfbcaaec0c0158</guid>
		<description><![CDATA[Last week we launched the Google Maps SDK for iOS 1.13. This release includes the ability to create advanced marker animations, the option of auto refreshing info windows, the ability to set the frame rate up to 60 frames per second, further custom styling for the Place Autocomplete widget, and a new <span>mapViewSnapshotReady</span> event. <br /><br /><h4>
Advanced marker animations and auto-refreshing of info windows</h4>
Ever wanted to have rotating markers or use a grow and glow marker animation? <br /><br />
With the Google Maps SDK for iOS 1.13, we have introduced an <span><a href="https://developers.google.com/maps/documentation/ios-sdk/reference/interface_g_m_s_marker#property-documentation?utm_source=geodevsite&#38;utm_medium=website&#38;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost">iconView</a></span> property for marker icons, giving you the animation capabilities of a UIView. Because <span><a href="https://developers.google.com/maps/documentation/ios-sdk/reference/interface_g_m_s_marker#property-documentation?utm_source=geodevsite&#38;utm_medium=website&#38;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost">iconView</a></span> accepts a UIView, you can have a hierarchy of standard UI controls defining your markers, each view having the standard set of animation capabilities. The <span><a href="https://developers.google.com/maps/documentation/ios-sdk/reference/interface_g_m_s_marker#property-documentation?utm_source=geodevsite&#38;utm_medium=website&#38;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost">iconView</a></span> property supports animation of all animatable properties of UIView except <span>frame</span> and <span>center</span>. Take a look at our <a href="https://developers.google.com/maps/documentation/ios-sdk/marker#use_the_markers_iconview_property?utm_source=geodevsite&#38;utm_medium=website&#38;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost">documentation</a> to get started.<br /><br />
We've also included the option to auto-refresh info windows, which is particularly useful if you want to use a static web page as info window content but it hasn&#8217;t downloaded by the time you create your info window. By using the new marker property <a href="https://developers.google.com/maps/documentation/ios-sdk/reference/interface_g_m_s_marker#property-documentation?utm_source=geodevsite&#38;utm_medium=website&#38;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost"><span>tracksInfoWindowChanges</span></a>, you can have the <a href="https://developers.google.com/maps/documentation/ios-sdk/marker#set_an_info_window_to_refresh_automatically?utm_source=geodevsite&#38;utm_medium=website&#38;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost">info window automatically refresh</a> when the static web page loads. <br /><br /><h4>
Frame rate up to 60 fps with graceful fallback</h4>
You can now take advantage of a new enum, <span>GMSFrameRate</span>, which has three options: <span>kGMSFrameRatePowerSave</span> (15fps), <span>kGMSFrameRateConservative</span> (30fps), and the default <span>kGMSFrameRateMaximum</span> (60fps with 30fps fallback). In order to protect devices that don't handle 60fps well, we do a run-time device model check and the <a href="https://developers.google.com/maps/documentation/ios-sdk/reference/interface_g_m_s_map_view#property-documentation?utm_source=geodevsite&#38;utm_medium=website&#38;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost"><span>preferredFrameRate</span></a> is silently downgraded to 30fps when necessary on older devices. <br /><br /><h4>
Autocomplete widget styling</h4>
In Google Maps SDK for iOS 1.12 we announced the <a href="http://googlegeodevelopers.blogspot.com/2015/12/autocomplete-widget-and-updated-place.html">iOS Places autocomplete widget</a>. With the release of iOS 1.13, you can now add further custom styling to your autocomplete widget to create a consistent visual identity.<br /><div>
<span><img height="320" src="https://lh5.googleusercontent.com/GmkpmXrYh033uUXSjTZ_hcGjCAZTM4ES9TOoT3RLK4xadHyKCBOxkJY_z1M67mEwBPqar0fgzlN8b0u4FMfZRt4Sg_BzSdPj87fVStyf0t1963LGpaXywqJ2TwRCSXG-sjlrF_Pi" width="180"><img height="320" src="https://lh4.googleusercontent.com/0wgh8TJ7OCv714S9mPtu6vAO_XAgDBfgE_M5hStXBEJtx10UhRAI_KokMXKgyfdXD7SU8Pf_jJAmPKHvFcBV3372oJc2s4yKNFU6TF4_snrR8b_eSInVsy4KODR1JX_60CCrOx9Y" width="180"><img height="320" src="https://lh4.googleusercontent.com/RcscvQVqzcR0L-ncm89tFcUZ-sxjGfY5uqQJi3Kn5decsy3spnpqJ_iKb6pLxedXt4o3-XJJofCKlxkLyxsXgeO0ba9x7jJnyQ_lZjn0Lw5VIVLAVgn8A7SkoJmS8cXsKCmlIE4B" width="180"></span></div>
<span></span><br />
To set widget UI element colors:<br /><br /><ol><li>Use the native iOS <a href="https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIAppearance_Protocol/#//apple_ref/occ/intfcm/UIAppearance/appearance">Appearance Proxy</a> system when possible to globally style UI controls. The Places autocomplete widget will honor these settings.</li>
<li>Use the new SDK methods on widget classes to set colors which the Appearance Proxy system doesn't support.</li>
</ol><br />
Our <a href="https://developers.google.com/places/ios-api/autocomplete#customize_text_and_background_colors?utm_source=geodevsite&#38;utm_medium=website&#38;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost">documentation</a> highlights which elements can be customized using the Appearance Proxy, and which can be customized by using the SDK methods.<br /><h4>
<br />
mapViewSnapshotReady event</h4>
We heard your requests to provide a clear signal that all tiles have been rendered and the map has finished loading. In <a href="http://googlegeodevelopers.blogspot.com.au/2015/11/the-new-google-maps-sdk-for-ios.html">Google Maps SDK for iOS 1.11</a> we included start/finish events for map tile and Street View panorama rendering. <br /><br />
In this release, we've added a <span><a href="https://developers.google.com/maps/documentation/ios-sdk/reference/protocol_g_m_s_map_view_delegate-p#member-function-documentation?utm_source=geodevsite&#38;utm_medium=website&#38;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost">mapViewSnapshotReady</a></span> event that indicates that the map is stable (tiles loaded, labels rendered, camera idle) and overlay objects have been rendered. This is useful if you want to do a transition away from the map, but need a static image of the map in case you want to transition back. The <span><a href="https://developers.google.com/maps/documentation/ios-sdk/reference/protocol_g_m_s_map_view_delegate-p#member-function-documentation?utm_source=geodevsite&#38;utm_medium=website&#38;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost">mapViewSnapshotReady</a></span> event will ensure that the static image will truly represent the state of the map.<br /><br />
A big thank you to iOS developers for using the Google Maps SDK and submitting feedback via the <a href="https://code.google.com/p/gmaps-api-issues/?utm_source=geodevsite&#38;utm_medium=website&#38;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost">issue tracker</a>! <br /><br />
Take a look at our <a href="https://developers.google.com/maps/documentation/ios-sdk/releases?hl=en?utm_source=geodevsite&#38;utm_medium=website&#38;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost">release notes</a> and update to <a href="https://developers.google.com/maps/documentation/ios-sdk/start?utm_source=geodevsite&#38;utm_medium=website&#38;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost">Google Maps SDK for iOS 1.13</a> today.<br /><i><br /></i> <i>Posted by Megan Boundey, Product Manager, Google Maps Mobile APIs</i><br /><span><span><img height="89" src="https://lh3.googleusercontent.com/jtHHfhZBUMZNUp22QRmsOJxWQ2Vb3bOHmlq0tO9yk8bxgrbZR3G1jSxBIjTNp-6zIPYq03hOPGzJxk-ySJpjPE5C5nQ6xoBXhoj--1-zSy1DVtxW-UnWZIp4i6H3IcMU18hLdBZh" width="89"></span></span>]]></description>
				<content:encoded><![CDATA[Last week we launched the Google Maps SDK for iOS 1.13. This release includes the ability to create advanced marker animations, the option of auto refreshing info windows, the ability to set the frame rate up to 60 frames per second, further custom styling for the Place Autocomplete widget, and a new <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">mapViewSnapshotReady</span> event. <br />
<br />
<h4>
Advanced marker animations and auto-refreshing of info windows</h4>
Ever wanted to have rotating markers or use a grow and glow marker animation? <br />
<br />
With the Google Maps SDK for iOS 1.13, we have introduced an <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;"><a href="https://developers.google.com/maps/documentation/ios-sdk/reference/interface_g_m_s_marker#property-documentation?utm_source=geodevsite&amp;utm_medium=website&amp;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost">iconView</a></span> property for marker icons, giving you the animation capabilities of a UIView. Because <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;"><a href="https://developers.google.com/maps/documentation/ios-sdk/reference/interface_g_m_s_marker#property-documentation?utm_source=geodevsite&amp;utm_medium=website&amp;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost">iconView</a></span> accepts a UIView, you can have a hierarchy of standard UI controls defining your markers, each view having the standard set of animation capabilities. The <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;"><a href="https://developers.google.com/maps/documentation/ios-sdk/reference/interface_g_m_s_marker#property-documentation?utm_source=geodevsite&amp;utm_medium=website&amp;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost">iconView</a></span> property supports animation of all animatable properties of UIView except <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">frame</span> and <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">center</span>. Take a look at our <a href="https://developers.google.com/maps/documentation/ios-sdk/marker#use_the_markers_iconview_property?utm_source=geodevsite&amp;utm_medium=website&amp;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost">documentation</a> to get started.<br />
<br />
We've also included the option to auto-refresh info windows, which is particularly useful if you want to use a static web page as info window content but it hasn’t downloaded by the time you create your info window. By using the new marker property <a href="https://developers.google.com/maps/documentation/ios-sdk/reference/interface_g_m_s_marker#property-documentation?utm_source=geodevsite&amp;utm_medium=website&amp;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost"><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">tracksInfoWindowChanges</span></a>, you can have the <a href="https://developers.google.com/maps/documentation/ios-sdk/marker#set_an_info_window_to_refresh_automatically?utm_source=geodevsite&amp;utm_medium=website&amp;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost">info window automatically refresh</a> when the static web page loads. <br />
<br />
<h4>
Frame rate up to 60 fps with graceful fallback</h4>
You can now take advantage of a new enum, <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">GMSFrameRate</span>, which has three options: <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">kGMSFrameRatePowerSave</span> (15fps), <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">kGMSFrameRateConservative</span> (30fps), and the default <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">kGMSFrameRateMaximum</span> (60fps with 30fps fallback). In order to protect devices that don't handle 60fps well, we do a run-time device model check and the <a href="https://developers.google.com/maps/documentation/ios-sdk/reference/interface_g_m_s_map_view#property-documentation?utm_source=geodevsite&amp;utm_medium=website&amp;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost"><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">preferredFrameRate</span></a> is silently downgraded to 30fps when necessary on older devices. <br />
<br />
<h4>
Autocomplete widget styling</h4>
In Google Maps SDK for iOS 1.12 we announced the <a href="http://googlegeodevelopers.blogspot.com/2015/12/autocomplete-widget-and-updated-place.html">iOS Places autocomplete widget</a>. With the release of iOS 1.13, you can now add further custom styling to your autocomplete widget to create a consistent visual identity.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: &quot;arial&quot;; font-size: 14.6667px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img height="320" src="https://lh5.googleusercontent.com/GmkpmXrYh033uUXSjTZ_hcGjCAZTM4ES9TOoT3RLK4xadHyKCBOxkJY_z1M67mEwBPqar0fgzlN8b0u4FMfZRt4Sg_BzSdPj87fVStyf0t1963LGpaXywqJ2TwRCSXG-sjlrF_Pi" style="border: none; transform: rotate(0rad);" width="180" /> <img height="320" src="https://lh4.googleusercontent.com/0wgh8TJ7OCv714S9mPtu6vAO_XAgDBfgE_M5hStXBEJtx10UhRAI_KokMXKgyfdXD7SU8Pf_jJAmPKHvFcBV3372oJc2s4yKNFU6TF4_snrR8b_eSInVsy4KODR1JX_60CCrOx9Y" style="border: none; font-size: 14.6667px; transform: rotate(0rad);" width="180" /> <img height="320" src="https://lh4.googleusercontent.com/RcscvQVqzcR0L-ncm89tFcUZ-sxjGfY5uqQJi3Kn5decsy3spnpqJ_iKb6pLxedXt4o3-XJJofCKlxkLyxsXgeO0ba9x7jJnyQ_lZjn0Lw5VIVLAVgn8A7SkoJmS8cXsKCmlIE4B" style="border: none; font-size: 14.6667px; transform: rotate(0rad);" width="180" /></span></div>
<span id="docs-internal-guid-a801bf69-ce28-c857-718f-54853ea0c956"></span><br />
To set widget UI element colors:<br />
<br />
<ol>
<li>Use the native iOS <a href="https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIAppearance_Protocol/#//apple_ref/occ/intfcm/UIAppearance/appearance">Appearance Proxy</a> system when possible to globally style UI controls. The Places autocomplete widget will honor these settings.</li>
<li>Use the new SDK methods on widget classes to set colors which the Appearance Proxy system doesn't support.</li>
</ol>
<br />
Our <a href="https://developers.google.com/places/ios-api/autocomplete#customize_text_and_background_colors?utm_source=geodevsite&amp;utm_medium=website&amp;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost">documentation</a> highlights which elements can be customized using the Appearance Proxy, and which can be customized by using the SDK methods.<br />
<h4>
<br />
mapViewSnapshotReady event</h4>
We heard your requests to provide a clear signal that all tiles have been rendered and the map has finished loading. In <a href="http://googlegeodevelopers.blogspot.com.au/2015/11/the-new-google-maps-sdk-for-ios.html">Google Maps SDK for iOS 1.11</a> we included start/finish events for map tile and Street View panorama rendering. <br />
<br />
In this release, we've added a <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;"><a href="https://developers.google.com/maps/documentation/ios-sdk/reference/protocol_g_m_s_map_view_delegate-p#member-function-documentation?utm_source=geodevsite&amp;utm_medium=website&amp;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost">mapViewSnapshotReady</a></span> event that indicates that the map is stable (tiles loaded, labels rendered, camera idle) and overlay objects have been rendered. This is useful if you want to do a transition away from the map, but need a static image of the map in case you want to transition back. The <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;"><a href="https://developers.google.com/maps/documentation/ios-sdk/reference/protocol_g_m_s_map_view_delegate-p#member-function-documentation?utm_source=geodevsite&amp;utm_medium=website&amp;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost">mapViewSnapshotReady</a></span> event will ensure that the static image will truly represent the state of the map.<br />
<br />
A big thank you to iOS developers for using the Google Maps SDK and submitting feedback via the <a href="https://code.google.com/p/gmaps-api-issues/?utm_source=geodevsite&amp;utm_medium=website&amp;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost">issue tracker</a>! <br />
<br />
Take a look at our <a href="https://developers.google.com/maps/documentation/ios-sdk/releases?hl=en?utm_source=geodevsite&amp;utm_medium=website&amp;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost">release notes</a> and update to <a href="https://developers.google.com/maps/documentation/ios-sdk/start?utm_source=geodevsite&amp;utm_medium=website&amp;utm_campaign=2016-geo-na-website-gmedia-blogs-us-blogPost">Google Maps SDK for iOS 1.13</a> today.<br />
<i><br />
</i> <i>Posted by Megan Boundey, Product Manager, Google Maps Mobile APIs</i><br />
<span id="docs-internal-guid-a801bf69-ce2a-a886-2857-0ee9a3ee901c"><span style="color: #444444; font-family: &quot;arial&quot;; font-size: 13.3333px; font-style: italic; vertical-align: baseline; white-space: pre-wrap;"><img height="89" src="https://lh3.googleusercontent.com/jtHHfhZBUMZNUp22QRmsOJxWQ2Vb3bOHmlq0tO9yk8bxgrbZR3G1jSxBIjTNp-6zIPYq03hOPGzJxk-ySJpjPE5C5nQ6xoBXhoj--1-zSy1DVtxW-UnWZIp4i6H3IcMU18hLdBZh" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="89" /></span></span>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/advanced-marker-animations-and-more-with-google-maps-sdk-for-ios-1-13/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Changes and quality improvements in Google Places API Search</title>
		<link>https://googledata.org/google-maps/changes-and-quality-improvements-in-google-places-api-search/</link>
		<comments>https://googledata.org/google-maps/changes-and-quality-improvements-in-google-places-api-search/#comments</comments>
		<pubDate>Tue, 16 Feb 2016 17:00:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=94d9e58cf6e1475faedd1995edd1ba8c</guid>
		<description><![CDATA[Many of you have been asking for Google Places API search results that more closely reflect those on <a href="http://maps.google.com/">maps.google.com</a>. With that goal in mind, we&#8217;ve integrated the Places API with Google Maps search. We&#8217;re pleased to offer more consistent search results across Maps and the Places API, which results in better overall search quality for API responses.<br /><br />
In conjunction with this change, we are also modifying how we support place type restrictions in the Places API web service and JavaScript library. Beginning  Feb 16, 2016, we are replacing the types restriction parameter with a new type search parameter. If you have  been using the types parameter for <a href="https://developers.google.com/places/web-service/search?hl=en#PlaceSearchRequests">Nearby Search</a>, <a href="https://developers.google.com/places/web-service/search?hl=en#TextSearchRequests">Text Search</a> or <a href="https://developers.google.com/places/web-service/search?hl=en#RadarSearchRequests">Radar Search</a> you will be affected.<br /><br />
Type search works similarly to types restriction, but it only supports one type per request.<br /><br />
Requests using the types parameter and those specifying multiple types (for example, <span>types=hospital&#124;pharmacy&#124;doctor</span>) will continue to return results until Feb 16, 2017, but we do not recommend using multiple types in a search request. After that date, requests with multiple types will no longer be supported. To ensure the best possible search results for your users, we recommend using a single type in search requests.<br /><br />
Using the new type search feature is straightforward. Here is an example of a Text Search request:<br /><pre>https://maps.googleapis.com/maps/api/place/textsearch/json
?type=airport
&#38;location=-33.87,151.21
&#38;radius=5000
&#38;key=&#60;YOUR_API_KEY&#62;</pre>
In addition, we are amending the list of <a href="https://developers.google.com/places/supported_types">supported types</a>. The types <span>establishment, food, health, general_contractor, finance</span> and <span>place_of_worship</span>, will not be available as <a href="https://developers.google.com/places/supported_types#table1">searchable types</a> from Feb 16, 2017. However these types will still be returned in search and details results.<br /><i><br /></i>
<i>Posted by Marcelo Camelo, on behalf of the Google Places API team</i>]]></description>
				<content:encoded><![CDATA[Many of you have been asking for Google Places API search results that more closely reflect those on <a href="http://maps.google.com/">maps.google.com</a>. With that goal in mind, we’ve integrated the Places API with Google Maps search. We’re pleased to offer more consistent search results across Maps and the Places API, which results in better overall search quality for API responses.<br />
<br />
In conjunction with this change, we are also modifying how we support place type restrictions in the Places API web service and JavaScript library. Beginning  Feb 16, 2016, we are replacing the types restriction parameter with a new type search parameter. If you have  been using the types parameter for <a href="https://developers.google.com/places/web-service/search?hl=en#PlaceSearchRequests">Nearby Search</a>, <a href="https://developers.google.com/places/web-service/search?hl=en#TextSearchRequests">Text Search</a> or <a href="https://developers.google.com/places/web-service/search?hl=en#RadarSearchRequests">Radar Search</a> you will be affected.<br />
<br />
Type search works similarly to types restriction, but it only supports one type per request.<br />
<br />
Requests using the types parameter and those specifying multiple types (for example, <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">types=hospital|pharmacy|doctor</span>) will continue to return results until Feb 16, 2017, but we do not recommend using multiple types in a search request. After that date, requests with multiple types will no longer be supported. To ensure the best possible search results for your users, we recommend using a single type in search requests.<br />
<br />
Using the new type search feature is straightforward. Here is an example of a Text Search request:<br />
<pre>https://maps.googleapis.com/maps/api/place/textsearch/json
?type=airport
&amp;location=-33.87,151.21
&amp;radius=5000
&amp;key=&lt;YOUR_API_KEY&gt;</pre>
In addition, we are amending the list of <a href="https://developers.google.com/places/supported_types">supported types</a>. The types <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">establishment, food, health, general_contractor, finance</span> and <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">place_of_worship</span>, will not be available as <a href="https://developers.google.com/places/supported_types#table1">searchable types</a> from Feb 16, 2017. However these types will still be returned in search and details results.<br />
<i><br /></i>
<i>Posted by Marcelo Camelo, on behalf of the Google Places API team</i>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/changes-and-quality-improvements-in-google-places-api-search/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>A look back at Google Maps in 2015</title>
		<link>https://googledata.org/google-maps/a-look-back-at-google-maps-in-2015/</link>
		<comments>https://googledata.org/google-maps/a-look-back-at-google-maps-in-2015/#comments</comments>
		<pubDate>Fri, 01 Jan 2016 01:01:00 +0000</pubDate>
		<dc:creator><![CDATA[Lat Long]]></dc:creator>
				<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[google lat-long]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=ce2c661eea23102d236a2e377b1bd4f2</guid>
		<description><![CDATA[<span>2016 is just around the corner. Before we pop champagne and ring in the New Year, let&#8217;s take a look back at the enhancements we&#8217;ve made to Google Maps over the past year. From using Google Maps offline to discovering new places with Explore, we&#8217;re proud to not only get you from point A to point B quickly and easily, but to also help you explore the world around you with confidence. </span><br /><span><br /></span><span>Below is a list of the new features you might&#8217;ve missed, along with a handy chart showing you where you&#8217;ll find them. If you got a new phone this holiday season, now&#8217;s the time to give the <a href="https://itunes.apple.com/us/app/google-maps/id585027354?mt=8">Google Maps app</a> a go. </span><br /><span><br /></span><b><span>2015 Google Maps New Features</span></b><br /><ol><li><span>2015 is ticking away, but you can take a look back at the places you&#8217;ve traveled with <a href="http://google-latlong.blogspot.com/2015/07/your-timeline-revisiting-world-that.html" target="_blank">Your Timeline</a>.</span></li><li><span>Always know when your favorite stores are open with <a href="http://google-latlong.blogspot.com/2015/11/tis-season-google-brings-holiday-hours_6.html" target="_blank">up-to-date holiday hours and alerts</a>.</span></li><li><span>Whether you&#8217;re in a parking garage with no signal or traveling in country with expensive data, search for places, get directions, and turn-by-turn navigation&#8211;all <a href="http://google-latlong.blogspot.com/2015/11/navigate-and-search-real-world-online.html" target="_blank">offline</a>.</span></li><li><span>Always stay on the fastest route and beat bumper-to-bumper traffic with <a href="http://google-latlong.blogspot.com/2015/05/dont-let-traffic-slow-you-down-this.html" target="_blank">real-time traffic updates and dynamic re-routing</a>.</span></li><li><span>Never run low on fuel with up-to-date <a href="http://google-latlong.blogspot.com/2015/10/google-maps-making-stressful-times.html" target="_blank">gas prices</a> in search results and on the map.</span></li><li><span>Make quick pit stops without long detours&#8211;<a href="http://google-latlong.blogspot.com/2015/12/maps-minutes-hack-5-make-your-holiday.html" target="_blank">search for places along your route</a> without leaving navigation mode.</span></li><li><span>Find the <a href="http://google-latlong.blogspot.com/2015/09/discover-deliciousness-with-explore-in.html" target="_blank">best local spots to eat and drink</a> with curated recommendations.</span></li><li><span>Get all your travel options and <a href="http://google-latlong.blogspot.com/2015/09/never-be-late-for-very-important-date.html" target="_blank">compare ETAs across driving, walking, biking and transit</a>&#8211;all on one screen.</span></li><li><span>Get the scoop on when the lines are shortest and shops least crowded by checking businesses&#8217; <a href="http://google-latlong.blogspot.com/2015/12/part-of-our-series-on-how-to-save-time.html" target="_blank">most popular times</a>&#8211;by day, by hour.</span></li><li><span>Get the lay of the land before you arrive by using <a href="http://google-latlong.blogspot.com/2015/12/maps-minutes-hack-4-get-street-view.html" target="_blank">Street View thumbnail</a>.</span></li><li><span>Never miss a bus or train with <a href="http://google-latlong.blogspot.com/2015/06/mind-gapp-for-real-time-transit.html" target="_blank">real-time transit information</a> (schedules, fares, updates) in more than 18,000 cities across 64 countries.</span></li><li><span>Get directions, turn-by-turn navigation and real-time traffic updates from your wrist with the Google Maps app on <a href="http://officialandroid.blogspot.com/2015/07/google-maps-for-android-wear-put-world.html" target="_blank">Android Wear </a>and Apple Watch.</span></li></ol><span>To see these new features in action, take a look back at our <a href="https://www.youtube.com/watch?v=RjHqgXguc7o&#38;list=PLcRbp4LqBpwEJmFluxlzeXWo91xAfOKSx" target="_blank">Maps Minutes Holiday Hacks series</a>.</span><br /><span><br /></span><br /><div dir="ltr"><span>2015 New Features by iOS and Android Availability</span></div><span><b><br /></b> </span><br /><div dir="ltr"><table><colgroup><col width="*"><col width="*"><col width="*"></colgroup><tbody><tr><td><div dir="ltr"><span>Feature </span></div></td><td><div dir="ltr"><span>Android </span></div></td><td><div dir="ltr"><span>iOS</span></div></td></tr><tr><td><div dir="ltr"><a href="http://google-latlong.blogspot.com/2015/11/tis-season-google-brings-holiday-hours_6.html"><span>Up-to-Date Holiday Business Hours and Warnings</span></a></div></td><td><div dir="ltr"><span>X</span></div></td><td><div dir="ltr"><span>X</span></div></td></tr><tr><td><div dir="ltr"><span><a href="http://google-latlong.blogspot.com/2015/11/navigate-and-search-real-world-online.html"><span>Location Search and Turn-by-Turn Navigation While Offline</span></a><span> </span></span></div></td><td><div dir="ltr"><span>X</span></div></td><td><div dir="ltr"><span>X</span></div></td></tr><tr><td><div dir="ltr"><a href="http://google-latlong.blogspot.com/2015/07/your-timeline-revisiting-world-that.html"><span>A Look Back at the Places You&#8217;ve Visited through &#8220;Your Timeline&#8221;</span></a></div></td><td><div dir="ltr"><span>X</span></div></td><td><span><br /></span></td></tr><tr><td><div dir="ltr"><span><a href="http://google-latlong.blogspot.com/2015/05/dont-let-traffic-slow-you-down-this.html"><span>Real-time Spoken Traffic Alerts</span></a><span> </span></span></div></td><td><div dir="ltr"><span>X </span></div></td><td><div dir="ltr"><span>X</span></div></td></tr><tr><td><div dir="ltr"><a href="http://google-latlong.blogspot.com/2015/10/google-maps-making-stressful-times.html"><span>Gas Prices on Map</span></a></div></td><td><div dir="ltr"><span>X</span></div></td><td><div dir="ltr"><span>X</span></div></td></tr><tr><td><div dir="ltr"><a href="http://google-latlong.blogspot.com/2015/10/google-maps-making-stressful-times.html"><span>Location Search Without Leaving Navigation Mode</span></a></div></td><td><div dir="ltr"><span>X </span></div></td><td><div dir="ltr"><br /></div></td></tr><tr><td><div dir="ltr"><span><a href="http://google-latlong.blogspot.com/2015/09/discover-deliciousness-with-explore-in.html"><span>Updated &#8220;Explore&#8221; Experience with New Curated Content</span></a><span> </span></span></div></td><td><div dir="ltr"><span>X </span></div></td><td><div dir="ltr"><span>X </span></div></td></tr><tr><td><div dir="ltr"><a href="http://google-latlong.blogspot.com/2015/09/never-be-late-for-very-important-date.html"><span>Compare ETAs on One Screen</span></a></div></td><td><div dir="ltr"><span>X </span></div></td><td><div dir="ltr"><span>X </span></div></td></tr><tr><td><div dir="ltr"><a href="https://plus.sandbox.google.com/+google/posts/QY1c97V25Tz"><span>The Most Popular Times to Visit a Business</span></a></div></td><td><div dir="ltr"><span>X </span></div></td><td><div dir="ltr"><span>X </span></div></td></tr><tr><td><div dir="ltr"><a href="http://google-latlong.blogspot.com/2015/12/maps-minutes-hack-4-get-street-view.html"><span>Street View Thumbnails</span></a></div></td><td><div dir="ltr"><span>X</span></div></td><td><div dir="ltr"><span>X</span></div></td></tr><tr><td><div dir="ltr"><span>Real-time Traffic View of Your Route</span></div></td><td><div dir="ltr"><span>X </span></div></td><td><div dir="ltr"><span>X </span></div></td></tr><tr><td><div dir="ltr"><span><a href="http://officialandroid.blogspot.com/2015/07/google-maps-for-android-wear-put-world.html"><span>Directions and Turn-by-Turn Navigation on Wearables</span></a><span> </span></span></div></td><td><div dir="ltr"><span>X (Android Wear)</span></div></td><td><div dir="ltr"><span>X (Apple Watch)</span></div></td></tr></tbody></table></div><span><b><br /></b> </span><br /><div dir="ltr"><span>Join us in a virtual toast to a New Year of helping you explore and navigate your far away travels as well as your everyday life. </span></div><span><b><br /></b> </span><br /><div dir="ltr"><span>Posted by the Google Maps team</span></div><br /><br /><br /><br /><br />]]></description>
				<content:encoded><![CDATA[<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">2016 is just around the corner. Before we pop champagne and ring in the New Year, let’s take a look back at the enhancements we’ve made to Google Maps over the past year. From using Google Maps offline to discovering new places with Explore, we’re proud to not only get you from point A to point B quickly and easily, but to also help you explore the world around you with confidence. </span><br /><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">Below is a list of the new features you might’ve missed, along with a handy chart showing you where you’ll find them. If you got a new phone this holiday season, now’s the time to give the <a href="https://itunes.apple.com/us/app/google-maps/id585027354?mt=8">Google Maps app</a> a go. </span><br /><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span><b><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">2015 Google Maps New Features</span></b><br /><ol><li><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">2015 is ticking away, but you can take a look back at the places you’ve traveled with <a href="http://google-latlong.blogspot.com/2015/07/your-timeline-revisiting-world-that.html" >Your Timeline</a>.</span></li><li><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">Always know when your favorite stores are open with <a href="http://google-latlong.blogspot.com/2015/11/tis-season-google-brings-holiday-hours_6.html" >up-to-date holiday hours and alerts</a>.</span></li><li><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">Whether you’re in a parking garage with no signal or traveling in country with expensive data, search for places, get directions, and turn-by-turn navigation–all <a href="http://google-latlong.blogspot.com/2015/11/navigate-and-search-real-world-online.html" >offline</a>.</span></li><li><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">Always stay on the fastest route and beat bumper-to-bumper traffic with <a href="http://google-latlong.blogspot.com/2015/05/dont-let-traffic-slow-you-down-this.html" >real-time traffic updates and dynamic re-routing</a>.</span></li><li><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">Never run low on fuel with up-to-date <a href="http://google-latlong.blogspot.com/2015/10/google-maps-making-stressful-times.html" >gas prices</a> in search results and on the map.</span></li><li><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">Make quick pit stops without long detours–<a href="http://google-latlong.blogspot.com/2015/12/maps-minutes-hack-5-make-your-holiday.html" >search for places along your route</a> without leaving navigation mode.</span></li><li><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">Find the <a href="http://google-latlong.blogspot.com/2015/09/discover-deliciousness-with-explore-in.html" >best local spots to eat and drink</a> with curated recommendations.</span></li><li><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">Get all your travel options and <a href="http://google-latlong.blogspot.com/2015/09/never-be-late-for-very-important-date.html" >compare ETAs across driving, walking, biking and transit</a>–all on one screen.</span></li><li><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">Get the scoop on when the lines are shortest and shops least crowded by checking businesses’ <a href="http://google-latlong.blogspot.com/2015/12/part-of-our-series-on-how-to-save-time.html" >most popular times</a>–by day, by hour.</span></li><li><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">Get the lay of the land before you arrive by using <a href="http://google-latlong.blogspot.com/2015/12/maps-minutes-hack-4-get-street-view.html" >Street View thumbnail</a>.</span></li><li><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">Never miss a bus or train with <a href="http://google-latlong.blogspot.com/2015/06/mind-gapp-for-real-time-transit.html" >real-time transit information</a> (schedules, fares, updates) in more than 18,000 cities across 64 countries.</span></li><li><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">Get directions, turn-by-turn navigation and real-time traffic updates from your wrist with the Google Maps app on <a href="http://officialandroid.blogspot.com/2015/07/google-maps-for-android-wear-put-world.html" >Android Wear </a>and Apple Watch.</span></li></ol><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">To see these new features in action, take a look back at our <a href="https://www.youtube.com/watch?v=RjHqgXguc7o&amp;list=PLcRbp4LqBpwEJmFluxlzeXWo91xAfOKSx" >Maps Minutes Holiday Hacks series</a>.</span><br /><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span><br /><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #222222; font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">2015 New Features by iOS and Android Availability</span></div><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><b id="docs-internal-guid-ee7e9b01-fab0-26cd-6425-6b5de2ab83ba" style="font-weight: normal;"><br /></b> </span><br /><div dir="ltr" style="margin-left: 0pt;"><table style="border-collapse: collapse; border: none; width: 624px;"><colgroup><col width="*"></col><col width="*"></col><col width="*"></col></colgroup><tbody><tr style="height: 0px;"><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;"><span style="background-color: transparent; color: #222222; font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Feature </span></div></td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;"><span style="background-color: transparent; color: #222222; font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Android </span></div></td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;"><span style="background-color: transparent; color: #222222; font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">iOS</span></div></td></tr><tr style="height: 0px;"><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;"><a href="http://google-latlong.blogspot.com/2015/11/tis-season-google-brings-holiday-hours_6.html" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">Up-to-Date Holiday Business Hours and Warnings</span></a></div></td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;"><span style="background-color: transparent; color: #222222; font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">X</span></div></td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;"><span style="background-color: transparent; color: #222222; font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">X</span></div></td></tr><tr style="height: 0px;"><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;"><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><a href="http://google-latlong.blogspot.com/2015/11/navigate-and-search-real-world-online.html" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">Location Search and Turn-by-Turn Navigation While Offline</span></a><span style="background-color: transparent; color: #222222; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> </span></span></div></td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;"><span style="background-color: transparent; color: #222222; font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">X</span></div></td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;"><span style="background-color: transparent; color: #222222; font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">X</span></div></td></tr><tr style="height: 0px;"><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;"><a href="http://google-latlong.blogspot.com/2015/07/your-timeline-revisiting-world-that.html" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">A Look Back at the Places You’ve Visited through “Your Timeline”</span></a></div></td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;"><span style="background-color: transparent; color: #222222; font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">X</span></div></td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span></td></tr><tr style="height: 0px;"><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;"><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><a href="http://google-latlong.blogspot.com/2015/05/dont-let-traffic-slow-you-down-this.html" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">Real-time Spoken Traffic Alerts</span></a><span style="background-color: transparent; color: #222222; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> </span></span></div></td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;"><span style="background-color: transparent; color: #222222; font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">X </span></div></td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;"><span style="background-color: transparent; color: #222222; font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">X</span></div></td></tr><tr style="height: 0px;"><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;"><a href="http://google-latlong.blogspot.com/2015/10/google-maps-making-stressful-times.html" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">Gas Prices on Map</span></a></div></td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;"><span style="background-color: transparent; color: #222222; font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">X</span></div></td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;"><span style="background-color: transparent; color: #222222; font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">X</span></div></td></tr><tr style="height: 0px;"><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;"><a href="http://google-latlong.blogspot.com/2015/10/google-maps-making-stressful-times.html" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">Location Search Without Leaving Navigation Mode</span></a></div></td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;"><span style="background-color: transparent; color: #222222; font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">X </span></div></td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;"><br /></div></td></tr><tr style="height: 0px;"><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;"><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><a href="http://google-latlong.blogspot.com/2015/09/discover-deliciousness-with-explore-in.html" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">Updated “Explore” Experience with New Curated Content</span></a><span style="background-color: transparent; color: #222222; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> </span></span></div></td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;"><span style="background-color: transparent; color: #222222; font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">X </span></div></td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;"><span style="background-color: transparent; color: #222222; font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">X </span></div></td></tr><tr style="height: 0px;"><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;"><a href="http://google-latlong.blogspot.com/2015/09/never-be-late-for-very-important-date.html" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">Compare ETAs on One Screen</span></a></div></td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;"><span style="background-color: transparent; color: #222222; font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">X </span></div></td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;"><span style="background-color: transparent; color: #222222; font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">X </span></div></td></tr><tr style="height: 0px;"><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;"><a href="https://plus.sandbox.google.com/+google/posts/QY1c97V25Tz" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">The Most Popular Times to Visit a Business</span></a></div></td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;"><span style="background-color: transparent; color: #222222; font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">X </span></div></td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;"><span style="background-color: transparent; color: #222222; font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">X </span></div></td></tr><tr style="height: 0px;"><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;"><a href="http://google-latlong.blogspot.com/2015/12/maps-minutes-hack-4-get-street-view.html" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">Street View Thumbnails</span></a></div></td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;"><span style="background-color: transparent; color: #222222; font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">X</span></div></td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;"><span style="background-color: transparent; color: #222222; font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">X</span></div></td></tr><tr style="height: 0px;"><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;"><span style="background-color: transparent; color: #222222; font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Real-time Traffic View of Your Route</span></div></td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;"><span style="background-color: transparent; color: #222222; font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">X </span></div></td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;"><span style="background-color: transparent; color: #222222; font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">X </span></div></td></tr><tr style="height: 0px;"><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;"><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><a href="http://officialandroid.blogspot.com/2015/07/google-maps-for-android-wear-put-world.html" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">Directions and Turn-by-Turn Navigation on Wearables</span></a><span style="background-color: transparent; color: #222222; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> </span></span></div></td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;"><span style="background-color: transparent; color: #222222; font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">X (Android Wear)</span></div></td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;"><span style="background-color: transparent; color: #222222; font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">X (Apple Watch)</span></div></td></tr></tbody></table></div><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><b style="font-weight: normal;"><br /></b> </span><br /><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #222222; font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Join us in a virtual toast to a New Year of helping you explore and navigate your far away travels as well as your everyday life. </span></div><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><b style="font-weight: normal;"><br /></b> </span><br /><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #222222; font-family: Helvetica Neue, Arial, Helvetica, sans-serif; font-style: italic; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Posted by the Google Maps team</span></div><br /><br /><br /><br /><br />]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/a-look-back-at-google-maps-in-2015/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Maps Minutes Hack #8: Set your home and work addresses for easy navigation</title>
		<link>https://googledata.org/google-maps/maps-minutes-hack-8-set-your-home-and-work-addresses-for-easy-navigation/</link>
		<comments>https://googledata.org/google-maps/maps-minutes-hack-8-set-your-home-and-work-addresses-for-easy-navigation/#comments</comments>
		<pubDate>Thu, 24 Dec 2015 00:32:00 +0000</pubDate>
		<dc:creator><![CDATA[Lat Long]]></dc:creator>
				<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[google lat-long]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=78b06f90ebc224f4b08f1b7e69920693</guid>
		<description><![CDATA[<i>Part of our <a href="http://google-latlong.blogspot.com/2015/12/holiday-maps-minutes-hack-1-save-time.html">series</a> on how to save time this holiday season with Google Maps.</i><br /><br />It&#8217;s crunch time. There are holiday parties to attend and last-minute gifts to be bought and wrapped. When the holidays are only days away even the small things can make a difference. So here&#8217;s another helpful trick for how you can save a few extra minutes every time you use Google Maps for directions or  navigation. <br /><br />You can save your home and work addresses in Google Maps, and then select &#8220;home&#8221; or &#8220;work&#8221; rather than typing the locations every single time. Just go to &#8220;your places&#8221; on the side menu and you&#8217;ll see &#8220;home&#8221; and &#8220;work&#8221; under &#8220;labeled places&#8221;. Enter the address for each and next time you&#8217;re navigating to or from home or work, you can get your directions a little quicker and easier than before.<br /><div><br /></div><div><br /></div><br />Every minute matters. Save more every day with Maps Minutes Hacks. Next up: how to get home fast and safe on New Year&#8217;s Eve.<br /><br /><i>Posted by Olga Suvorova, Product Marketing Manager, Google Maps</i>]]></description>
				<content:encoded><![CDATA[<i>Part of our <a href="http://google-latlong.blogspot.com/2015/12/holiday-maps-minutes-hack-1-save-time.html">series</a> on how to save time this holiday season with Google Maps.</i><br /><br />It’s crunch time. There are holiday parties to attend and last-minute gifts to be bought and wrapped. When the holidays are only days away even the small things can make a difference. So here’s another helpful trick for how you can save a few extra minutes every time you use Google Maps for directions or  navigation. <br /><br />You can save your home and work addresses in Google Maps, and then select “home” or “work” rather than typing the locations every single time. Just go to “your places” on the side menu and you’ll see “home” and “work” under “labeled places”. Enter the address for each and next time you’re navigating to or from home or work, you can get your directions a little quicker and easier than before.<br /><div style="text-align: center;"><br /></div><div style="text-align: center;"><iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/Wvc18ZO2dHg?list=PLcRbp4LqBpwEJmFluxlzeXWo91xAfOKSx" width="560"></iframe><br /></div><br />Every minute matters. Save more every day with Maps Minutes Hacks. Next up: how to get home fast and safe on New Year’s Eve.<br /><br /><i>Posted by Olga Suvorova, Product Marketing Manager, Google Maps</i>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/maps-minutes-hack-8-set-your-home-and-work-addresses-for-easy-navigation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Code the Road Europe Recap: Our last stop in London</title>
		<link>https://googledata.org/google-maps/code-the-road-europe-recap-our-last-stop-in-london/</link>
		<comments>https://googledata.org/google-maps/code-the-road-europe-recap-our-last-stop-in-london/#comments</comments>
		<pubDate>Wed, 23 Dec 2015 16:54:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=12c7af90eb894f9ad07b2201ea9a6829</guid>
		<description><![CDATA[<div>
<br /></div>
We celebrated our last &#8216;Code the Road&#8217; Europe stop in London where the team got an early start in our Code Lab building an Android app using the Google Maps APIs.<br /><div>
<span><img height="468px;" src="https://lh6.googleusercontent.com/yGQ6ThkQPQ05I9C84W2wYgzE3F2GDytnLo9-yZwUcFOpCcyToH6E4Ye9SJo0Ns_rS6G7pgcVvsQbYV2v5BCidfKpFCMwKwq8l_GD0A_TM8uT509Fp1OS9cAwVvHgkG_e82T7JSl-" width="624px;"></span></div>
Ed Boiling, Maps API sales engineer, led the Code Lab workshop where developers created an Android application using the Google Maps Android API and connected it to a Google Cloud Platform datastore. The Code Lab covered concepts including using Android Studio, creating a Google Maps activity, drawing data on the map, capturing the user's location, and adding location based rules to control the application logic. It also introduced the developers to Google Cloud Platform via the Cloud Endpoints integration in Android studio, allowing them to easily add and deploy a Google App Engine based API and datastore for their application to use.<br /><div>
<span><img height="416px;" src="https://lh5.googleusercontent.com/vczc7Jiocc9gtCH2NeQSVoAGju2dW0Ub5mItd18KZY-uqni0AwQskKlvqxgtXvrKME_DXnKCvM1UQR29PwxAbBg4NGro50csOG5ltJP8eG_OW8xS_L1gZGX9PtHFM1CTr0DnZEdx" width="624px;"></span></div>
This was not before trying out a Code the Road favorite&#8212;Pegman Skydiving. Using a camera, Maps APIs, and your arms the program can detect how you might look skydiving over a specific locale. <br /><div>
<span><img height="468px;" src="https://lh5.googleusercontent.com/Xqtg74AX3VEo8LaaZZMFMmFzgIcliCGK7bmRFniTqTB654T3shuWfpqazwYlbxEbkOyvfpnUl-Ku--9Bc8lP8o0f93icii9OYNQ61J4q8ECq4-mpVpebrPPvd79CQHi8ATjrbLl0" width="624px;"></span></div>
In the afternoon Kerstin Pittl, a lead engineer for Maps APIs from OniGroup, discussed how companies can use the &#8220;blue dot&#8221; on Google Maps in their applications and how partners can help them integrate it into their map.<br /><div>
<span><img height="468px;" src="https://lh5.googleusercontent.com/lOztO4El6XIQjztDvgnN6JNpENnxKNstn_1tWALCPLd2-K3WoY1J_UJBZd8eMPwNNfoeF63XIRX_bnnx4v_fNiErowjFM9FMGL9YLZntkesQ7nb-MH6vWSpmEIFy1krV0bMYmHZH" width="624px;"></span></div>
Pittl was followed by Dan Hubert, the founder of <a href="https://www.appyparking.com/">Appyparking</a>. Appyparking helps drivers across the United Kingdom understand parking regulations and find open parking spaces. The app color codes parking spots to show drivers where there&#8217;s free parking, where restrictions apply and where special types of spaces &#8211; such as electric-car charging and motorbike spots &#8211; are located.<br /><br />
We&#8217;re already planning our next roadtrip. We hope to see you at one of our future Code the Road stops! <br /><br /><i>Posted by Michael St. Germain, Associate Product Marketing Manager, Google Maps APIs</i>]]></description>
				<content:encoded><![CDATA[<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/YphCHJqBo3o" width="560"></iframe><br /></div>
We celebrated our last ‘Code the Road’ Europe stop in London where the team got an early start in our Code Lab building an Android app using the Google Maps APIs.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: 'Open Sans'; font-size: 16px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img height="468px;" src="https://lh6.googleusercontent.com/yGQ6ThkQPQ05I9C84W2wYgzE3F2GDytnLo9-yZwUcFOpCcyToH6E4Ye9SJo0Ns_rS6G7pgcVvsQbYV2v5BCidfKpFCMwKwq8l_GD0A_TM8uT509Fp1OS9cAwVvHgkG_e82T7JSl-" style="border: none; transform: rotate(0rad);" width="624px;" /></span></div>
Ed Boiling, Maps API sales engineer, led the Code Lab workshop where developers created an Android application using the Google Maps Android API and connected it to a Google Cloud Platform datastore. The Code Lab covered concepts including using Android Studio, creating a Google Maps activity, drawing data on the map, capturing the user's location, and adding location based rules to control the application logic. It also introduced the developers to Google Cloud Platform via the Cloud Endpoints integration in Android studio, allowing them to easily add and deploy a Google App Engine based API and datastore for their application to use.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: 'Open Sans'; font-size: 16px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img height="416px;" src="https://lh5.googleusercontent.com/vczc7Jiocc9gtCH2NeQSVoAGju2dW0Ub5mItd18KZY-uqni0AwQskKlvqxgtXvrKME_DXnKCvM1UQR29PwxAbBg4NGro50csOG5ltJP8eG_OW8xS_L1gZGX9PtHFM1CTr0DnZEdx" style="border: none; transform: rotate(0rad);" width="624px;" /></span></div>
This was not before trying out a Code the Road favorite—Pegman Skydiving. Using a camera, Maps APIs, and your arms the program can detect how you might look skydiving over a specific locale. <br />
<div class="separator" style="clear: both; text-align: center;">
<span style="background-color: white; color: #222222; font-family: 'Open Sans'; font-size: 16px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img height="468px;" src="https://lh5.googleusercontent.com/Xqtg74AX3VEo8LaaZZMFMmFzgIcliCGK7bmRFniTqTB654T3shuWfpqazwYlbxEbkOyvfpnUl-Ku--9Bc8lP8o0f93icii9OYNQ61J4q8ECq4-mpVpebrPPvd79CQHi8ATjrbLl0" style="border: none; transform: rotate(0rad);" width="624px;" /></span></div>
In the afternoon Kerstin Pittl, a lead engineer for Maps APIs from OniGroup, discussed how companies can use the “blue dot” on Google Maps in their applications and how partners can help them integrate it into their map.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="color: #263238; font-family: Roboto; font-size: 16px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img height="468px;" src="https://lh5.googleusercontent.com/lOztO4El6XIQjztDvgnN6JNpENnxKNstn_1tWALCPLd2-K3WoY1J_UJBZd8eMPwNNfoeF63XIRX_bnnx4v_fNiErowjFM9FMGL9YLZntkesQ7nb-MH6vWSpmEIFy1krV0bMYmHZH" style="border: none; transform: rotate(0rad);" width="624px;" /></span></div>
Pittl was followed by Dan Hubert, the founder of <a href="https://www.appyparking.com/">Appyparking</a>. Appyparking helps drivers across the United Kingdom understand parking regulations and find open parking spaces. The app color codes parking spots to show drivers where there’s free parking, where restrictions apply and where special types of spaces – such as electric-car charging and motorbike spots – are located.<br />
<br />
We’re already planning our next roadtrip. We hope to see you at one of our future Code the Road stops! <br />
<br />
<i>Posted by Michael St. Germain, Associate Product Marketing Manager, Google Maps APIs</i>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/code-the-road-europe-recap-our-last-stop-in-london/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Code the Road Europe Recap: The Hamburg Hackathon for Refugees</title>
		<link>https://googledata.org/google-maps/code-the-road-europe-recap-the-hamburg-hackathon-for-refugees/</link>
		<comments>https://googledata.org/google-maps/code-the-road-europe-recap-the-hamburg-hackathon-for-refugees/#comments</comments>
		<pubDate>Tue, 22 Dec 2015 17:17:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=c2309d2d228e963e41b5cea52c4ba542</guid>
		<description><![CDATA[<div>
<br /></div>
People around the world want to know how they can help the refugees and migrants caught up in the crisis in Europe, the Middle East and Northern Africa. As part of Code the Road Europe, we partnered with Ubilabs, a Google Maps for Work partner, to host a 24-hour hackathon dedicated to helping expand <a href="http://refugeemaps.eu/">RefugeeMaps.eu</a>, Ubilabs&#8217; open sourced platform to help the refugees in Hamburg and throughout Europe. <br /><br />
RefugeeMaps.eu highlights local points of interest that are relevant to refugees new to a particular area, including libraries, recreational facilities and other important landmarks. The goal is to take local knowledge from volunteers and make it easy for someone new to the area to orient themselves and find resources that will help them settle in quickly.<br /><div>
<span><img alt="IMG_3502.jpg" height="416px;" src="https://lh3.googleusercontent.com/cwpifUxIuaM8cbyawWA9FkMShQoxXWDsHEbsOiGB5SuTAIwZH-jBYBi8l0D1gYTwcQNUMOFuj_hpTC2sStm0L35vuJq7xdAEce5sWXl0eZnzguQax-3Mw--XLyx_4EjhEs5jEWnx" width="624px;"></span></div>
<span></span><br />
We kicked-off the hackathon with a presentation from Barbara Kopf, a refugee activist  and the manager of the institution &#8216;Freizeithaus Kirchdorf&#8217;. She provided context for what refugees need and how they can help. Then, we had Thomas Steiner, an engineer in the Google Hamburg office, and Martin Kleppe from Ubilabs talk about the technical aspects around the platform. To support the effort, Ed Boiling, Google Maps APIs Sales Engineer, presented 10 Google Maps APIs in 10 minutes, then it was time to start start coding.<br /><div>
<span><img alt="IMG_3505.jpg" height="416px;" src="https://lh5.googleusercontent.com/wvOkx2PLVay5sC8Pd-9Sv7IodOgk1Z4xfGdcO0knRKlIpuM18mPBXKcb0xjM06yCimTYVjXl3jhf_tWkUW1yxOd2AUAUgVGLGILcmItbLzyNT98cFMfb2CcYw3cog1Q1FbS18ESy" width="624px;"></span></div>
<span></span><br />
Six groups of developers formed and spent the rest of the night designing, coding, and working together to find ways to improve RefugeeMaps.eu with, of course, lots of coffee and snacks. <br /><div>
<span><img alt="IMG_3518.jpg" height="416px;" src="https://lh5.googleusercontent.com/sWI0fcmD5ios2sD0pBtH4q26Tif3EFxqLQUQL1QAdDmyXmJby92MbtEJUOyUFuhqZ7dfon7IjAgwb0gdRmuzOkVe2WkbrY2SPe41Y9ZzRdbOViKPVABvmRF-5kwut_NkxlVR6_Fi" width="624px;"></span></div>
<span></span><br />
After 24 hours, we all came together to review the improvements which included:<br /><br /><ul><li>Improvement to the front end design and UX optimization based on language preferences, making it easier for refugees to navigate the platform based on their preference for Arabic, English or German.</li>
<li>A function that makes it easier for refugees to print out select, zoomed-in areas of the map. Not all refugees have cell phones, especially women and children, so one group decided it was important to make sure it was easy for someone to print out maps to make it truly offline.</li>
<li>Addition of new places. Currently, only local volunteers with access to a master spreadsheet can add locations; however, one group added a function that makes it easier for anyone to add in a location through the interface of the map. This then updates the master spreadsheet.</li>
<li>A native offline Android app. Offline is important for the refugees that might not have data plans, so one group created a native Android app that could be used offline.</li>
<li>No server solution. To make it easier to run the platform, developers made a solution that did not require a server-side.</li>
<li>A performance boost. Developers added back-end changes to allow for caching of resources for offline use.</li>
</ul><br />
Here is the improvement we made to the front end design:<br /><div>
<span><img alt="front_end_design_update.png" height="297px;" src="https://lh3.googleusercontent.com/GHA1fNo8ywrg2v1RWqziRWFQr855ZauIzgZIUpwteTBpqDou5Rw9DVxxN4TO8MpOUNwVhpdZ9AKz2eM0UtZC-NJNNvQVMgtVv3gm2L55x6FnYo2zghVcLZqevGEuD5ICR0fh36XU" width="624px;"></span></div>
<span></span><br />
We were so impressed by all of the improvements that the developers made over the 24 hour period. While the hackathon is officially over, we also extend our invitation to collaborate on the project to external developers who could not attend the hackathon. You can find the code and all info on <a href="https://github.com/refugeemaps/refugeemaps">GitHub</a> as well as a live demo instance of <a href="http://refugeemaps.eu/">RefugeeMaps.eu</a> online. <br /><br /><i>Posted by Hena Haines, Product Marketing Manager, Google Maps APIs</i>]]></description>
				<content:encoded><![CDATA[<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/9o5iFSzdxP0" width="560"></iframe><br /></div>
People around the world want to know how they can help the refugees and migrants caught up in the crisis in Europe, the Middle East and Northern Africa. As part of Code the Road Europe, we partnered with Ubilabs, a Google Maps for Work partner, to host a 24-hour hackathon dedicated to helping expand <a href="http://refugeemaps.eu/">RefugeeMaps.eu</a>, Ubilabs’ open sourced platform to help the refugees in Hamburg and throughout Europe. <br />
<br />
RefugeeMaps.eu highlights local points of interest that are relevant to refugees new to a particular area, including libraries, recreational facilities and other important landmarks. The goal is to take local knowledge from volunteers and make it easy for someone new to the area to orient themselves and find resources that will help them settle in quickly.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Arial; font-size: 14.6667px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="IMG_3502.jpg" height="416px;" src="https://lh3.googleusercontent.com/cwpifUxIuaM8cbyawWA9FkMShQoxXWDsHEbsOiGB5SuTAIwZH-jBYBi8l0D1gYTwcQNUMOFuj_hpTC2sStm0L35vuJq7xdAEce5sWXl0eZnzguQax-3Mw--XLyx_4EjhEs5jEWnx" style="border: none; transform: rotate(0rad);" width="624px;" /></span></div>
<span id="docs-internal-guid-2a64adfe-caae-2c9e-97f5-86bb0c3028cc"></span><br />
We kicked-off the hackathon with a presentation from Barbara Kopf, a refugee activist  and the manager of the institution ‘Freizeithaus Kirchdorf’. She provided context for what refugees need and how they can help. Then, we had Thomas Steiner, an engineer in the Google Hamburg office, and Martin Kleppe from Ubilabs talk about the technical aspects around the platform. To support the effort, Ed Boiling, Google Maps APIs Sales Engineer, presented 10 Google Maps APIs in 10 minutes, then it was time to start start coding.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Arial; font-size: 14.6667px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="IMG_3505.jpg" height="416px;" src="https://lh5.googleusercontent.com/wvOkx2PLVay5sC8Pd-9Sv7IodOgk1Z4xfGdcO0knRKlIpuM18mPBXKcb0xjM06yCimTYVjXl3jhf_tWkUW1yxOd2AUAUgVGLGILcmItbLzyNT98cFMfb2CcYw3cog1Q1FbS18ESy" style="border: none; transform: rotate(0rad);" width="624px;" /></span></div>
<span id="docs-internal-guid-2a64adfe-caae-5f13-c641-032d6be1e1a6"></span><br />
Six groups of developers formed and spent the rest of the night designing, coding, and working together to find ways to improve RefugeeMaps.eu with, of course, lots of coffee and snacks. <br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Arial; font-size: 14.6667px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="IMG_3518.jpg" height="416px;" src="https://lh5.googleusercontent.com/sWI0fcmD5ios2sD0pBtH4q26Tif3EFxqLQUQL1QAdDmyXmJby92MbtEJUOyUFuhqZ7dfon7IjAgwb0gdRmuzOkVe2WkbrY2SPe41Y9ZzRdbOViKPVABvmRF-5kwut_NkxlVR6_Fi" style="border: none; transform: rotate(0rad);" width="624px;" /></span></div>
<span id="docs-internal-guid-2a64adfe-caae-8f32-958d-0ebaa35911f4"></span><br />
After 24 hours, we all came together to review the improvements which included:<br />
<br />
<ul>
<li>Improvement to the front end design and UX optimization based on language preferences, making it easier for refugees to navigate the platform based on their preference for Arabic, English or German.</li>
<li>A function that makes it easier for refugees to print out select, zoomed-in areas of the map. Not all refugees have cell phones, especially women and children, so one group decided it was important to make sure it was easy for someone to print out maps to make it truly offline.</li>
<li>Addition of new places. Currently, only local volunteers with access to a master spreadsheet can add locations; however, one group added a function that makes it easier for anyone to add in a location through the interface of the map. This then updates the master spreadsheet.</li>
<li>A native offline Android app. Offline is important for the refugees that might not have data plans, so one group created a native Android app that could be used offline.</li>
<li>No server solution. To make it easier to run the platform, developers made a solution that did not require a server-side.</li>
<li>A performance boost. Developers added back-end changes to allow for caching of resources for offline use.</li>
</ul>
<br />
Here is the improvement we made to the front end design:<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Arial; font-size: 14.6667px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="front_end_design_update.png" height="297px;" src="https://lh3.googleusercontent.com/GHA1fNo8ywrg2v1RWqziRWFQr855ZauIzgZIUpwteTBpqDou5Rw9DVxxN4TO8MpOUNwVhpdZ9AKz2eM0UtZC-NJNNvQVMgtVv3gm2L55x6FnYo2zghVcLZqevGEuD5ICR0fh36XU" style="border: none; transform: rotate(0rad);" width="624px;" /></span></div>
<span id="docs-internal-guid-2a64adfe-caaf-133f-ef5b-d39a9b4a051b"></span><br />
We were so impressed by all of the improvements that the developers made over the 24 hour period. While the hackathon is officially over, we also extend our invitation to collaborate on the project to external developers who could not attend the hackathon. You can find the code and all info on <a href="https://github.com/refugeemaps/refugeemaps">GitHub</a> as well as a live demo instance of <a href="http://refugeemaps.eu/">RefugeeMaps.eu</a> online. <br />
<br />
<i>Posted by Hena Haines, Product Marketing Manager, Google Maps APIs</i>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/code-the-road-europe-recap-the-hamburg-hackathon-for-refugees/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Code the Road Europe Recap: Our Visit to Berlin for a Developer Meetup</title>
		<link>https://googledata.org/google-maps/code-the-road-europe-recap-our-visit-to-berlin-for-a-developer-meetup/</link>
		<comments>https://googledata.org/google-maps/code-the-road-europe-recap-our-visit-to-berlin-for-a-developer-meetup/#comments</comments>
		<pubDate>Mon, 21 Dec 2015 17:42:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=2542edb341dc703076c9a2f81d924423</guid>
		<description><![CDATA[<div>
<br /></div>
After a great trip to Tel Aviv, we were excited to be in Germany with our Code the Road bus. Our first stop was in Berlin, and then we were on to Hamburg for our 24-hour Hackathon. <br /><br />
We hosted our first event in <i>the Factory</i>, Germany's largest startup campus. The Factory provides working spaces, communities and events for freelancers and startups to connect and empowers entrepreneurs and innovators in a beautiful space in Berlin.<br /><div>
<span><img alt="IMG_4166.jpg" height="468px;" src="https://lh5.googleusercontent.com/ezF7_bbVbNCG-g_8w7IkH0CKcWqFO5umiKQLmWaXGFLfvvP6ptzThEafXIeHBm8ChS4XBDlculXNWdJuD9a6ycEux1WTXIzcyOg4qLdbA-iPLpKToBsLlPua7eljqH_KP8QyEpZj" width="624px;"></span></div>
<span></span><br />
Before the event developers had a great time exploring the Code the Road bus and enjoying a coffee at our Location Cafe. They also had a chance to play multiple games including the Maps Skydiving game.<br /><div>
<span><img alt="IMG_4161.jpg" height="468px;" src="https://lh6.googleusercontent.com/nIJIgdmPzLStYnTJpdPBE8xa9Hh2vFXUNCi6Ih6zLBPdDrpGw1A2RV-6w7pTO40bVy694rWHlWPWv6PoPzi7upF6AlIGB470GC-fAz3b2njV2rojG6Ac9kI0Eo8zgRnHZv4uwCae" width="624px;"></span></div>
<span></span><br />
Ed Boiling and Matt Toon kicked-off the event with a great Codelab focused on building an app that allows users to check into any mountain when going on a hike or visiting a new destination. Corien, a web developer and student, said, &#8220;It was great to learn more how to use Google Maps APIs on Android, a platform I don&#8217;t usually develop on as well as learn from the other developers at the event. It was great to see everyone working together and learning a thing or two about Google Maps APIs.&#8221;<br /><div>
<span><img alt="IMG_4163.jpg" height="441px;" src="https://lh6.googleusercontent.com/wF2Lvoe8TvrncKVtTISuezuLFIcJvsmQRLzi7LzeACXJccvPfLpPgHAB80Tu-FhaJI4cqwNA_qSjlKOpEPFooTo9RzPvzaXGpjiNbDMZqIwDEmyKgfQqCGVT__V7A8up-TkFIhnM" width="588px;"></span></div>
<span></span><br />
Then, we had Ed Parsons kick off our presentation by explaining how location technology is changing the way we interact with the world to create a more dynamic, emotive experience. <br /><br />
Next up, Oliver from Kia Motors spoke about how Kia is using Google Maps APIs in the <a href="http://www.kia.com/eu/campaigns-and-redirects/surprisedrive/">Kia cee&#8217;d Surprise Drive digital marketing campaign</a>. Martin Kleppe from Ubilabs followed up with the specific technical points on how this digital marketing campaign was developed with Distance Matrix API, Directions API and custom pins.  He also gave our attendees some tips and tricks about how to get their maps looking snazzy with Image Tiles, clustering, Marker Images, Data Layer and more. He even share his <a href="https://speakerdeck.com/aemkei/code-the-road-berlin">presentation</a> for our attendees to reference.<br /><div>
<span><img alt="IMG_4273 (1).JPG" height="365px;" src="https://lh6.googleusercontent.com/R7jE_LAtxjg38NQbPY_VxtYEVWyEKKJAoj2g7rTx8v9sQbHtG2V7LYxTvHeW9oAZKjuqkseFtiXhbBadxY38yzL5laWz6pJSW7GfBpz-GWOxjkw3BGaYIxCGeo8k02T1T_FdFeti" width="487px;"></span></div>
<span></span><br />
Finally, our technical lead from Sydney, Enoch, presented on a range of topics from keys to quotas to JavaScripts tips and tricks. <br /><br />
Shenouda, a developer from Egypt told us, &#8220;The presentations gave a great overview of the functionality of the technology and how to use the APIs to the best of their abilities.&#8221; He plans to take what he learned on styling and overlaying data on a map as well as using the Elevation API to incorporate into applications to give users a really interactive and exciting user experience. <br /><br />
We had a great time in Berlin. Next we were on to Hamburg and London!<br /><br /><i>Posted by Tobias Espig, Head of Global Field Marketing, Google Maps APIs</i>]]></description>
				<content:encoded><![CDATA[<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/KzOO9rxdyF8" width="560"></iframe><br /></div>
After a great trip to Tel Aviv, we were excited to be in Germany with our Code the Road bus. Our first stop was in Berlin, and then we were on to Hamburg for our 24-hour Hackathon. <br />
<br />
We hosted our first event in <i>the Factory</i>, Germany's largest startup campus. The Factory provides working spaces, communities and events for freelancers and startups to connect and empowers entrepreneurs and innovators in a beautiful space in Berlin.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Arial; font-size: 14.6667px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="IMG_4166.jpg" height="468px;" src="https://lh5.googleusercontent.com/ezF7_bbVbNCG-g_8w7IkH0CKcWqFO5umiKQLmWaXGFLfvvP6ptzThEafXIeHBm8ChS4XBDlculXNWdJuD9a6ycEux1WTXIzcyOg4qLdbA-iPLpKToBsLlPua7eljqH_KP8QyEpZj" style="border: none; transform: rotate(0rad);" width="624px;" /></span></div>
<span id="docs-internal-guid-287f3a17-c59f-759a-19b7-ed608f465245"></span><br />
Before the event developers had a great time exploring the Code the Road bus and enjoying a coffee at our Location Cafe. They also had a chance to play multiple games including the Maps Skydiving game.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Arial; font-size: 14.6667px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="IMG_4161.jpg" height="468px;" src="https://lh6.googleusercontent.com/nIJIgdmPzLStYnTJpdPBE8xa9Hh2vFXUNCi6Ih6zLBPdDrpGw1A2RV-6w7pTO40bVy694rWHlWPWv6PoPzi7upF6AlIGB470GC-fAz3b2njV2rojG6Ac9kI0Eo8zgRnHZv4uwCae" style="border: none; transform: rotate(0rad);" width="624px;" /></span></div>
<span id="docs-internal-guid-287f3a17-c59f-e004-e48b-02a4a43958ff"></span><br />
Ed Boiling and Matt Toon kicked-off the event with a great Codelab focused on building an app that allows users to check into any mountain when going on a hike or visiting a new destination. Corien, a web developer and student, said, “It was great to learn more how to use Google Maps APIs on Android, a platform I don’t usually develop on as well as learn from the other developers at the event. It was great to see everyone working together and learning a thing or two about Google Maps APIs.”<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Arial; font-size: 14.6667px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="IMG_4163.jpg" height="441px;" src="https://lh6.googleusercontent.com/wF2Lvoe8TvrncKVtTISuezuLFIcJvsmQRLzi7LzeACXJccvPfLpPgHAB80Tu-FhaJI4cqwNA_qSjlKOpEPFooTo9RzPvzaXGpjiNbDMZqIwDEmyKgfQqCGVT__V7A8up-TkFIhnM" style="border: none; transform: rotate(0rad);" width="588px;" /></span></div>
<span id="docs-internal-guid-287f3a17-c5a0-2297-b48b-5f12daf76727"></span><br />
Then, we had Ed Parsons kick off our presentation by explaining how location technology is changing the way we interact with the world to create a more dynamic, emotive experience. <br />
<br />
Next up, Oliver from Kia Motors spoke about how Kia is using Google Maps APIs in the <a href="http://www.kia.com/eu/campaigns-and-redirects/surprisedrive/">Kia cee’d Surprise Drive digital marketing campaign</a>. Martin Kleppe from Ubilabs followed up with the specific technical points on how this digital marketing campaign was developed with Distance Matrix API, Directions API and custom pins.  He also gave our attendees some tips and tricks about how to get their maps looking snazzy with Image Tiles, clustering, Marker Images, Data Layer and more. He even share his <a href="https://speakerdeck.com/aemkei/code-the-road-berlin">presentation</a> for our attendees to reference.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Arial; font-size: 14.6667px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="IMG_4273 (1).JPG" height="365px;" src="https://lh6.googleusercontent.com/R7jE_LAtxjg38NQbPY_VxtYEVWyEKKJAoj2g7rTx8v9sQbHtG2V7LYxTvHeW9oAZKjuqkseFtiXhbBadxY38yzL5laWz6pJSW7GfBpz-GWOxjkw3BGaYIxCGeo8k02T1T_FdFeti" style="border: none; transform: rotate(0rad);" width="487px;" /></span></div>
<span id="docs-internal-guid-287f3a17-c5a1-385c-926a-e32e2b5a0b4c"></span><br />
Finally, our technical lead from Sydney, Enoch, presented on a range of topics from keys to quotas to JavaScripts tips and tricks. <br />
<br />
Shenouda, a developer from Egypt told us, “The presentations gave a great overview of the functionality of the technology and how to use the APIs to the best of their abilities.” He plans to take what he learned on styling and overlaying data on a map as well as using the Elevation API to incorporate into applications to give users a really interactive and exciting user experience. <br />
<br />
We had a great time in Berlin. Next we were on to Hamburg and London!<br />
<br />
<i>Posted by Tobias Espig, Head of Global Field Marketing, Google Maps APIs</i>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/code-the-road-europe-recap-our-visit-to-berlin-for-a-developer-meetup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Code the Road Europe Recap: Our first stop in Tel Aviv</title>
		<link>https://googledata.org/google-maps/code-the-road-europe-recap-our-first-stop-in-tel-aviv/</link>
		<comments>https://googledata.org/google-maps/code-the-road-europe-recap-our-first-stop-in-tel-aviv/#comments</comments>
		<pubDate>Fri, 18 Dec 2015 18:12:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=da0c01ea65fc1690d62c1f5397db1a68</guid>
		<description><![CDATA[<div>
<br /></div>
We had a fantastic start to our <a href="https://codetheroad.developers.google.com/">&#8216;Code the Road&#8217; Europe tour</a> at the Google Tel Aviv Campus.  We were thrilled to have so many enthusiastic developers to help kick off our first event.  <br /><br />
It was great to be in Tel Aviv to feel the excitement and energy of their thriving startup community and to see how these talented developers were using location and Google Maps APIs in their applications. <br /><br />
There we brought a Maps Dive gaming experience to the campus area as well as a full-size copy our Code the Road 1970s Volkswagen Tour bus. (The actual bus and the trailer were waiting for us in Berlin for our next stop on the 12th of November)<br /><div>
<span><img alt="_DSC0252.JPG" height="425" src="https://lh3.googleusercontent.com/zEEhw0NEx2zLIMaa-OfslJcOcja3Dvu1nwH7hjNf427uIaDni_DRoh3Nr5txOb5HjrlHa3BqqrA5xioCK_iox0zheOLITGUV_Q4k710SHhIe4j0pvhZmyn-8YXZrhQ0n9yS4-Xs-" width="640"></span></div>
<span></span><br />
For our first talk, Ed Parsons, Geospatial Technologist, Google Maps, gave a talk  titled "Everything, everywhere: The evolving world of ambient location.&#8221; Next up was, Enoch Lau, Technical Lead, Javascript Maps API, who gave some tricks and tips to make Google Maps APIs run even smoother. <br /><div>
<span><img alt="_DSC0198.JPG" height="416px;" src="https://lh3.googleusercontent.com/cHvRVioESioZ4cC2xL8N8zzMmuIP0ysi8vohRb7J1sMzmCo_2lNYYQOLzX3WxQpUhwqHnnUU3LmQrUeaqNi8287ASrc5TQjlGnK1ViY2PS4n_rYmyYslJ3NHbDc5WRrALsYVVzrh" width="624px;"></span></div>
<span></span><br />
We also welcomed Lidor Dvir, Head of Development from Gett who shared a talk titled "Using Google Maps API to build a multi-million user product". Lidor presented on how Gett uses multiple Google Maps APIs on multiple platforms to help both users and businesses get where they need to go and get the things they need. He described how the Google Maps Places API, Directions API and Roads APIs helps users easily find the places they need to go and the best way to get there. They also use heat maps, marker clustering, customize markers and animations to layer information on the map in beautiful visualizations.<br /><br />
We spent the afternoon with a packed house for Codelab were we built a &#8216;Munro bagging&#8217; Android app on Google Maps and Google Cloud Platform. We had a great time working with the developers helping them with the app.<br /><div>
<span><img alt="_DSC0238.JPG" height="416px;" src="https://lh4.googleusercontent.com/0zGuRHuKgajAKctRnTSry7zUGSpmqnjl9c4h8YCLvXNBeD_XEFTlHMLQyeEvFzNTKbLADRxoi9N8CnuIuqyoF_BNR0jVnOYCjNt_DSxUhCrMzTwju8yC7yUiuvM0q_MX8K_LA9Bq" width="624px;"></span></div>
<span></span><br />
Tel Aviv was just the start of our journey. The next stop was Berlin!<br /><br /><i>Posted by Tobias Espig, Head of Global Field Marketing, Google Maps APIs</i>]]></description>
				<content:encoded><![CDATA[<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/PZmNpIZfdRM" width="560"></iframe><br /></div>
We had a fantastic start to our <a href="https://codetheroad.developers.google.com/">‘Code the Road’ Europe tour</a> at the Google Tel Aviv Campus.  We were thrilled to have so many enthusiastic developers to help kick off our first event.  <br />
<br />
It was great to be in Tel Aviv to feel the excitement and energy of their thriving startup community and to see how these talented developers were using location and Google Maps APIs in their applications. <br />
<br />
There we brought a Maps Dive gaming experience to the campus area as well as a full-size copy our Code the Road 1970s Volkswagen Tour bus. (The actual bus and the trailer were waiting for us in Berlin for our next stop on the 12th of November)<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: &quot;open sans&quot;; font-size: 16px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="_DSC0252.JPG" height="425" src="https://lh3.googleusercontent.com/zEEhw0NEx2zLIMaa-OfslJcOcja3Dvu1nwH7hjNf427uIaDni_DRoh3Nr5txOb5HjrlHa3BqqrA5xioCK_iox0zheOLITGUV_Q4k710SHhIe4j0pvhZmyn-8YXZrhQ0n9yS4-Xs-" style="border: none; transform: rotate(0rad);" width="640" /></span></div>
<span id="docs-internal-guid-f8b00664-b648-6af2-32fe-3e83e5bc51e0"></span><br />
For our first talk, Ed Parsons, Geospatial Technologist, Google Maps, gave a talk  titled "Everything, everywhere: The evolving world of ambient location.” Next up was, Enoch Lau, Technical Lead, Javascript Maps API, who gave some tricks and tips to make Google Maps APIs run even smoother. <br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: &quot;open sans&quot;; font-size: 16px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="_DSC0198.JPG" height="416px;" src="https://lh3.googleusercontent.com/cHvRVioESioZ4cC2xL8N8zzMmuIP0ysi8vohRb7J1sMzmCo_2lNYYQOLzX3WxQpUhwqHnnUU3LmQrUeaqNi8287ASrc5TQjlGnK1ViY2PS4n_rYmyYslJ3NHbDc5WRrALsYVVzrh" style="border: none; transform: rotate(0rad);" width="624px;" /></span></div>
<span id="docs-internal-guid-f8b00664-b648-afb2-5452-94fc4f037a82"></span><br />
We also welcomed Lidor Dvir, Head of Development from Gett who shared a talk titled "Using Google Maps API to build a multi-million user product". Lidor presented on how Gett uses multiple Google Maps APIs on multiple platforms to help both users and businesses get where they need to go and get the things they need. He described how the Google Maps Places API, Directions API and Roads APIs helps users easily find the places they need to go and the best way to get there. They also use heat maps, marker clustering, customize markers and animations to layer information on the map in beautiful visualizations.<br />
<br />
We spent the afternoon with a packed house for Codelab were we built a ‘Munro bagging’ Android app on Google Maps and Google Cloud Platform. We had a great time working with the developers helping them with the app.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: &quot;open sans&quot;; font-size: 16px; font-weight: 700; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="_DSC0238.JPG" height="416px;" src="https://lh4.googleusercontent.com/0zGuRHuKgajAKctRnTSry7zUGSpmqnjl9c4h8YCLvXNBeD_XEFTlHMLQyeEvFzNTKbLADRxoi9N8CnuIuqyoF_BNR0jVnOYCjNt_DSxUhCrMzTwju8yC7yUiuvM0q_MX8K_LA9Bq" style="border: none; transform: rotate(0rad);" width="624px;" /></span></div>
<span id="docs-internal-guid-f8b00664-b648-eb12-036a-2e1352ff1a35"></span><br />
Tel Aviv was just the start of our journey. The next stop was Berlin!<br />
<br />
<i>Posted by Tobias Espig, Head of Global Field Marketing, Google Maps APIs</i>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/code-the-road-europe-recap-our-first-stop-in-tel-aviv/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>New Autocomplete widget helps users with places and address entry in mobile apps</title>
		<link>https://googledata.org/google-maps/new-autocomplete-widget-helps-users-with-places-and-address-entry-in-mobile-apps/</link>
		<comments>https://googledata.org/google-maps/new-autocomplete-widget-helps-users-with-places-and-address-entry-in-mobile-apps/#comments</comments>
		<pubDate>Fri, 18 Dec 2015 00:02:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=2af95e1781741c68ee89587ef4fa3103</guid>
		<description><![CDATA[<span><i>Posted by Florian Bertele, Product Manager, Google Places API</i></span><br /><br />
Today, we're announcing two new ways to help users enter places and addresses in your apps with less typing. Autocomplete functionality assists users by automatically completing the name and address of a place as they type. The autocomplete widget on <a href="https://developers.google.com/places/ios-api/autocomplete">iOS</a> and <a href="https://developers.google.com/places/android-api/autocomplete">Android</a> makes it easier for you to add autocomplete functionality to your application with just a small amount of code. Also, we are adding autocomplete functionality to the <a href="https://developers.google.com/places/android-api/placepicker">place picker</a>.  <br /><br />
The new autocomplete widget UI comes in two different flavors: overlay and full screen.<br /><table align="center" cellpadding="0" cellspacing="0"><tbody><tr><td><a href="http://4.bp.blogspot.com/-HW4jJhphtPQ/VnNMWNtyxDI/AAAAAAAAAdk/8OellJq0OXs/s1600/1b.gif"><img border="0" height="400" src="http://4.bp.blogspot.com/-HW4jJhphtPQ/VnNMWNtyxDI/AAAAAAAAAdk/8OellJq0OXs/s400/1b.gif" width="328"></a></td></tr><tr><td>Full screen autocomplete widget</td></tr></tbody></table><table align="center" cellpadding="0" cellspacing="0"><tbody><tr><td><a href="http://1.bp.blogspot.com/-kPgvFGPXGxs/VnNMkLUkk4I/AAAAAAAAAds/2Y4iwGlEFhA/s1600/2b.gif"><img border="0" height="400" src="http://1.bp.blogspot.com/-kPgvFGPXGxs/VnNMkLUkk4I/AAAAAAAAAds/2Y4iwGlEFhA/s400/2b.gif" width="328"></a></td></tr><tr><td><br /><div>
<span>Overlay autocomplete widget</span></div>
</td></tr></tbody></table>
On Android, you can add the autocomplete widget as a <a href="http://developer.android.com/reference/android/app/Fragment.html">Fragment</a> and add an event listener to retrieve the autocompleted place reference back in the application. Alternatively, you can invoke the autocomplete widget with an <a href="http://developer.android.com/reference/android/content/Intent.html">Intent</a>.<br /><br />
Adding a Fragment In the XML layout file for your Activity:<br /><pre>&#60;fragment
  android:id="@+id/place_autocomplete_fragment"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
android:name="com.google.android.gms.location.places.ui.PlaceAutocompleteFragment"
  /&#62;</pre>
<br />
Adding an Event Listener in your Activity's onCreate() method:<br /><pre>// 
PlaceAutocompleteFragment fragment = (PlaceAutocompleteFragment)
    getFragmentManager().findFragmentById(R.id.place_autocomplete_fragment);

fragment.setOnPlaceSelectedListener(new PlaceSelectionListener() {
   @Override
   public void onPlaceSelected(Place place) { // Handle the selected Place
   }
   @Override
   public void onError(Status status) { // Handle the error
   }</pre>
<br />
Creating an intent to invoke the autocomplete widget:<br /><pre>try {
   Intent intent =
            new PlaceAutocomplete.IntentBuilder(PlaceAutocomplete.MODE_FULLSCREEN)
           .build(this);
   startActivityForResult(intent, PLACE_AUTOCOMPLETE_REQUEST_CODE);
} catch (GooglePlayServicesRepairableException e) {
   GooglePlayServicesUtil
           .getErrorDialog(e.getConnectionStatusCode(), getActivity(), 0);
} catch (GooglePlayServicesNotAvailableException e) {
   // Handle the exception
}</pre>
<br />
On iOS (Objective-C), you can implement autocomplete&#8217;s delegate to respond to a place selection:<br /><pre>@interface MyViewController () 
@end

@implementation ViewController
.
.
.
- (IBAction)onLaunchClicked:(id)sender {
  // Present the Autocomplete view controller when the button is pressed.
  GMSAutocompleteViewController *acController = [[GMSAutocompleteViewController alloc] init];
  acController.delegate = self;
  [self presentViewController:acController animated:YES completion:nil];
}

- (void)viewController:(GMSAutocompleteViewController *)viewController
    didAutocompleteWithPlace:(GMSPlace *)place {
  // The user has selected a place.
  [self dismissViewControllerAnimated:YES completion:nil];
}

- (void)viewController:(GMSAutocompleteViewController *)viewController
    didAutocompleteWithError:(NSError *)error {
  [self dismissViewControllerAnimated:YES completion:nil];
}

// User pressed cancel button.
- (void)wasCancelled:(GMSAutocompleteViewController *)viewController {
  [self dismissViewControllerAnimated:YES completion:nil];
}

@end</pre>
<br />
And in Swift:<br /><pre>import UIKit
import GoogleMaps

class MyViewController: UIViewController {
    
    @IBAction func onLaunchClicked(sender: AnyObject) {
        let acController = GMSAutocompleteViewController()
        acController.delegate = self
        self.presentViewController(acController, animated: true, completion: nil)
    }
}

extension MyViewController: GMSAutocompleteViewControllerDelegate {
    
    func viewController(viewController: GMSAutocompleteViewController!, didAutocompleteWithPlace place: GMSPlace!) {
        // The user has selected a place.
        self.dismissViewControllerAnimated(true, completion: nil)
    }
    
    func viewController(viewController: GMSAutocompleteViewController!, didAutocompleteWithError error: NSError!) {
        self.dismissViewControllerAnimated(true, completion: nil)
    }
    
    func wasCancelled(viewController: GMSAutocompleteViewController!) {
        self.dismissViewControllerAnimated(true, completion: nil)
    }
}</pre>
<br />
We have also added the autocomplete functionality to the <a href="https://developers.google.com/places/android-api/placepicker">place picker</a>&#8212;a UI widget that helps users communicate their current location, such as a place, address or location on a map.  This makes it even easier to pick a specific place by starting to type its name or address. If your app already uses  the place picker it will automatically gain the autocomplete feature with no action required on your part.<br /><div>
<a href="http://2.bp.blogspot.com/-hK0rI3vb4FU/VnNM8tZiqMI/AAAAAAAAAd0/iVF-j1Tr2_A/s1600/3b.gif"><img border="0" height="400" src="http://2.bp.blogspot.com/-hK0rI3vb4FU/VnNM8tZiqMI/AAAAAAAAAd0/iVF-j1Tr2_A/s400/3b.gif" width="328"></a></div>
To get started, check out the documentation and <a href="https://developers.google.com/places/android-api/code-samples">code samples</a>. You can always send us any questions via <a href="http://stackoverflow.com/questions/tagged/google-places-api">Stack Overflow</a> or the Google Maps API <a href="https://code.google.com/p/gmaps-api-issues/">issue tracker</a> if you have ideas for improvement.<br /><br /><br />]]></description>
				<content:encoded><![CDATA[<span class="post-author"><i>Posted by Florian Bertele, Product Manager, Google Places API</i></span><br />
<br />
Today, we're announcing two new ways to help users enter places and addresses in your apps with less typing. Autocomplete functionality assists users by automatically completing the name and address of a place as they type. The autocomplete widget on <a href="https://developers.google.com/places/ios-api/autocomplete">iOS</a> and <a href="https://developers.google.com/places/android-api/autocomplete">Android</a> makes it easier for you to add autocomplete functionality to your application with just a small amount of code. Also, we are adding autocomplete functionality to the <a href="https://developers.google.com/places/android-api/placepicker">place picker</a>.  <br />
<br />
The new autocomplete widget UI comes in two different flavors: overlay and full screen.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-HW4jJhphtPQ/VnNMWNtyxDI/AAAAAAAAAdk/8OellJq0OXs/s1600/1b.gif" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="400" src="http://4.bp.blogspot.com/-HW4jJhphtPQ/VnNMWNtyxDI/AAAAAAAAAdk/8OellJq0OXs/s400/1b.gif" width="328" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Full screen autocomplete widget</td></tr>
</tbody></table>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-kPgvFGPXGxs/VnNMkLUkk4I/AAAAAAAAAds/2Y4iwGlEFhA/s1600/2b.gif" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="400" src="http://1.bp.blogspot.com/-kPgvFGPXGxs/VnNMkLUkk4I/AAAAAAAAAds/2Y4iwGlEFhA/s400/2b.gif" width="328" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><br />
<div class="p1">
<span class="s1">Overlay autocomplete widget</span></div>
</td></tr>
</tbody></table>
On Android, you can add the autocomplete widget as a <a href="http://developer.android.com/reference/android/app/Fragment.html">Fragment</a> and add an event listener to retrieve the autocompleted place reference back in the application. Alternatively, you can invoke the autocomplete widget with an <a href="http://developer.android.com/reference/android/content/Intent.html">Intent</a>.<br />
<br />
Adding a Fragment In the XML layout file for your Activity:<br />
<pre>&lt;fragment
  android:id="@+id/place_autocomplete_fragment"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
android:name="com.google.android.gms.location.places.ui.PlaceAutocompleteFragment"
  /&gt;</pre>
<br />
Adding an Event Listener in your Activity's onCreate() method:<br />
<pre>// 
PlaceAutocompleteFragment fragment = (PlaceAutocompleteFragment)
    getFragmentManager().findFragmentById(R.id.place_autocomplete_fragment);

fragment.setOnPlaceSelectedListener(new PlaceSelectionListener() {
   @Override
   public void onPlaceSelected(Place place) { // Handle the selected Place
   }
   @Override
   public void onError(Status status) { // Handle the error
   }</pre>
<br />
Creating an intent to invoke the autocomplete widget:<br />
<pre>try {
   Intent intent =
            new PlaceAutocomplete.IntentBuilder(PlaceAutocomplete.MODE_FULLSCREEN)
           .build(this);
   startActivityForResult(intent, PLACE_AUTOCOMPLETE_REQUEST_CODE);
} catch (GooglePlayServicesRepairableException e) {
   GooglePlayServicesUtil
           .getErrorDialog(e.getConnectionStatusCode(), getActivity(), 0);
} catch (GooglePlayServicesNotAvailableException e) {
   // Handle the exception
}</pre>
<br />
On iOS (Objective-C), you can implement autocomplete’s delegate to respond to a place selection:<br />
<pre>@interface MyViewController () <gmsautocompleteviewcontrollerdelegate>
@end

@implementation ViewController
.
.
.
- (IBAction)onLaunchClicked:(id)sender {
  // Present the Autocomplete view controller when the button is pressed.
  GMSAutocompleteViewController *acController = [[GMSAutocompleteViewController alloc] init];
  acController.delegate = self;
  [self presentViewController:acController animated:YES completion:nil];
}

- (void)viewController:(GMSAutocompleteViewController *)viewController
    didAutocompleteWithPlace:(GMSPlace *)place {
  // The user has selected a place.
  [self dismissViewControllerAnimated:YES completion:nil];
}

- (void)viewController:(GMSAutocompleteViewController *)viewController
    didAutocompleteWithError:(NSError *)error {
  [self dismissViewControllerAnimated:YES completion:nil];
}

// User pressed cancel button.
- (void)wasCancelled:(GMSAutocompleteViewController *)viewController {
  [self dismissViewControllerAnimated:YES completion:nil];
}

@end</gmsautocompleteviewcontrollerdelegate></pre>
<br />
And in Swift:<br />
<pre>import UIKit
import GoogleMaps

class MyViewController: UIViewController {
    
    @IBAction func onLaunchClicked(sender: AnyObject) {
        let acController = GMSAutocompleteViewController()
        acController.delegate = self
        self.presentViewController(acController, animated: true, completion: nil)
    }
}

extension MyViewController: GMSAutocompleteViewControllerDelegate {
    
    func viewController(viewController: GMSAutocompleteViewController!, didAutocompleteWithPlace place: GMSPlace!) {
        // The user has selected a place.
        self.dismissViewControllerAnimated(true, completion: nil)
    }
    
    func viewController(viewController: GMSAutocompleteViewController!, didAutocompleteWithError error: NSError!) {
        self.dismissViewControllerAnimated(true, completion: nil)
    }
    
    func wasCancelled(viewController: GMSAutocompleteViewController!) {
        self.dismissViewControllerAnimated(true, completion: nil)
    }
}</pre>
<br />
We have also added the autocomplete functionality to the <a href="https://developers.google.com/places/android-api/placepicker">place picker</a>—a UI widget that helps users communicate their current location, such as a place, address or location on a map.  This makes it even easier to pick a specific place by starting to type its name or address. If your app already uses  the place picker it will automatically gain the autocomplete feature with no action required on your part.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-hK0rI3vb4FU/VnNM8tZiqMI/AAAAAAAAAd0/iVF-j1Tr2_A/s1600/3b.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="http://2.bp.blogspot.com/-hK0rI3vb4FU/VnNM8tZiqMI/AAAAAAAAAd0/iVF-j1Tr2_A/s400/3b.gif" width="328" /></a></div>
To get started, check out the documentation and <a href="https://developers.google.com/places/android-api/code-samples">code samples</a>. You can always send us any questions via <a href="http://stackoverflow.com/questions/tagged/google-places-api">Stack Overflow</a> or the Google Maps API <a href="https://code.google.com/p/gmaps-api-issues/">issue tracker</a> if you have ideas for improvement.<br />
<br />
<br />]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/new-autocomplete-widget-helps-users-with-places-and-address-entry-in-mobile-apps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Maps Minutes Hack #5: Make your holiday detours easier with Google Maps</title>
		<link>https://googledata.org/google-maps/maps-minutes-hack-5-make-your-holiday-detours-easier-with-google-maps/</link>
		<comments>https://googledata.org/google-maps/maps-minutes-hack-5-make-your-holiday-detours-easier-with-google-maps/#comments</comments>
		<pubDate>Wed, 16 Dec 2015 19:59:00 +0000</pubDate>
		<dc:creator><![CDATA[Lat Long]]></dc:creator>
				<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[google lat-long]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=92d394e90b60b72e19526f9ababc0dca</guid>
		<description><![CDATA[Part of our <a href="http://google-latlong.blogspot.com/2015/12/holiday-maps-minutes-hack-1-save-time.html">series</a> on how to save time this holiday season with Google Maps.<br /><br />Forget the eggnog for a holiday party? On the road to grandma's and need to gas up along the way? Or maybe you need to pick up a last-minute gift on the way to your in-laws&#8217; house? <br /><br />One poorly planned pit stop can add a lot of time to your trip &#8211; especially during the holidays when crowds can be bigger and traffic heavier. The good news is that Google Maps can help you make quick pit stops without long detours. <br /><br /><div>On Google Maps for Android, you can now search for places like a gas station, grocery store or coffee shop, navigate there, and then pick back up on your original route&#8212;all without leaving navigation mode (coming soon to iOS). </div><div><br /></div><div><br /></div><br />Here&#8217;s how it works: When you&#8217;re in navigation mode, simply tap the magnifying glass at the top right corner in the app. Pick a category from the drop down menu and you'll see a few options, along with ratings of businesses, prices at gas stations, and how much time the detour will add to your trip. Once you choose a place, the stop is automatically incorporated into your route. Can&#8217;t type and tap while driving? You can use voice commands instead. <br /><div><br /></div><div><br /></div><br />Every minute counts. Save more time with Google Maps hacks. Next up: turn-by-turn navigation even when you&#8217;re offline. <br /><br /><i>Posted by Dai Pham, Head of Geo and Google Maps Marketing</i>]]></description>
				<content:encoded><![CDATA[Part of our <a href="http://google-latlong.blogspot.com/2015/12/holiday-maps-minutes-hack-1-save-time.html">series</a> on how to save time this holiday season with Google Maps.<br /><br />Forget the eggnog for a holiday party? On the road to grandma's and need to gas up along the way? Or maybe you need to pick up a last-minute gift on the way to your in-laws’ house? <br /><br />One poorly planned pit stop can add a lot of time to your trip – especially during the holidays when crowds can be bigger and traffic heavier. The good news is that Google Maps can help you make quick pit stops without long detours. <br /><br /><div style="text-align: left;">On Google Maps for Android, you can now search for places like a gas station, grocery store or coffee shop, navigate there, and then pick back up on your original route—all without leaving navigation mode (coming soon to iOS). </div><div style="text-align: center;"><br /></div><div style="text-align: center;"><iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/SDBPgBwXTrE?list=PLcRbp4LqBpwGhkLhKhQ9hg-4d89x3rZ2I" width="560"></iframe><br /></div><br />Here’s how it works: When you’re in navigation mode, simply tap the magnifying glass at the top right corner in the app. Pick a category from the drop down menu and you'll see a few options, along with ratings of businesses, prices at gas stations, and how much time the detour will add to your trip. Once you choose a place, the stop is automatically incorporated into your route. Can’t type and tap while driving? You can use voice commands instead. <br /><div style="text-align: center;"><br /></div><div style="text-align: center;"><iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/LjX_i3oaLfg" width="560"></iframe><br /></div><br />Every minute counts. Save more time with Google Maps hacks. Next up: turn-by-turn navigation even when you’re offline. <br /><br /><i>Posted by Dai Pham, Head of Geo and Google Maps Marketing</i>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/maps-minutes-hack-5-make-your-holiday-detours-easier-with-google-maps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Introducing the Google My Business API</title>
		<link>https://googledata.org/google-maps/introducing-the-google-my-business-api/</link>
		<comments>https://googledata.org/google-maps/introducing-the-google-my-business-api/#comments</comments>
		<pubDate>Tue, 15 Dec 2015 21:44:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=86c456c489e7251cadee4a99bd07f335</guid>
		<description><![CDATA[Google My Business is helping businesses around the world connect with their customers when they search for them on Google. Today we&#8217;re introducing the <a href="https://developers.google.com/my-business/">Google My Business API</a> to make it easier for large businesses and third parties to integrate with the Google My Business platform and publish updates to customers on Google Search &#38; Maps. For example, you can now set your special hours for the holiday season and update them across all of your locations using the Google My Business API.<br /><br />
Through the new Google My Business API, developers can:<br /><br /><ul><li>Create business locations with information such as name, address, phone number, category, business hours, and <a href="https://developers.google.com/my-business/reference/rest/v2/accounts.locations">more</a></li>
<li>Manage <a href="https://developers.google.com/my-business/reference/rest/v2/accounts.locations#SpecialHours">special hours</a></li>
<li>Mark a business location as <a href="https://developers.google.com/my-business/reference/rest/v2/accounts.locations#OpenInfo">permanently closed</a></li>
<li>Manage business <a href="https://developers.google.com/my-business/reference/rest/v2/accounts.locations#Photos">photos</a></li>
<li>List, invite and remove <a href="https://developers.google.com/my-business/reference/rest/v2/accounts.locations.admins">managers</a> on locations and business accounts</li>
<li>Read <a href="https://developers.google.com/my-business/reference/rest/v2/accounts.locations#LocationState">listing state</a> to identify Google updated, duplicate and suspended locations</li>
<li>Search/Filter <a href="https://developers.google.com/my-business/content/location-data#list_all_locations">locations</a> by name, category and label</li>
<li>Set the <a href="https://developers.google.com/my-business/reference/rest/v2/accounts.locations#ServiceAreaBusiness">service area</a> for a business either by specifying a point and radius or Place IDs</li>
</ul><br />
Here's a sample java function that creates a new location and sets special holiday hours:<br /><pre>public static Location createLocation(String accountName) throws Exception {
  Location location = new Location();

  // Street address
  Address address = new Address();
  List addressLines = Arrays.asList("740 Valencia Street");
  address.setAddressLines(addressLines);
  address.setLocality("San Francisco");
  address.setAdministrativeArea("CA");
  address.setCountry("US");
  address.setPostalCode("94110");
  location.setAddress(address);

  // Business hours
  BusinessHours businessHours = new BusinessHours();
  List periods = new ArrayList&#60;&#62;();
  List days = Arrays.asList("Monday", "Tuesday", "Wednesday", "Thursday", "Friday");
  for (String day : days) {
    TimePeriod period = new TimePeriod();
    period.setOpenDay(day);
    period.setOpenTime("11:00");
    period.setCloseTime("20:00");
    period.setCloseDay(day);
    periods.add(period);
  }
  businessHours.setPeriods(periods);
  location.setBusinessHours(businessHours);

  // Special hours
    Date christmasEve = new Date().setYear(2015).setMonth(12).setDay(24);
    Date christmasDay = new Date().setYear(2015).setMonth(12).setDay(25);
    List periods = new ArrayList&#60;&#62;();
    periods.add(new SpecialHourPeriod()
        .setStartDate(christmasEve)
        .setOpenTime("11:00")
        .setCloseTime("20:00")
        .setEndDate(christmasEve));
    periods.add(new SpecialHourPeriod()
        .setStartDate(christmasDay)
        .setIsClosed(true));
   SpecialHours specialHours = new SpecialHours()
        .setSpecialHourPeriods(periods);

  location.setSpecialHours(specialHours);

  location.setLocationName("Dandelion Chocolate");
  location.setStoreCode("DC1");
  location.setPrimaryPhone("415 349-0942");
  location.setPrimaryCategory(new Category().setCategoryId("gcid:chocolate_shop"));
  location.setWebsiteUrl("https://www.dandelionchocolate.com/");

  // Create Location
  CreateLocationRequest createLocationRequest = new CreateLocationRequest();
  // RequestId is a unique id for each location created
  createLocationRequest.setRequestId(&#8220;1a84939c-ab7d-4581-8930-ee35af6fefac&#8221;);
  createLocationRequest.setLocation(location);
  createLocationRequest.setLanguageCode("en-US");
  Mybusiness.Accounts.Locations.Create createLocation =
      mybusiness.accounts().locations().create(accountName, createLocationRequest);

  Location createdLocation = createLocation.execute();

  System.out.printf("Created Location:n%s", createdLocation.toPrettyString());
 
  return createdLocation;
}</pre>
When special hours are set in Google My Business, we will tell customers that they&#8217;re <a href="http://google-latlong.blogspot.com/2015/12/part-of-our-series-on-how-to-save-time.html">seeing holiday-specific opening hours on Google</a>:<br /><div>
<span><img height="392px;" src="https://lh3.googleusercontent.com/4LIvaEEiRTa5-nuvd7-FwMmTcMULWiZ8gyRrqXg-ghZIbVjE-iyH7ESd7NPK3XCKBZMftRH3J3hCeOkUPV1cJ-2FMZ-xuYa4K9jhHhHoGq2Tsvf3Ri8KgHzbYvhrX22DI66NZPPa" width="218px;"><img height="396px;" src="https://lh6.googleusercontent.com/SGXARplipvzKqIuFi2Ry2Z2EmFnUVT9renGyyH9ZPSxAYOaZ6W_akL4ET-g-ZNrYCkvQqRoa-8mQGeu36P1afKkdZg3ELU6dOc8xfZnT7eRnn6JWk57MIo18E1AOk6fJ7BOUF5rl" width="211px;"></span></div>
<span></span><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>.<br /><br />
Questions or feedback? Contact the API team on the <a href="https://groups.google.com/forum/#!forum/my-business-api">Google My Business API Forum</a>.<br /><br /><i>Posted by Aditya Tendulkar, Product Manager, Google My Business</i><br /><br />]]></description>
				<content:encoded><![CDATA[Google My Business is helping businesses around the world connect with their customers when they search for them on Google. Today we’re introducing the <a href="https://developers.google.com/my-business/">Google My Business API</a> to make it easier for large businesses and third parties to integrate with the Google My Business platform and publish updates to customers on Google Search &amp; Maps. For example, you can now set your special hours for the holiday season and update them across all of your locations using the Google My Business API.<br />
<br />
Through the new Google My Business API, developers can:<br />
<br />
<ul>
<li>Create business locations with information such as name, address, phone number, category, business hours, and <a href="https://developers.google.com/my-business/reference/rest/v2/accounts.locations">more</a></li>
<li>Manage <a href="https://developers.google.com/my-business/reference/rest/v2/accounts.locations#SpecialHours">special hours</a></li>
<li>Mark a business location as <a href="https://developers.google.com/my-business/reference/rest/v2/accounts.locations#OpenInfo">permanently closed</a></li>
<li>Manage business <a href="https://developers.google.com/my-business/reference/rest/v2/accounts.locations#Photos">photos</a></li>
<li>List, invite and remove <a href="https://developers.google.com/my-business/reference/rest/v2/accounts.locations.admins">managers</a> on locations and business accounts</li>
<li>Read <a href="https://developers.google.com/my-business/reference/rest/v2/accounts.locations#LocationState">listing state</a> to identify Google updated, duplicate and suspended locations</li>
<li>Search/Filter <a href="https://developers.google.com/my-business/content/location-data#list_all_locations">locations</a> by name, category and label</li>
<li>Set the <a href="https://developers.google.com/my-business/reference/rest/v2/accounts.locations#ServiceAreaBusiness">service area</a> for a business either by specifying a point and radius or Place IDs</li>
</ul>
<br />
Here's a sample java function that creates a new location and sets special holiday hours:<br />
<pre>public static Location createLocation(String accountName) throws Exception {
  Location location = new Location();

  // Street address
  Address address = new Address();
  List addressLines = Arrays.asList("740 Valencia Street");
  address.setAddressLines(addressLines);
  address.setLocality("San Francisco");
  address.setAdministrativeArea("CA");
  address.setCountry("US");
  address.setPostalCode("94110");
  location.setAddress(address);

  // Business hours
  BusinessHours businessHours = new BusinessHours();
  List periods = new ArrayList&lt;&gt;();
  List days = Arrays.asList("Monday", "Tuesday", "Wednesday", "Thursday", "Friday");
  for (String day : days) {
    TimePeriod period = new TimePeriod();
    period.setOpenDay(day);
    period.setOpenTime("11:00");
    period.setCloseTime("20:00");
    period.setCloseDay(day);
    periods.add(period);
  }
  businessHours.setPeriods(periods);
  location.setBusinessHours(businessHours);

  // Special hours
    Date christmasEve = new Date().setYear(2015).setMonth(12).setDay(24);
    Date christmasDay = new Date().setYear(2015).setMonth(12).setDay(25);
    List<specialhourperiod> periods = new ArrayList&lt;&gt;();
    periods.add(new SpecialHourPeriod()
        .setStartDate(christmasEve)
        .setOpenTime("11:00")
        .setCloseTime("20:00")
        .setEndDate(christmasEve));
    periods.add(new SpecialHourPeriod()
        .setStartDate(christmasDay)
        .setIsClosed(true));
   SpecialHours specialHours = new SpecialHours()
        .setSpecialHourPeriods(periods);

  location.setSpecialHours(specialHours);

  location.setLocationName("Dandelion Chocolate");
  location.setStoreCode("DC1");
  location.setPrimaryPhone("415 349-0942");
  location.setPrimaryCategory(new Category().setCategoryId("gcid:chocolate_shop"));
  location.setWebsiteUrl("https://www.dandelionchocolate.com/");

  // Create Location
  CreateLocationRequest createLocationRequest = new CreateLocationRequest();
  // RequestId is a unique id for each location created
  createLocationRequest.setRequestId(“1a84939c-ab7d-4581-8930-ee35af6fefac”);
  createLocationRequest.setLocation(location);
  createLocationRequest.setLanguageCode("en-US");
  Mybusiness.Accounts.Locations.Create createLocation =
      mybusiness.accounts().locations().create(accountName, createLocationRequest);

  Location createdLocation = createLocation.execute();

  System.out.printf("Created Location:n%s", createdLocation.toPrettyString());
 
  return createdLocation;
}</specialhourperiod></pre>
When special hours are set in Google My Business, we will tell customers that they’re <a href="http://google-latlong.blogspot.com/2015/12/part-of-our-series-on-how-to-save-time.html">seeing holiday-specific opening hours on Google</a>:<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="background-color: white; font-family: &quot;arial&quot;; font-size: 12.6667px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img height="392px;" src="https://lh3.googleusercontent.com/4LIvaEEiRTa5-nuvd7-FwMmTcMULWiZ8gyRrqXg-ghZIbVjE-iyH7ESd7NPK3XCKBZMftRH3J3hCeOkUPV1cJ-2FMZ-xuYa4K9jhHhHoGq2Tsvf3Ri8KgHzbYvhrX22DI66NZPPa" style="border: none; transform: rotate(0rad);" width="218px;" /><img height="396px;" src="https://lh6.googleusercontent.com/SGXARplipvzKqIuFi2Ry2Z2EmFnUVT9renGyyH9ZPSxAYOaZ6W_akL4ET-g-ZNrYCkvQqRoa-8mQGeu36P1afKkdZg3ELU6dOc8xfZnT7eRnn6JWk57MIo18E1AOk6fJ7BOUF5rl" style="border: none; font-size: 12.6667px; transform: rotate(0rad);" width="211px;" /></span></div>
<span id="docs-internal-guid-e2466157-a68a-ce9e-883f-827b78d855fd"></span><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>.<br />
<br />
Questions or feedback? Contact the API team on the <a href="https://groups.google.com/forum/#!forum/my-business-api">Google My Business API Forum</a>.<br />
<br />
<i>Posted by Aditya Tendulkar, Product Manager, Google My Business</i><br />
<br />]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/introducing-the-google-my-business-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Holiday Maps Minutes Hack #1: Save time beating bumper-to-bumper traffic</title>
		<link>https://googledata.org/google-maps/holiday-maps-minutes-hack-1-save-time-beating-bumper-to-bumper-traffic/</link>
		<comments>https://googledata.org/google-maps/holiday-maps-minutes-hack-1-save-time-beating-bumper-to-bumper-traffic/#comments</comments>
		<pubDate>Tue, 01 Dec 2015 23:28:00 +0000</pubDate>
		<dc:creator><![CDATA[Lat Long]]></dc:creator>
				<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[google lat-long]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=760361c1e5b0c87746b177be617e53ca</guid>
		<description><![CDATA[<i>This post is the first in a series about how you can use Google Maps to save time this holiday season. </i><br /><br />Your time is finite. But what if you could save all the minutes you waste in traffic, standing in lines, or shopping and spend them on what you love? <br /><br />In December when things sometimes get a tad bit crazier, make the most of the time you do have. In the next few weeks we&#8217;ll share simple Google Maps hacks you can use to save time during the holidays. <br /><br />We&#8217;re starting with&#8230;traffic. Why? Because no one likes traffic. Whether you&#8217;re driving to your once-a-year family gathering or trying to get to the mall in time for last-minute shopping, beating bumper-to-bumper traffic just might be one of the best holiday gifts you receive this year. <br /><br /><br /><br />Google Maps gives you the best route, based on real-time traffic and historic traffic information. All you need to do is hit the navigation button and Google Maps takes care of the rest. You&#8217;ll even get an explanation for why it's the fastest route and updates when your ETA changes. <br /><br />If you find yourself in a jam caused by an accident or construction, Google Maps lets you know how long you'll be at a standstill and <a href="https://youtu.be/RjHqgXguc7o">automatically re-routes</a> you if there&#8217;s a faster path. <br /><br />Every minute counts, so hit the road and enjoy the ride&#8212;Google Maps has your back this holiday season.<br /><br />Stay tuned for more Maps Minutes hacks. Next up: flying through airports with indoor Google Maps.<br /><br /><i>Posted by Olga Suvorova, Product Marketing Manager, Google Maps</i>]]></description>
				<content:encoded><![CDATA[<i>This post is the first in a series about how you can use Google Maps to save time this holiday season. </i><br /><br />Your time is finite. But what if you could save all the minutes you waste in traffic, standing in lines, or shopping and spend them on what you love? <br /><br />In December when things sometimes get a tad bit crazier, make the most of the time you do have. In the next few weeks we’ll share simple Google Maps hacks you can use to save time during the holidays. <br /><br />We’re starting with…traffic. Why? Because no one likes traffic. Whether you’re driving to your once-a-year family gathering or trying to get to the mall in time for last-minute shopping, beating bumper-to-bumper traffic just might be one of the best holiday gifts you receive this year. <br /><br /><iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/L-s6AmIA4Og" width="560"></iframe><br /><br />Google Maps gives you the best route, based on real-time traffic and historic traffic information. All you need to do is hit the navigation button and Google Maps takes care of the rest. You’ll even get an explanation for why it's the fastest route and updates when your ETA changes. <br /><br />If you find yourself in a jam caused by an accident or construction, Google Maps lets you know how long you'll be at a standstill and <a href="https://youtu.be/RjHqgXguc7o">automatically re-routes</a> you if there’s a faster path. <br /><br />Every minute counts, so hit the road and enjoy the ride—Google Maps has your back this holiday season.<br /><br />Stay tuned for more Maps Minutes hacks. Next up: flying through airports with indoor Google Maps.<br /><br /><i>Posted by Olga Suvorova, Product Marketing Manager, Google Maps</i>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/holiday-maps-minutes-hack-1-save-time-beating-bumper-to-bumper-traffic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>The new Google Maps SDK for iOS includes bitcode support, new events and more</title>
		<link>https://googledata.org/google-maps/the-new-google-maps-sdk-for-ios-includes-bitcode-support-new-events-and-more/</link>
		<comments>https://googledata.org/google-maps/the-new-google-maps-sdk-for-ios-includes-bitcode-support-new-events-and-more/#comments</comments>
		<pubDate>Mon, 30 Nov 2015 23:40:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=54ed86bda099f0b899e7c00fc78693a0</guid>
		<description><![CDATA[Today we are launching the <a href="https://developers.google.com/maps/documentation/ios-sdk/start">Google Maps SDK for iOS 1.11</a>, which includes bitcode support, new events and some features previously available only in the Android SDK.<br /><br /><a href="https://developer.apple.com/library/tvos/documentation/IDEs/Conceptual/AppDistributionGuide/AppThinning/AppThinning.html#//apple_ref/doc/uid/TP40012582-CH35-SW2">Bitcode</a> is an intermediate representation of your app that is uploaded to the Apple Store. With this abstraction, Apple can optimize for specific target devices at provisioning time. <br /><br />
The Google Maps SDK for iOS 1.11 also introduces two new events: <span><a href="https://developers.google.com/maps/documentation/ios-sdk/reference/protocol_g_m_s_map_view_delegate-p#a4ff47da211c1cc6ca0aa53d52717f0db">didLongPressInfoWindowOfMarker</a></span> and <span><a href="https://developers.google.com/maps/documentation/ios-sdk/reference/protocol_g_m_s_map_view_delegate-p#a48af5741bd22de7b5b67fc4558e3f0af">didCloseInfoWindowOfMarker</a></span>. The long press event <span>takes advantage of iOS long-touch as another way for users to interact with Maps SDK for iOS enabled apps.&#160;The close event is&#160;particularly useful if you wish to programmatically zoom back out on the map after the user has looked at the detail associated with a particular marker. </span><br /><br />
We have also added start and finish rendering events to the <span><a href="https://developers.google.com/maps/documentation/ios-sdk/reference/protocol_g_m_s_map_view_delegate-p">GMSMapViewDelegate</a></span> and <span><a href="https://developers.google.com/maps/documentation/ios-sdk/reference/protocol_g_m_s_panorama_view_delegate-p">GMSPanoramaViewDelegate</a></span> protocols. The start rendering events are triggered when tiles have just been requested or labels have just started rendering. The finish events are triggered on rendering completion for tiles and StreetView panoramas, respectively. <br /><br />
Finish events can be used in conjunction with an activity indicator to accurately represent when a map has finished rendering. The sample code below shows how to include this functionality. (We&#8217;ve also included <a href="https://github.com/TransitApp/SVProgressHUD">SVProgressHUD</a> in the sample below to improve the user experience, but it is not required)<br /><br /><pre>import UIKit
import GoogleMaps

class MapRenderingViewController: UIViewController {
  @IBOutlet var mapView: GMSMapView!

  override func viewDidLoad() {
    super.viewDidLoad()
    mapView.delegate = self
  }

  // MARK: - GMSMapViewDelegate

  func mapViewDidStartTileRendering(mapView: GMSMapView!) {
    SVProgressHUD.showWithStatus("Loading tiles")
  }

  func mapViewDidFinishTileRendering(mapView: GMSMapView!) {
    SVProgressHUD.dismiss()
  }
}</pre>
Lastly, the Google Maps SDK for iOS 1.11 offers new features &#38; bugfixes we think you'll find useful, including:<br /><br /><ul><li>Setting ground overlay opacity with an alpha value</li>
<li>Polygon hole support</li>
<li>Increased camera tilt range at high zoom</li>
<li>Additional Places autocomplete functionality</li>
</ul><br />
Take a look at our <a href="https://developers.google.com/maps/documentation/ios-sdk/releases?hl=en">release notes</a> and update to <a href="https://developers.google.com/maps/documentation/ios-sdk/start">Google Maps SDK for iOS 1.11</a> today.<br /><br /><i>Posted by Megan Boundey, Product Manager, Google Maps Mobile APIs</i>]]></description>
				<content:encoded><![CDATA[Today we are launching the <a href="https://developers.google.com/maps/documentation/ios-sdk/start">Google Maps SDK for iOS 1.11</a>, which includes bitcode support, new events and some features previously available only in the Android SDK.<br />
<br />
<a href="https://developer.apple.com/library/tvos/documentation/IDEs/Conceptual/AppDistributionGuide/AppThinning/AppThinning.html#//apple_ref/doc/uid/TP40012582-CH35-SW2">Bitcode</a> is an intermediate representation of your app that is uploaded to the Apple Store. With this abstraction, Apple can optimize for specific target devices at provisioning time. <br />
<br />
The Google Maps SDK for iOS 1.11 also introduces two new events: <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;"><a href="https://developers.google.com/maps/documentation/ios-sdk/reference/protocol_g_m_s_map_view_delegate-p#a4ff47da211c1cc6ca0aa53d52717f0db">didLongPressInfoWindowOfMarker</a></span> and <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;"><a href="https://developers.google.com/maps/documentation/ios-sdk/reference/protocol_g_m_s_map_view_delegate-p#a48af5741bd22de7b5b67fc4558e3f0af">didCloseInfoWindowOfMarker</a></span>. The long press event <span style="font-family: inherit;">takes advantage of iOS long-touch as another way for users to interact with Maps SDK for iOS enabled apps.&nbsp;The close event is&nbsp;particularly useful if you wish to programmatically zoom back out on the map after the user has looked at the detail associated with a particular marker. </span><br />
<br />
We have also added start and finish rendering events to the <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;"><a href="https://developers.google.com/maps/documentation/ios-sdk/reference/protocol_g_m_s_map_view_delegate-p">GMSMapViewDelegate</a></span> and <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;"><a href="https://developers.google.com/maps/documentation/ios-sdk/reference/protocol_g_m_s_panorama_view_delegate-p">GMSPanoramaViewDelegate</a></span> protocols. The start rendering events are triggered when tiles have just been requested or labels have just started rendering. The finish events are triggered on rendering completion for tiles and StreetView panoramas, respectively. <br />
<br />
Finish events can be used in conjunction with an activity indicator to accurately represent when a map has finished rendering. The sample code below shows how to include this functionality. (We’ve also included <a href="https://github.com/TransitApp/SVProgressHUD">SVProgressHUD</a> in the sample below to improve the user experience, but it is not required)<br />
<br />
<pre>import UIKit
import GoogleMaps

class MapRenderingViewController: UIViewController {
  @IBOutlet var mapView: GMSMapView!

  override func viewDidLoad() {
    super.viewDidLoad()
    mapView.delegate = self
  }

  // MARK: - GMSMapViewDelegate

  func mapViewDidStartTileRendering(mapView: GMSMapView!) {
    SVProgressHUD.showWithStatus("Loading tiles")
  }

  func mapViewDidFinishTileRendering(mapView: GMSMapView!) {
    SVProgressHUD.dismiss()
  }
}</pre>
Lastly, the Google Maps SDK for iOS 1.11 offers new features &amp; bugfixes we think you'll find useful, including:<br />
<br />
<ul>
<li>Setting ground overlay opacity with an alpha value</li>
<li>Polygon hole support</li>
<li>Increased camera tilt range at high zoom</li>
<li>Additional Places autocomplete functionality</li>
</ul>
<br />
Take a look at our <a href="https://developers.google.com/maps/documentation/ios-sdk/releases?hl=en">release notes</a> and update to <a href="https://developers.google.com/maps/documentation/ios-sdk/start">Google Maps SDK for iOS 1.11</a> today.<br />
<br />
<i>Posted by Megan Boundey, Product Manager, Google Maps Mobile APIs</i>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/the-new-google-maps-sdk-for-ios-includes-bitcode-support-new-events-and-more/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Predicting the Future with Google Maps APIs</title>
		<link>https://googledata.org/google-maps/predicting-the-future-with-google-maps-apis/</link>
		<comments>https://googledata.org/google-maps/predicting-the-future-with-google-maps-apis/#comments</comments>
		<pubDate>Tue, 10 Nov 2015 23:35:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=5e6fbd999491315e5062b63d4e09b0e7</guid>
		<description><![CDATA[Planning journeys ahead of time has always been difficult, since traffic conditions vary greatly over time. Developers have used live traffic data from the Google Maps APIs for years to help drivers with this problem, but up to now, this has been available only for journeys starting very close to now, and limited to Google Maps for Work customers only. <br /><br />
Today we&#8217;re extending traffic predictions in the Google Maps APIs indefinitely into the future - a feature we call predictive travel times. This will let developers plan journeys hours, days or even weeks in advance, using Google&#8217;s model of what the traffic conditions will be like on that day. We&#8217;re also making all traffic features in <a href="https://developers.google.com/maps/documentation/directions/intro">Directions API</a> and <a href="https://developers.google.com/maps/documentation/distance-matrix/intro">Distance Matrix API</a> available under our Standard Plan (2500 requests/day for free, with pay-as-you-go pricing for extra requests), and increasing the waypoint limit in Directions API for these developers from 8 to 23 waypoints. (Traffic features and higher waypoint limits in the JavaScript Maps API are available to Google Maps for Work customers for now.)<br /><br />
Using these new traffic features is super simple&#8212;just add the <span>departure_time</span> parameter to Directions API or Distance Matrix API queries, and the results will contain the travel time estimate given the predicted traffic conditions at that time. The route returned may also change depending on traffic conditions, which lets developers recommend the fastest route to their users. For example, the image below shows the fastest route from San Francisco International Airport to the Google campus in Mountain View late at night when there&#8217;s no traffic (blue), and during peak hour when an accident on Highway 101 has slowed traffic to a crawl (red).<br /><div>
<span><img alt="Screen Shot 2015-11-10 at 8.26.11 PM.png" height="535px;" src="https://lh5.googleusercontent.com/KIpV6iGYgcumSosgo2mfwZh73aYWpCtoxh2yEnAzd9dakH_JcJVsIdJr4uVjfp2d8nFLRz7JobYwONUDbztfWw9t6VftUoRrIGGadP_lfmJiDqFwH45Fc_B3peJFjpoa0XYornhz" width="624px;"></span></div>
<span></span><br />
Since traffic conditions far in the future could vary greatly, developers can set an optional <span>traffic_model</span> parameter to choose whether they&#8217;d prefer to get an <span>optimistic</span>, <span>pessimistic</span> or <span>best_guess</span> estimate of the travel time. For example, one of our customers, <a href="https://www.redfin.com/">Redfin</a>, plan to use the Google Maps APIs to predict how long it will take to drive between homes, so they will use the <span>pessimistic</span> traffic model to ensure there&#8217;s enough travel time taking traffic into account. On the other hand, a developer building thermostat app wants their user&#8217;s house to be warm by the time they get home from work, so they would use the <span>optimistic</span> travel time estimate to calculate when their user is likely to get home, and when their thermostat needs to turn on.<br /><br />
The default traffic model, <span>best_guess</span>, returns the most likely travel time given everything that&#8217;s known about the traffic conditions&#8212;both the historical model for the queried time and day of the week, and the actual live traffic conditions right now. This can be used in apps that give drivers an indication of what their travel time will most likely be.<br /><br />
To learn more about the traffic features in the Google Maps APIs, please take a look at our <a href="https://www.youtube.com/watch?v=tKEnpYE-mtY">video</a>, check out the documentation for the <a href="https://developers.google.com/maps/documentation/directions/intro#traffic-model">Directions API</a>, the <a href="https://developers.google.com/maps/documentation/distance-matrix/intro#traffic-model">Distance Matrix API</a> and the JavaScript Maps API <a href="https://developers.google.com/maps/documentation/javascript/directions#DrivingOptions">Directions</a> and <a href="https://developers.google.com/maps/documentation/javascript/directions#DrivingOptions">Distance Matrix</a> services, or download the updated <a href="https://developers.google.com/maps/web-services/client-library">client libraries</a> for Java or Python.<br /><br /><i>Posted by Elena Kelareva, Product Manager, Google Maps APIs</i>]]></description>
				<content:encoded><![CDATA[Planning journeys ahead of time has always been difficult, since traffic conditions vary greatly over time. Developers have used live traffic data from the Google Maps APIs for years to help drivers with this problem, but up to now, this has been available only for journeys starting very close to now, and limited to Google Maps for Work customers only. <br />
<br />
Today we’re extending traffic predictions in the Google Maps APIs indefinitely into the future - a feature we call predictive travel times. This will let developers plan journeys hours, days or even weeks in advance, using Google’s model of what the traffic conditions will be like on that day. We’re also making all traffic features in <a href="https://developers.google.com/maps/documentation/directions/intro">Directions API</a> and <a href="https://developers.google.com/maps/documentation/distance-matrix/intro">Distance Matrix API</a> available under our Standard Plan (2500 requests/day for free, with pay-as-you-go pricing for extra requests), and increasing the waypoint limit in Directions API for these developers from 8 to 23 waypoints. (Traffic features and higher waypoint limits in the JavaScript Maps API are available to Google Maps for Work customers for now.)<br />
<br />
Using these new traffic features is super simple—just add the <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">departure_time</span> parameter to Directions API or Distance Matrix API queries, and the results will contain the travel time estimate given the predicted traffic conditions at that time. The route returned may also change depending on traffic conditions, which lets developers recommend the fastest route to their users. For example, the image below shows the fastest route from San Francisco International Airport to the Google campus in Mountain View late at night when there’s no traffic (blue), and during peak hour when an accident on Highway 101 has slowed traffic to a crawl (red).<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: &quot;arial&quot;; font-size: 14.6667px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="Screen Shot 2015-11-10 at 8.26.11 PM.png" height="535px;" src="https://lh5.googleusercontent.com/KIpV6iGYgcumSosgo2mfwZh73aYWpCtoxh2yEnAzd9dakH_JcJVsIdJr4uVjfp2d8nFLRz7JobYwONUDbztfWw9t6VftUoRrIGGadP_lfmJiDqFwH45Fc_B3peJFjpoa0XYornhz" style="border: none; transform: rotate(0rad);" width="624px;" /></span></div>
<span id="docs-internal-guid-1bb17b19-f2a7-8841-536a-f8e41960ea9a"></span><br />
Since traffic conditions far in the future could vary greatly, developers can set an optional <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">traffic_model</span> parameter to choose whether they’d prefer to get an <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">optimistic</span>, <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">pessimistic</span> or <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">best_guess</span> estimate of the travel time. For example, one of our customers, <a href="https://www.redfin.com/">Redfin</a>, plan to use the Google Maps APIs to predict how long it will take to drive between homes, so they will use the <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">pessimistic</span> traffic model to ensure there’s enough travel time taking traffic into account. On the other hand, a developer building thermostat app wants their user’s house to be warm by the time they get home from work, so they would use the <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">optimistic</span> travel time estimate to calculate when their user is likely to get home, and when their thermostat needs to turn on.<br />
<br />
The default traffic model, <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">best_guess</span>, returns the most likely travel time given everything that’s known about the traffic conditions—both the historical model for the queried time and day of the week, and the actual live traffic conditions right now. This can be used in apps that give drivers an indication of what their travel time will most likely be.<br />
<br />
To learn more about the traffic features in the Google Maps APIs, please take a look at our <a href="https://www.youtube.com/watch?v=tKEnpYE-mtY">video</a>, check out the documentation for the <a href="https://developers.google.com/maps/documentation/directions/intro#traffic-model">Directions API</a>, the <a href="https://developers.google.com/maps/documentation/distance-matrix/intro#traffic-model">Distance Matrix API</a> and the JavaScript Maps API <a href="https://developers.google.com/maps/documentation/javascript/directions#DrivingOptions">Directions</a> and <a href="https://developers.google.com/maps/documentation/javascript/directions#DrivingOptions">Distance Matrix</a> services, or download the updated <a href="https://developers.google.com/maps/web-services/client-library">client libraries</a> for Java or Python.<br />
<br />
<i>Posted by Elena Kelareva, Product Manager, Google Maps APIs</i>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/predicting-the-future-with-google-maps-apis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>The Google Maps APIs team hits the road with ‘Code the Road’ in Europe</title>
		<link>https://googledata.org/google-maps/the-google-maps-apis-team-hits-the-road-with-code-the-road-in-europe/</link>
		<comments>https://googledata.org/google-maps/the-google-maps-apis-team-hits-the-road-with-code-the-road-in-europe/#comments</comments>
		<pubDate>Wed, 04 Nov 2015 08:21:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=760dbf765adde3532675af634a3f4456</guid>
		<description><![CDATA[<div>
<span><img height="312px;" src="https://lh3.googleusercontent.com/ljZJDf4NvoMfPW8WrNrGozKps7kFDzrRLROqbvm16y0JMa5zfWfNMsGaUDMargq6XVbGqoJgCMEc-r7oznrfua_PZQtk7ABwbfB--cNWA8xX7X47A-ycuxlPquXb3ABM51dJyGw" width="624px;"></span></div>
<span></span><br />
After an exciting road trip across the U.S. this summer, we decided to bring Code the Road to Europe to highlight what developers have made possible with the Google Maps APIs. We&#8217;ll be driving our customized 1979 Volkswagen T2 Bus with 50 Horsepower, 78Tkm on a four stop trip across Europe where along the way we&#8217;ll meet with developers, customer and partners.<br /><br />
Code the Road Europe kicks-off in Tel Aviv on November 10. From there we&#8217;ll be heading across Europe&#8212;stopping in Berlin, Hamburg and London.<br /><br />
We will also be hosting three developer meetups: <a href="https://www.google.com/url?q=http://goo.gl/DU2GAA&#38;sa=D&#38;ust=1446155693547000&#38;usg=AFQjCNEp6FIzit3qYxXm8PeYj9_E4p3usA">Tel Aviv</a> on November 10, <a href="https://www.google.com/url?q=http://goo.gl/NjT1oN&#38;sa=D&#38;ust=1446155693543000&#38;usg=AFQjCNHF12FLVPGQFRQ2dTbXhaZCfyqD8g">Berlin</a> on November 12 and <a href="https://www.google.com/url?q=http://goo.gl/FXvWJP&#38;sa=D&#38;ust=1446155693541000&#38;usg=AFQjCNHdQTadzan-YgDevPnhwSXk6EusqQ">London</a> on November 25. The meetups will highlight how developers can use the Google Maps APIs in their apps and websites and include sessions with Google Engineers and customers. We&#8217;re expecting these meet-ups to fill-up quickly, so register today to reserve a seat at a location near you.<br /><br />
We&#8217;ll be hosting a 24-hour hackathon in <a href="https://www.google.com/url?q=https://goo.gl/bktWV8&#38;sa=D&#38;ust=1446155693549000&#38;usg=AFQjCNHceRy8pltOjFmQiglc0GX1vyQvMQ">Hamburg</a> beginning the afternoon of November 18. Ubilabs and the Google Maps APIs team will be bringing developers, product managers and students together to develop innovative solutions to lend a hand in the Syrian Refugee Crisis. <br /><br />
We will be sharing on-the-road updates and photos on the site throughout the trip. We hope to see you on the road!<br /><br /><i>Posted by Tobias Espig, EMEA Marketing, Google Maps APIs</i>]]></description>
				<content:encoded><![CDATA[<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: &quot;open sans&quot;; font-size: 14.6667px; font-weight: 700; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img height="312px;" src="https://lh3.googleusercontent.com/ljZJDf4NvoMfPW8WrNrGozKps7kFDzrRLROqbvm16y0JMa5zfWfNMsGaUDMargq6XVbGqoJgCMEc-r7oznrfua_PZQtk7ABwbfB--cNWA8xX7X47A-ycuxlPquXb3ABM51dJyGw" style="border: none; transform: rotate(0rad);" width="624px;" /></span></div>
<span id="docs-internal-guid-585ef80f-cf3b-d6d7-0788-85fc757c5a72"></span><br />
After an exciting road trip across the U.S. this summer, we decided to bring Code the Road to Europe to highlight what developers have made possible with the Google Maps APIs. We’ll be driving our customized 1979 Volkswagen T2 Bus with 50 Horsepower, 78Tkm on a four stop trip across Europe where along the way we’ll meet with developers, customer and partners.<br />
<br />
Code the Road Europe kicks-off in Tel Aviv on November 10. From there we’ll be heading across Europe—stopping in Berlin, Hamburg and London.<br />
<br />
We will also be hosting three developer meetups: <a href="https://www.google.com/url?q=http://goo.gl/DU2GAA&amp;sa=D&amp;ust=1446155693547000&amp;usg=AFQjCNEp6FIzit3qYxXm8PeYj9_E4p3usA">Tel Aviv</a> on November 10, <a href="https://www.google.com/url?q=http://goo.gl/NjT1oN&amp;sa=D&amp;ust=1446155693543000&amp;usg=AFQjCNHF12FLVPGQFRQ2dTbXhaZCfyqD8g">Berlin</a> on November 12 and <a href="https://www.google.com/url?q=http://goo.gl/FXvWJP&amp;sa=D&amp;ust=1446155693541000&amp;usg=AFQjCNHdQTadzan-YgDevPnhwSXk6EusqQ">London</a> on November 25. The meetups will highlight how developers can use the Google Maps APIs in their apps and websites and include sessions with Google Engineers and customers. We’re expecting these meet-ups to fill-up quickly, so register today to reserve a seat at a location near you.<br />
<br />
We’ll be hosting a 24-hour hackathon in <a href="https://www.google.com/url?q=https://goo.gl/bktWV8&amp;sa=D&amp;ust=1446155693549000&amp;usg=AFQjCNHceRy8pltOjFmQiglc0GX1vyQvMQ">Hamburg</a> beginning the afternoon of November 18. Ubilabs and the Google Maps APIs team will be bringing developers, product managers and students together to develop innovative solutions to lend a hand in the Syrian Refugee Crisis. <br />
<br />
We will be sharing on-the-road updates and photos on the site throughout the trip. We hope to see you on the road!<br />
<br />
<i>Posted by Tobias Espig, EMEA Marketing, Google Maps APIs</i>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/the-google-maps-apis-team-hits-the-road-with-code-the-road-in-europe/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Map Tips: (What’s nearest; Who’s closest?) Creating a better customer experience with the Distance Matrix service</title>
		<link>https://googledata.org/google-maps/map-tips-whats-nearest-whos-closest-creating-a-better-customer-experience-with-the-distance-matrix-service/</link>
		<comments>https://googledata.org/google-maps/map-tips-whats-nearest-whos-closest-creating-a-better-customer-experience-with-the-distance-matrix-service/#comments</comments>
		<pubDate>Wed, 28 Oct 2015 14:42:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=ba11b7738a77b2c38558ae463e3176b1</guid>
		<description><![CDATA[<span>Posted by Corey Bradford, Google Maps Solution Architect</span><br /><br /><i><b>Editor&#8217;s note:</b> &#8216;Map Tips&#8217; are designed to answer frequently asked questions about <a href="https://developers.google.com/maps/">Google Maps APIs</a>. For important tips on how to deploy Google&#8217;s mapping tools, read more from Corey Bradford, Google Maps Solution Architect at Google.</i><br /><br />
Many location-based sites and applications can accurately tell users how far they are from nearby points of interest. However, they often provide only straight-line distance (ie as the crow flies), which isn&#8217;t always a true representation of proximity. Alternatively, these applications can be improved by the <a href="https://developers.google.com/maps/documentation/javascript/distancematrix">Distance Matrix service</a> available in the Google Maps Javascript API and the Distance Matrix Web Service, which provides accurate travel distances and times, and for premium customer can even factor in current traffic conditions.<br /><br />
Store locators and rideshare/taxi applications are common applications that can benefit from using the Distance Matrix service. In both use cases, a user is trying to determine their relative distance from either a store or taxi. <br /><br /><b>Store locators</b><br />
Suppose a customer has provided their location, &#8220;1903 Toro Canyon Rd, Austin, TX 78746.&#8221; (Point C on the map) Using straight-line distances, your application found your three nearest stores, as shown on this map:<br /><div>
<span><img alt="dm_map1.png" height="496" src="https://lh4.googleusercontent.com/BSbrpocjIyLht9QUa-e6xUqGio4gPxv8NpuC7Nt87A0zLdsJ99O1o_CsoQtY0-HLMIUX38cPktG8AWsM67dtOk1j17rq7yaEoCIxLJ9Oz0yZ_9Hk6i9YAVMA1wADWWecV_6wBqva" width="640"></span></div>
&#8220;As the crow flies,&#8221; store #1 (shown in the image below as "B") is clearly nearest to the customer location, &#8220;C.&#8221; However, there&#8217;s a river between these locations. Unless the customer intends to use watercraft for part of their travel, they&#8217;ll need to travel via the nearest bridge or tunnel. The <a href="https://developers.google.com/maps/documentation/javascript/directions">Directions Service</a> provides the suggested route, confirming the need to travel much farther than the straight-line distance:<br /><div>
<span><img alt="dm_map2.png" height="497" src="https://lh5.googleusercontent.com/buMDCLUWj3q3LRwBW_nIi_noJHwQt8GYkzPfhXHj_-azKksWJCvc3ikMvHbEzpu6IMRPS_Ek3K4_v9BPRdfKo38IQvctnpuC0JGzK3MqBWckJuCqyAli0yaP-a6cI8t6-kolV0-S" width="640"></span></div>
<span></span><br />
Since we know that the straight-line distance doesn&#8217;t accurately reflect the proximity of the stores in this case, let&#8217;s make a call to the Distance Matrix Service to determine actual driving distances and times. Here are the results returned:<br /><span><br /></span>
<br /><div dir="ltr">
<table><colgroup><col width="115"><col width="115"><col width="115"><col width="115"><col width="164"></colgroup><tbody><tr><td><div dir="ltr">
<span>Store #</span></div>
</td><td><div dir="ltr">
<span>Straight-Line Distance (mi)</span></div>
</td><td><div dir="ltr">
<span>Driving Distance (mi)</span></div>
</td><td><div dir="ltr">
<span>Driving Time (min)</span></div>
</td><td><div dir="ltr">
<span>Driving Time with Current Traffic (min)</span></div>
</td></tr><tr><td><div dir="ltr">
<span>1</span></div>
</td><td><div dir="ltr">
<span>1.4</span></div>
</td><td><div dir="ltr">
<span>5.4</span></div>
</td><td><div dir="ltr">
<span>15</span></div>
</td><td><div dir="ltr">
<span>20</span></div>
</td></tr><tr><td><div dir="ltr">
<span>2</span></div>
</td><td><div dir="ltr">
<span>2.7</span></div>
</td><td><div dir="ltr">
<span>4.4</span></div>
</td><td><div dir="ltr">
<span>9</span></div>
</td><td><div dir="ltr">
<span>15</span></div>
</td></tr><tr><td><div dir="ltr">
<span>3</span></div>
</td><td><div dir="ltr">
<span>2.5</span></div>
</td><td><div dir="ltr">
<span>4.7</span></div>
</td><td><div dir="ltr">
<span>11</span></div>
</td><td><div dir="ltr">
<span>11</span></div>
</td></tr></tbody></table></div>
<br />
Now we have some useful information for the customer. First, we can see that, although store #2 is the farthest in a straight line, it&#8217;s actually the shortest driving distance. In addition, in normal traffic conditions, it&#8217;s also the shortest driving time. However, if we consider current traffic conditions, we see that store #2 will take longer to reach than store #3. The following maps, which use the Directions Service along with the traffic layer, illustrate these results:<br /><div>
<span><img alt="dm_map3.png" height="498" src="https://lh6.googleusercontent.com/MZXpE4brdsUULoInEqE1rzukTX1iqN_xPzoMvwFr9Gh80O0SddrfbhkvGZQLwGS74AQuIWUU6yFcBI2KMGb0fywyAHnYKGlwkSVbmlgDTYxfXdyAk7mvFX6JpvkbvMwWllcBrXFw" width="640"></span></div>
<span></span><br />
In this case, the customer may choose to visit store #3 (shown in the image below as "B") if they are leaving now or store # 2 if they plan to travel later, after traffic clears.<br /><div>
<span><img alt="dm_map4.png" height="497" src="https://lh4.googleusercontent.com/RH-U7kLC0BzZh3qA1E2kfAXcDbXdt8L_vwS9Pwsb5fRQXZ2-mGfxOJnB6AvX5jk6zsT3iy1dWO9YGUDtJ1YesIfuOWxUifczhOWE0kVYxU93ZBZqUv8bhVa9tQxK70QgcrDETWi5" width="640"></span></div>
<span></span><br /><b>Rideshare and taxis</b><br />
Now let&#8217;s consider another example: users looking to hire a car service or dispatchers who need to direct the nearest taxi to a customer. As the following maps shows, the user can see the actual current drive times, provided by the Distance Matrix API, of each driver to their location, regardless of straight-line distance.<br /><div>
<span><img alt="Taxi mobile map.png" height="432px;" src="https://lh3.googleusercontent.com/smBdrZYoQMM3pjd0lH3FSLLtjJjl0d3A64JYzzHUcaRY4XI5rUgntBvRuHHJovLPAVzJegHmj1t56Z5MEU4YE-QhmEBY2vePKOC4U9kPynXm1S3XiiqkjSgYWxTEBa-LBw=s1600" width="576px;"></span></div>
<span></span><br /><b>What's Under The Hood</b><br />
Now that we&#8217;re taken a look at how driving distances, duration, and duration in traffic information can benefit your customers, you might be wondering &#8220;How can I implement this as a developer?&#8221; Below are code snippets from the store locator example that provide the technical details of how to build these features using the Distance Matrix service.<br /><br />
For simplicity, we&#8217;ve pre-defined the customer and store locations:<br /><pre>var customerLocation = '1903 Toro Canyon Rd, Austin, TX 78746';

var store1 = '3808 W. 35th, Austin, TX 78703';
var store2 = '4933 Plaza on the Lake, Austin, TX 78746';
var store3 = '6500 Bee Cave Rd, Austin, TX 78746';</pre>
Using this location information, we make a call to the Distance Matrix service:<br /><pre>function calculateDistances() {
  // Create a new Distance Matrix Service object
  var service = new google.maps.DistanceMatrixService();
  
  // Set the options such as the pre-defined origin
  // and destinations, as well as specifying to use
  // duration in traffic
  
  service.getDistanceMatrix({
      origins: [customerLocation],
      destinations: [store1, store2, store3],
      travelMode: google.maps.TravelMode.DRIVING,
      unitSystem: google.maps.UnitSystem.IMPERIAL,
      avoidHighways: false,
      avoidTolls: false,
      durationInTraffic: true
  }, callback);
} 
   
function callback(response, status) {
  if (status != google.maps.DistanceMatrixStatus.OK) {
    console.log('DistanceMatrix Error: ', status);
  } else {
    // Get the arrays of origins and destinations
    var origins = response.originAddresses;
    var destinations = response.destinationAddresses;
    
    for (var i = 0; i &#60; origins.length; i++) {
      // For each of the origins, get the results of the 
      // distance and duration of the destinations
      var results = response.rows[i].elements;
      for (var j = 0; j &#60; results.length; j++) {
    // Store the results for later sorting
   storeResults.push([destinations[j],
       results[j].duration_in_traffic.value,
                  results[j].distance.value]);
      }
    }
    // Sort the results by duration in traffic
     storeResults.sort(function(a, b) {
           return a[1] - b[1];
         }); 
  }
}</pre>
The call returns the following data, which includes the critical information of driving distances, duration, and duration in traffic:
<br /><pre>destination_addresses" : [
      "3808 West 35th Street, Austin, TX 78703, USA",
      "4933 Plaza on the Lake, Austin, TX 78746, USA",
      "6500 Bee Cave Road, Austin, TX 78746, USA"
   ],
   "origin_addresses" : [ "1903 Toro Canyon Road, Austin, TX 78746, USA" ],
   "rows" : [
      {
         "elements" : [
            {
               "distance" : {
                  "text" : "5.4 mi",
                  "value" : 8631
               },
               "duration" : {
                  "text" : "15 mins",
                  "value" : 917
               },
               "duration_in_traffic" : {
                  "text" : "20 mins",
                  "value" : 1188
               },
               "status" : "OK"
            },
            {
               "distance" : {
                  "text" : "4.4 mi",
                  "value" : 7157
               },
               "duration" : {
                  "text" : "9 mins",
                  "value" : 569
               },
               "duration_in_traffic" : {
                  "text" : "15 mins",
                  "value" : 911
               },
               "status" : "OK"
            },
            {
               "distance" : {
                  "text" : "4.7 mi",
                  "value" : 7490
               },
               "duration" : {
                  "text" : "11 mins",
                  "value" : 635
               },
               "duration_in_traffic" : {
                  "text" : "11 mins",
                  "value" : 635
               },
               "status" : "OK"
            }
         ]
      }</pre>
With this data, customers can sort the store results according to their preferences and make better decisions about which store to visit.<br /><br />
We hope you&#8217;re able to take advantage of some of these features in your website or application. For more details on implementing the Google Maps Javascript API <a href="https://developers.google.com/maps/documentation/javascript/distancematrix">Distance Matrix service</a>, visit our developer documentation and review our available code samples. You can also find out more about the <a href="https://developers.google.com/maps/documentation/distance-matrix/intro">Distance Matrix API</a>, part of our Google Maps <a href="https://developers.google.com/maps/web-services/">Web Services APIs</a>.]]></description>
				<content:encoded><![CDATA[<span class="post-author">Posted by Corey Bradford, Google Maps Solution Architect</span><br />
<br />
<i><b>Editor’s note:</b> ‘Map Tips’ are designed to answer frequently asked questions about <a href="https://developers.google.com/maps/">Google Maps APIs</a>. For important tips on how to deploy Google’s mapping tools, read more from Corey Bradford, Google Maps Solution Architect at Google.</i><br />
<br />
Many location-based sites and applications can accurately tell users how far they are from nearby points of interest. However, they often provide only straight-line distance (ie as the crow flies), which isn’t always a true representation of proximity. Alternatively, these applications can be improved by the <a href="https://developers.google.com/maps/documentation/javascript/distancematrix">Distance Matrix service</a> available in the Google Maps Javascript API and the Distance Matrix Web Service, which provides accurate travel distances and times, and for premium customer can even factor in current traffic conditions.<br />
<br />
Store locators and rideshare/taxi applications are common applications that can benefit from using the Distance Matrix service. In both use cases, a user is trying to determine their relative distance from either a store or taxi. <br />
<br />
<b>Store locators</b><br />
Suppose a customer has provided their location, “1903 Toro Canyon Rd, Austin, TX 78746.” (Point C on the map) Using straight-line distances, your application found your three nearest stores, as shown on this map:<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Arial; font-size: 14.6667px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="dm_map1.png" height="496" src="https://lh4.googleusercontent.com/BSbrpocjIyLht9QUa-e6xUqGio4gPxv8NpuC7Nt87A0zLdsJ99O1o_CsoQtY0-HLMIUX38cPktG8AWsM67dtOk1j17rq7yaEoCIxLJ9Oz0yZ_9Hk6i9YAVMA1wADWWecV_6wBqva" style="border: none; transform: rotate(0rad);" width="640" /></span></div>
“As the crow flies,” store #1 (shown in the image below as "B") is clearly nearest to the customer location, “C.” However, there’s a river between these locations. Unless the customer intends to use watercraft for part of their travel, they’ll need to travel via the nearest bridge or tunnel. The <a href="https://developers.google.com/maps/documentation/javascript/directions">Directions Service</a> provides the suggested route, confirming the need to travel much farther than the straight-line distance:<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Arial; font-size: 14.6667px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="dm_map2.png" height="497" src="https://lh5.googleusercontent.com/buMDCLUWj3q3LRwBW_nIi_noJHwQt8GYkzPfhXHj_-azKksWJCvc3ikMvHbEzpu6IMRPS_Ek3K4_v9BPRdfKo38IQvctnpuC0JGzK3MqBWckJuCqyAli0yaP-a6cI8t6-kolV0-S" style="border: none; transform: rotate(0rad);" width="640" /></span></div>
<span id="docs-internal-guid-863d4b7d-aaf0-d988-87c8-ca0345c4a48e"></span><br />
Since we know that the straight-line distance doesn’t accurately reflect the proximity of the stores in this case, let’s make a call to the Distance Matrix Service to determine actual driving distances and times. Here are the results returned:<br />
<span id="docs-internal-guid-863d4b7d-aaed-157f-571d-35ee42583b57"><br /></span>
<br />
<div dir="ltr" style="margin-left: 0pt;">
<table style="border-collapse: collapse; border: none;"><colgroup><col width="115"></col><col width="115"></col><col width="115"></col><col width="115"></col><col width="164"></col></colgroup><tbody>
<tr style="height: 0px;"><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Store #</span></div>
</td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Straight-Line Distance (mi)</span></div>
</td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Driving Distance (mi)</span></div>
</td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Driving Time (min)</span></div>
</td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Driving Time with Current Traffic (min)</span></div>
</td></tr>
<tr style="height: 0px;"><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">1</span></div>
</td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: red; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">1.4</span></div>
</td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">5.4</span></div>
</td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">15</span></div>
</td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">20</span></div>
</td></tr>
<tr style="height: 0px;"><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">2</span></div>
</td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">2.7</span></div>
</td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: red; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">4.4</span></div>
</td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: red; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">9</span></div>
</td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">15</span></div>
</td></tr>
<tr style="height: 0px;"><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">3</span></div>
</td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">2.5</span></div>
</td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">4.7</span></div>
</td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">11</span></div>
</td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: red; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">11</span></div>
</td></tr>
</tbody></table>
</div>
<br />
Now we have some useful information for the customer. First, we can see that, although store #2 is the farthest in a straight line, it’s actually the shortest driving distance. In addition, in normal traffic conditions, it’s also the shortest driving time. However, if we consider current traffic conditions, we see that store #2 will take longer to reach than store #3. The following maps, which use the Directions Service along with the traffic layer, illustrate these results:<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Arial; font-size: 14.6667px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="dm_map3.png" height="498" src="https://lh6.googleusercontent.com/MZXpE4brdsUULoInEqE1rzukTX1iqN_xPzoMvwFr9Gh80O0SddrfbhkvGZQLwGS74AQuIWUU6yFcBI2KMGb0fywyAHnYKGlwkSVbmlgDTYxfXdyAk7mvFX6JpvkbvMwWllcBrXFw" style="border: none; transform: rotate(0rad);" width="640" /></span></div>
<span id="docs-internal-guid-863d4b7d-aaf1-bb7e-9585-9f70444b42b9"></span><br />
In this case, the customer may choose to visit store #3 (shown in the image below as "B") if they are leaving now or store # 2 if they plan to travel later, after traffic clears.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Arial; font-size: 14.6667px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="dm_map4.png" height="497" src="https://lh4.googleusercontent.com/RH-U7kLC0BzZh3qA1E2kfAXcDbXdt8L_vwS9Pwsb5fRQXZ2-mGfxOJnB6AvX5jk6zsT3iy1dWO9YGUDtJ1YesIfuOWxUifczhOWE0kVYxU93ZBZqUv8bhVa9tQxK70QgcrDETWi5" style="border: none; transform: rotate(0rad);" width="640" /></span></div>
<span id="docs-internal-guid-863d4b7d-aaf2-1e31-9cfa-dd5aaee3db6f"></span><br />
<b>Rideshare and taxis</b><br />
Now let’s consider another example: users looking to hire a car service or dispatchers who need to direct the nearest taxi to a customer. As the following maps shows, the user can see the actual current drive times, provided by the Distance Matrix API, of each driver to their location, regardless of straight-line distance.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Arial; font-size: 14.6667px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="Taxi mobile map.png" height="432px;" src="https://lh3.googleusercontent.com/smBdrZYoQMM3pjd0lH3FSLLtjJjl0d3A64JYzzHUcaRY4XI5rUgntBvRuHHJovLPAVzJegHmj1t56Z5MEU4YE-QhmEBY2vePKOC4U9kPynXm1S3XiiqkjSgYWxTEBa-LBw=s1600" style="border: none; transform: rotate(0rad);" width="576px;" /></span></div>
<span id="docs-internal-guid-863d4b7d-aaf2-8352-530e-514cadcd812f"></span><br />
<b>What's Under The Hood</b><br />
Now that we’re taken a look at how driving distances, duration, and duration in traffic information can benefit your customers, you might be wondering “How can I implement this as a developer?” Below are code snippets from the store locator example that provide the technical details of how to build these features using the Distance Matrix service.<br />
<br />
For simplicity, we’ve pre-defined the customer and store locations:<br />
<pre>var customerLocation = '1903 Toro Canyon Rd, Austin, TX 78746';

var store1 = '3808 W. 35th, Austin, TX 78703';
var store2 = '4933 Plaza on the Lake, Austin, TX 78746';
var store3 = '6500 Bee Cave Rd, Austin, TX 78746';</pre>
Using this location information, we make a call to the Distance Matrix service:<br />
<pre>function calculateDistances() {
  // Create a new Distance Matrix Service object
  var service = new google.maps.DistanceMatrixService();
  
  // Set the options such as the pre-defined origin
  // and destinations, as well as specifying to use
  // duration in traffic
  
  service.getDistanceMatrix({
      origins: [customerLocation],
      destinations: [store1, store2, store3],
      travelMode: google.maps.TravelMode.DRIVING,
      unitSystem: google.maps.UnitSystem.IMPERIAL,
      avoidHighways: false,
      avoidTolls: false,
      durationInTraffic: true
  }, callback);
} 
   
function callback(response, status) {
  if (status != google.maps.DistanceMatrixStatus.OK) {
    console.log('DistanceMatrix Error: ', status);
  } else {
    // Get the arrays of origins and destinations
    var origins = response.originAddresses;
    var destinations = response.destinationAddresses;
    
    for (var i = 0; i &lt; origins.length; i++) {
      // For each of the origins, get the results of the 
      // distance and duration of the destinations
      var results = response.rows[i].elements;
      for (var j = 0; j &lt; results.length; j++) {
    // Store the results for later sorting
   storeResults.push([destinations[j],
       results[j].duration_in_traffic.value,
                  results[j].distance.value]);
      }
    }
    // Sort the results by duration in traffic
     storeResults.sort(function(a, b) {
           return a[1] - b[1];
         }); 
  }
}</pre>
The call returns the following data, which includes the critical information of driving distances, duration, and duration in traffic:
<br />
<pre>destination_addresses" : [
      "3808 West 35th Street, Austin, TX 78703, USA",
      "4933 Plaza on the Lake, Austin, TX 78746, USA",
      "6500 Bee Cave Road, Austin, TX 78746, USA"
   ],
   "origin_addresses" : [ "1903 Toro Canyon Road, Austin, TX 78746, USA" ],
   "rows" : [
      {
         "elements" : [
            {
               "distance" : {
                  "text" : "5.4 mi",
                  "value" : 8631
               },
               "duration" : {
                  "text" : "15 mins",
                  "value" : 917
               },
               "duration_in_traffic" : {
                  "text" : "20 mins",
                  "value" : 1188
               },
               "status" : "OK"
            },
            {
               "distance" : {
                  "text" : "4.4 mi",
                  "value" : 7157
               },
               "duration" : {
                  "text" : "9 mins",
                  "value" : 569
               },
               "duration_in_traffic" : {
                  "text" : "15 mins",
                  "value" : 911
               },
               "status" : "OK"
            },
            {
               "distance" : {
                  "text" : "4.7 mi",
                  "value" : 7490
               },
               "duration" : {
                  "text" : "11 mins",
                  "value" : 635
               },
               "duration_in_traffic" : {
                  "text" : "11 mins",
                  "value" : 635
               },
               "status" : "OK"
            }
         ]
      }</pre>
With this data, customers can sort the store results according to their preferences and make better decisions about which store to visit.<br />
<br />
We hope you’re able to take advantage of some of these features in your website or application. For more details on implementing the Google Maps Javascript API <a href="https://developers.google.com/maps/documentation/javascript/distancematrix">Distance Matrix service</a>, visit our developer documentation and review our available code samples. You can also find out more about the <a href="https://developers.google.com/maps/documentation/distance-matrix/intro">Distance Matrix API</a>, part of our Google Maps <a href="https://developers.google.com/maps/web-services/">Web Services APIs</a>.]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/map-tips-whats-nearest-whos-closest-creating-a-better-customer-experience-with-the-distance-matrix-service/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Always-on Android Wear apps with the Google Maps API</title>
		<link>https://googledata.org/google-maps/always-on-android-wear-apps-with-the-google-maps-api-2/</link>
		<comments>https://googledata.org/google-maps/always-on-android-wear-apps-with-the-google-maps-api-2/#comments</comments>
		<pubDate>Thu, 24 Sep 2015 19:39:00 +0000</pubDate>
		<dc:creator><![CDATA[Reto Meier]]></dc:creator>
				<category><![CDATA[Google Android]]></category>
		<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[Google Mobile]]></category>
		<category><![CDATA[google os]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=801c7a54cef60eb658c0e8a9b31b57bc</guid>
		<description><![CDATA[<p><i>Originally posted on the <a href="http://googlegeodevelopers.blogspot.com/2015/09/always-on-android-wear-apps-with-google.html">Geo Developers Blog</a></i></p>

<p><i>Posted by <a href="https://plus.sandbox.google.com/+AnkurKotwal/posts?e=EnableCollectionsExtras">Ankur Kotwal</a>, Developer Advocate</i></p>

<p>Some Android Wear apps are most useful when they are always available to the user, even at a glance. Now, with <a href="http://android-developers.blogspot.com/2015/09/google-play-services-81-and-android-60.html">Google Play Services 8.1</a>, the Google Maps Android API supports <a href="https://developer.android.com/training/wearables/apps/always-on.html?utm_campaign=always-on-maps-api-924&#38;utm_source=dac&#38;utm_medium=blog">ambient mode</a>, the API that provides always-on capabilities. In ambient mode, the map adjusts its style to provide a simplified, low-color rendering of the map. All markers, objects, and UI controls disappear, keeping the map on the screen while letting the user know that it is not currently ready to accept user input. An important advantage is the camera position and zoom level are retained, thus keeping the user&#8217;s context within the map.</p>

<p>The screenshot below show how maps appear in interactive mode and in ambient mode.</p>

<div><a href="http://1.bp.blogspot.com/-1GvqS1wiQTI/VgQ7Nq_bcCI/AAAAAAAACEs/Yp5Swj5j64k/s1600/image00.gif"><img border="0" src="http://1.bp.blogspot.com/-1GvqS1wiQTI/VgQ7Nq_bcCI/AAAAAAAACEs/Yp5Swj5j64k/s400/image00.gif"></a></div>

<p>To implement ambient mode in your maps, follow these steps:</p>

<ol><li>Set your your targetSDKVersion to 22 or higher</li>

<li>Add the following dependencies to build.gradle for your app to add the wearable support library.
<pre>
 dependencies {
    compile 'com.google.android.support:wearable:1.2.0'
    provided 'com.google.android.wearable:wearable:1.0.0'
 }
</pre>
</li>

<li>Add the wearable shared library entry into the wearable app manifest:
<pre>
&#60;application&#62;
  &#60;uses-library android:name="com.google.android.wearable"
                android:required="false" /&#62;
  ...
&#60;/application&#62;

</pre>
</li>

<li>
Add the <a href="https://developer.android.com/reference/android/Manifest.permission.html?utm_campaign=always-on-maps-api-924&#38;utm_source=dac&#38;utm_medium=blog#WAKE_LOCK">WAKE_LOCK</a> permission to the handheld and wearable app manifest:
<pre>
&#60;uses-permission android:name="android.permission.WAKE_LOCK" /&#62;
</pre>
</li>

<li>
Have your Activity extend <a href="https://developer.android.com/reference/android/support/wearable/activity/WearableActivity.html?utm_campaign=always-on-maps-api-924&#38;utm_source=dac&#38;utm_medium=blog">WearableActivity</a>. This will provide the overrides that notify your app when the wearable <a href="https://developer.android.com/reference/android/support/wearable/activity/WearableActivity.html?utm_campaign=always-on-maps-api-924&#38;utm_source=dac&#38;utm_medium=blog#onEnterAmbient(android.os.Bundle)">enters</a>, <a href="https://developer.android.com/reference/android/support/wearable/activity/WearableActivity.html?utm_campaign=always-on-maps-api-924&#38;utm_source=dac&#38;utm_medium=blog#onExitAmbient()">exits</a> and <a href="https://developer.android.com/reference/android/support/wearable/activity/WearableActivity.html?utm_campaign=always-on-maps-api-924&#38;utm_source=dac&#38;utm_medium=blog#onUpdateAmbient()">provides screen updates</a> in ambient mode.
</li>

<li>
In the onCreate() method of your activity, call the <code><a href="https://developer.android.com/reference/android/support/wearable/activity/WearableActivity.html?utm_campaign=always-on-maps-api-924&#38;utm_source=dac&#38;utm_medium=blog#setAmbientEnabled()">setAmbientEnabled()</a></code> method. This tells the framework that the app should enter ambient mode rather than returning to the watch face.
</li>

<li>Set your map to support ambient mode. You can do this by setting the attribute map:ambientEnabled="true" in the activity's XML layout file, or programmatically by setting <code><a href="https://developers.google.com/android/reference/com/google/android/gms/maps/GoogleMapOptions.html?utm_campaign=always-on-maps-api-924&#38;utm_source=gdbc&#38;utm_medium=blog#ambientEnabled(boolean)">GoogleMapOptions.ambientEnabled(true)</a></code>. This informs the API to pre-load necessary map tiles for ambient mode.</li>

<li>
When the activity switches to ambient mode, the system calls the <code><a href="https://developer.android.com/reference/android/support/wearable/activity/WearableActivity.html?utm_campaign=always-on-maps-api-924&#38;utm_source=dac&#38;utm_medium=blog#onEnterAmbient(android.os.Bundle)">onEnterAmbient()</a></code> method in your wearable activity. Override <code><a href="https://developer.android.com/reference/android/support/wearable/activity/WearableActivity.html?utm_campaign=always-on-maps-api-924&#38;utm_source=dac&#38;utm_medium=blog#onEnterAmbient(android.os.Bundle)">onEnterAmbient()</a></code> and call  <code><a href="https://developers.google.com/android/reference/com/google/android/gms/maps/MapFragment.html?utm_campaign=always-on-maps-api-924&#38;utm_source=gdbc&#38;utm_medium=blog#onEnterAmbient(android.os.Bundle)">MapFragment.onEnterAmbient()</a></code> or <code><a href="https://developers.google.com/android/reference/com/google/android/gms/maps/MapView.html?utm_campaign=always-on-maps-api-924&#38;utm_source=gdbc&#38;utm_medium=blog#onEnterAmbient(android.os.Bundle)">MapView.onEnterAmbient()</a></code>. The map changes to a non-interactive, low-color rendering of the map.
</li>

<li>
When in ambient mode, your app can update the display every minute by overriding <code><a href="https://developer.android.com/reference/android/support/wearable/activity/WearableActivity.html?utm_campaign=always-on-maps-api-924&#38;utm_source=dac&#38;utm_medium=blog#onUpdateAmbient()">onUpdateAmbient()</a></code>. If you need more frequent updates, check out this <a href="https://developer.android.com/training/wearables/apps/always-on.html?utm_campaign=always-on-maps-api-924&#38;utm_source=dac&#38;utm_medium=blog#UpdateContent">guide</a>.
</li>

<li>
When the activity leaves ambient mode, the system calls the <code><a href="https://developer.android.com/reference/android/support/wearable/activity/WearableActivity.html?utm_campaign=always-on-maps-api-924&#38;utm_source=dac&#38;utm_medium=blog#onExitAmbient()">onExitAmbient()</a></code> method in your wearable activity. Override <code><a href="https://developer.android.com/reference/android/support/wearable/activity/WearableActivity.html?utm_campaign=always-on-maps-api-924&#38;utm_source=dac&#38;utm_medium=blog#onExitAmbient()">onExitAmbient()</a></code> and call <code><a href="https://developers.google.com/android/reference/com/google/android/gms/maps/MapFragment.html?utm_campaign=always-on-maps-api-924&#38;utm_source=gdbc&#38;utm_medium=blog#onExitAmbient()">MapFragment.onExitAmbient()</a></code> or <code><a href="https://developers.google.com/android/reference/com/google/android/gms/maps/MapView.html?utm_campaign=always-on-maps-api-924&#38;utm_source=gdbc&#38;utm_medium=blog#onExitAmbient()">MapView.onExitAmbient()</a></code>. The map returns to the normal rendering and is now ready to accept user input.
</li>
</ol><br /><p>With always-on maps on Android Wear, you can now show maps at a glance. For more information on these APIs check out the <a href="https://developers.google.com/maps/documentation/android-api/wear?utm_campaign=always-on-maps-api-924&#38;utm_source=gdbc&#38;utm_medium=blog#enable_ambient_mode">documentation</a> and the <a href="https://github.com/googlemaps/android-samples/tree/master/AndroidWearMap">sample code</a>.</p>]]></description>
				<content:encoded><![CDATA[<p><i>Originally posted on the <a href="http://googlegeodevelopers.blogspot.com/2015/09/always-on-android-wear-apps-with-google.html">Geo Developers Blog</a></i></p>

<p><i>Posted by <a href="https://plus.sandbox.google.com/+AnkurKotwal/posts?e=EnableCollectionsExtras">Ankur Kotwal</a>, Developer Advocate</i></p>

<p>Some Android Wear apps are most useful when they are always available to the user, even at a glance. Now, with <a href="http://android-developers.blogspot.com/2015/09/google-play-services-81-and-android-60.html">Google Play Services 8.1</a>, the Google Maps Android API supports <a href="https://developer.android.com/training/wearables/apps/always-on.html?utm_campaign=always-on-maps-api-924&utm_source=dac&utm_medium=blog">ambient mode</a>, the API that provides always-on capabilities. In ambient mode, the map adjusts its style to provide a simplified, low-color rendering of the map. All markers, objects, and UI controls disappear, keeping the map on the screen while letting the user know that it is not currently ready to accept user input. An important advantage is the camera position and zoom level are retained, thus keeping the user’s context within the map.</p>

<p>The screenshot below show how maps appear in interactive mode and in ambient mode.</p>

<div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-1GvqS1wiQTI/VgQ7Nq_bcCI/AAAAAAAACEs/Yp5Swj5j64k/s1600/image00.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-1GvqS1wiQTI/VgQ7Nq_bcCI/AAAAAAAACEs/Yp5Swj5j64k/s400/image00.gif" /></a></div>

<p>To implement ambient mode in your maps, follow these steps:</p>

<ol><li>Set your your targetSDKVersion to 22 or higher</li>

<li>Add the following dependencies to build.gradle for your app to add the wearable support library.
<pre class="pretty print">
 dependencies {
    compile 'com.google.android.support:wearable:1.2.0'
    provided 'com.google.android.wearable:wearable:1.0.0'
 }
</pre>
</li>

<li>Add the wearable shared library entry into the wearable app manifest:
<pre class="pretty print">
&lt;application&gt;
  &lt;uses-library android:name="com.google.android.wearable"
                android:required="false" /&gt;
  ...
&lt;/application&gt;

</pre>
</li>

<li>
Add the <a href="https://developer.android.com/reference/android/Manifest.permission.html?utm_campaign=always-on-maps-api-924&utm_source=dac&utm_medium=blog#WAKE_LOCK">WAKE_LOCK</a> permission to the handheld and wearable app manifest:
<pre class="pretty print">
&lt;uses-permission android:name="android.permission.WAKE_LOCK" /&gt;
</pre>
</li>

<li>
Have your Activity extend <a href="https://developer.android.com/reference/android/support/wearable/activity/WearableActivity.html?utm_campaign=always-on-maps-api-924&utm_source=dac&utm_medium=blog">WearableActivity</a>. This will provide the overrides that notify your app when the wearable <a href="https://developer.android.com/reference/android/support/wearable/activity/WearableActivity.html?utm_campaign=always-on-maps-api-924&utm_source=dac&utm_medium=blog#onEnterAmbient(android.os.Bundle)">enters</a>, <a href="https://developer.android.com/reference/android/support/wearable/activity/WearableActivity.html?utm_campaign=always-on-maps-api-924&utm_source=dac&utm_medium=blog#onExitAmbient()">exits</a> and <a href="https://developer.android.com/reference/android/support/wearable/activity/WearableActivity.html?utm_campaign=always-on-maps-api-924&utm_source=dac&utm_medium=blog#onUpdateAmbient()">provides screen updates</a> in ambient mode.
</li>

<li>
In the onCreate() method of your activity, call the <code><a href="https://developer.android.com/reference/android/support/wearable/activity/WearableActivity.html?utm_campaign=always-on-maps-api-924&utm_source=dac&utm_medium=blog#setAmbientEnabled()">setAmbientEnabled()</a></code> method. This tells the framework that the app should enter ambient mode rather than returning to the watch face.
</li>

<li>Set your map to support ambient mode. You can do this by setting the attribute <cide>map:ambientEnabled="true"</code> in the activity's XML layout file, or programmatically by setting <code><a href="https://developers.google.com/android/reference/com/google/android/gms/maps/GoogleMapOptions.html?utm_campaign=always-on-maps-api-924&utm_source=gdbc&utm_medium=blog#ambientEnabled(boolean)">GoogleMapOptions.ambientEnabled(true)</a></code>. This informs the API to pre-load necessary map tiles for ambient mode.</li>

<li>
When the activity switches to ambient mode, the system calls the <code><a href="https://developer.android.com/reference/android/support/wearable/activity/WearableActivity.html?utm_campaign=always-on-maps-api-924&utm_source=dac&utm_medium=blog#onEnterAmbient(android.os.Bundle)">onEnterAmbient()</a></code> method in your wearable activity. Override <code><a href="https://developer.android.com/reference/android/support/wearable/activity/WearableActivity.html?utm_campaign=always-on-maps-api-924&utm_source=dac&utm_medium=blog#onEnterAmbient(android.os.Bundle)">onEnterAmbient()</a></code> and call  <code><a href="https://developers.google.com/android/reference/com/google/android/gms/maps/MapFragment.html?utm_campaign=always-on-maps-api-924&utm_source=gdbc&utm_medium=blog#onEnterAmbient(android.os.Bundle)">MapFragment.onEnterAmbient()</a></code> or <code><a href="https://developers.google.com/android/reference/com/google/android/gms/maps/MapView.html?utm_campaign=always-on-maps-api-924&utm_source=gdbc&utm_medium=blog#onEnterAmbient(android.os.Bundle)">MapView.onEnterAmbient()</a></code>. The map changes to a non-interactive, low-color rendering of the map.
</li>

<li>
When in ambient mode, your app can update the display every minute by overriding <code><a href="https://developer.android.com/reference/android/support/wearable/activity/WearableActivity.html?utm_campaign=always-on-maps-api-924&utm_source=dac&utm_medium=blog#onUpdateAmbient()">onUpdateAmbient()</a></code>. If you need more frequent updates, check out this <a href="https://developer.android.com/training/wearables/apps/always-on.html?utm_campaign=always-on-maps-api-924&utm_source=dac&utm_medium=blog#UpdateContent">guide</a>.
</li>

<li>
When the activity leaves ambient mode, the system calls the <code><a href="https://developer.android.com/reference/android/support/wearable/activity/WearableActivity.html?utm_campaign=always-on-maps-api-924&utm_source=dac&utm_medium=blog#onExitAmbient()">onExitAmbient()</a></code> method in your wearable activity. Override <code><a href="https://developer.android.com/reference/android/support/wearable/activity/WearableActivity.html?utm_campaign=always-on-maps-api-924&utm_source=dac&utm_medium=blog#onExitAmbient()">onExitAmbient()</a></code> and call <code><a href="https://developers.google.com/android/reference/com/google/android/gms/maps/MapFragment.html?utm_campaign=always-on-maps-api-924&utm_source=gdbc&utm_medium=blog#onExitAmbient()">MapFragment.onExitAmbient()</a></code> or <code><a href="https://developers.google.com/android/reference/com/google/android/gms/maps/MapView.html?utm_campaign=always-on-maps-api-924&utm_source=gdbc&utm_medium=blog#onExitAmbient()">MapView.onExitAmbient()</a></code>. The map returns to the normal rendering and is now ready to accept user input.
</li>
</ol>

<br/>
<p>With always-on maps on Android Wear, you can now show maps at a glance. For more information on these APIs check out the <a href="https://developers.google.com/maps/documentation/android-api/wear?utm_campaign=always-on-maps-api-924&utm_source=gdbc&utm_medium=blog#enable_ambient_mode">documentation</a> and the <a href="https://github.com/googlemaps/android-samples/tree/master/AndroidWearMap">sample code</a>.</p>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/always-on-android-wear-apps-with-the-google-maps-api-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Always-on Android Wear apps with the Google Maps API</title>
		<link>https://googledata.org/google-maps/always-on-android-wear-apps-with-the-google-maps-api/</link>
		<comments>https://googledata.org/google-maps/always-on-android-wear-apps-with-the-google-maps-api/#comments</comments>
		<pubDate>Thu, 24 Sep 2015 18:55:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=fded67c404e455b5d11da8775743be27</guid>
		<description><![CDATA[<span>Posted by <a href="http://google.com/+AnkurKotwal">Ankur Kotwal</a>, Developer Advocate at Google</span><br /><br />
Some Android Wear apps are most useful when they are always available to the user, even at a glance. Now, with <a href="http://android-developers.blogspot.com/2015/09/google-play-services-81-and-android-60.html">Google Play Services 8.1</a>, the Google Maps Android API supports ambient mode, the API that provides always-on capabilities. In <a href="https://developer.android.com/training/wearables/apps/always-on.html">ambient mode</a>, the map adjusts its style to provide a simplified, low-color rendering of the map. All markers, objects, and UI controls disappear, keeping the map on the screen while letting the user know that it is not currently ready to accept user input. An important advantage is the camera position and zoom level are retained, thus keeping the user&#8217;s context within the map.<br /><br />
The screenshot below show how maps appear in interactive mode and in ambient mode:<br /><div>
<a href="http://4.bp.blogspot.com/-wAFifMUyS4w/VgGZjFGr3QI/AAAAAAAAAdM/Ez4or5XrGX0/s1600/Maps-ambiactive-watchface.gif"><img border="0" src="http://4.bp.blogspot.com/-wAFifMUyS4w/VgGZjFGr3QI/AAAAAAAAAdM/Ez4or5XrGX0/s1600/Maps-ambiactive-watchface.gif"></a></div>
<br />
To implement ambient mode in your maps, follow these steps:<br /><br /><ol><li>Set your your targetSDKVersion to 22 or higher</li>
<li>Add the following dependencies to build.gradle for your app to add the wearable support library.</li>
<pre>dependencies {
compile 'com.google.android.support:wearable:1.2.0'
provided 'com.google.android.wearable:wearable:1.0.0'
}
</pre>
<li>Add the wearable shared library entry into the wearable app manifest:</li>
<pre>&#60;application&#62;
&#60;uses-library android:name="com.google.android.wearable"
android:required="false" /&#62;
...
&#60;/application&#62;</pre>
<li>Add the <a href="https://developer.android.com/reference/android/Manifest.permission.html#WAKE_LOCK">WAKE_LOCK</a> permission to the handheld and wearable app manifest:</li>
<pre>&#60;uses-permission android:name="android.permission.WAKE_LOCK" /&#62;</pre>
<li>Have your Activity extend <a href="https://developer.android.com/reference/android/support/wearable/activity/WearableActivity.html">WearableActivity</a>. This will provide the overrides that notify your app when the wearable <a href="https://developer.android.com/reference/android/support/wearable/activity/WearableActivity.html#onEnterAmbient(android.os.Bundle)">enters</a>, <a href="https://developer.android.com/reference/android/support/wearable/activity/WearableActivity.html#onExitAmbient()">exits</a> and <a href="https://developer.android.com/reference/android/support/wearable/activity/WearableActivity.html#onUpdateAmbient()">provides screen updates</a> in ambient mode.</li>
<li>In the onCreate() method of your activity, call the <span><a href="https://developer.android.com/reference/android/support/wearable/activity/WearableActivity.html#setAmbientEnabled()">setAmbientEnabled()</a></span> method. This tells the framework that the app should enter ambient mode rather than returning to the watch face.</li>
<li>Set your map to support ambient mode. You can do this by setting the attribute <span>map:ambientEnabled="true"</span> in the activity's XML layout file, or programmatically by setting <span><a href="https://developers.google.com/android/reference/com/google/android/gms/maps/GoogleMapOptions.html#ambientEnabled(boolean)">GoogleMapOptions.ambientEnabled(true)</a></span>. This informs the API to pre-load necessary map tiles for ambient mode.</li>
<li>When the activity switches to ambient mode, the system calls the <span><a href="https://developer.android.com/reference/android/support/wearable/activity/WearableActivity.html#onEnterAmbient(android.os.Bundle)">onEnterAmbient()</a></span> method in your wearable activity. Override <span><a href="https://developer.android.com/reference/android/support/wearable/activity/WearableActivity.html#onEnterAmbient(android.os.Bundle)">onEnterAmbient()</a></span> and call <span><a href="https://developers.google.com/android/reference/com/google/android/gms/maps/MapFragment.html#onEnterAmbient(android.os.Bundle)">MapFragment.onEnterAmbient()</a></span> or <span><a href="https://developers.google.com/android/reference/com/google/android/gms/maps/MapView.html#onEnterAmbient(android.os.Bundle)">MapView.onEnterAmbient()</a></span>. The map changes to a non-interactive, low-color rendering of the map.</li>
<li>When in ambient mode, your app can update the display every minute by overriding <span><a href="https://developer.android.com/reference/android/support/wearable/activity/WearableActivity.html#onUpdateAmbient()">onUpdateAmbient()</a></span>. If you need more frequent updates, check out this <a href="https://developer.android.com/training/wearables/apps/always-on.html#UpdateContent">guide</a>.</li>
<li>When the activity leaves ambient mode, the system calls the <span><a href="https://developer.android.com/reference/android/support/wearable/activity/WearableActivity.html#onExitAmbient()">onExitAmbient()</a></span> method in your wearable activity. Override <span><a href="https://developer.android.com/reference/android/support/wearable/activity/WearableActivity.html#onExitAmbient()">onExitAmbient()</a></span> and call <span><a href="https://developers.google.com/android/reference/com/google/android/gms/maps/MapFragment.html#onExitAmbient()">MapFragment.onExitAmbient()</a></span> or <span><a href="https://developers.google.com/android/reference/com/google/android/gms/maps/MapView.html#onExitAmbient()">MapView.onExitAmbient()</a></span>. The map returns to the normal rendering and is now ready to accept user input.</li>
</ol><br />
With always-on maps on Android Wear, you can now show maps at a glance. For more information on these APIs check out the <a href="https://developers.google.com/maps/documentation/android-api/wear#enable_ambient_mode">documentation</a> and the <a href="https://github.com/googlemaps/android-samples/tree/master/AndroidWearMap">sample code</a>.]]></description>
				<content:encoded><![CDATA[<span class="post-author">Posted by <a href="http://google.com/+AnkurKotwal">Ankur Kotwal</a>, Developer Advocate at Google</span><br />
<br />
Some Android Wear apps are most useful when they are always available to the user, even at a glance. Now, with <a href="http://android-developers.blogspot.com/2015/09/google-play-services-81-and-android-60.html">Google Play Services 8.1</a>, the Google Maps Android API supports ambient mode, the API that provides always-on capabilities. In <a href="https://developer.android.com/training/wearables/apps/always-on.html">ambient mode</a>, the map adjusts its style to provide a simplified, low-color rendering of the map. All markers, objects, and UI controls disappear, keeping the map on the screen while letting the user know that it is not currently ready to accept user input. An important advantage is the camera position and zoom level are retained, thus keeping the user’s context within the map.<br />
<br />
The screenshot below show how maps appear in interactive mode and in ambient mode:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-wAFifMUyS4w/VgGZjFGr3QI/AAAAAAAAAdM/Ez4or5XrGX0/s1600/Maps-ambiactive-watchface.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-wAFifMUyS4w/VgGZjFGr3QI/AAAAAAAAAdM/Ez4or5XrGX0/s1600/Maps-ambiactive-watchface.gif" /></a></div>
<br />
To implement ambient mode in your maps, follow these steps:<br />
<br />
<ol>
<li>Set your your targetSDKVersion to 22 or higher</li>
<li>Add the following dependencies to build.gradle for your app to add the wearable support library.</li>
<pre>dependencies {
compile 'com.google.android.support:wearable:1.2.0'
provided 'com.google.android.wearable:wearable:1.0.0'
}
</pre>
<li>Add the wearable shared library entry into the wearable app manifest:</li>
<pre>&lt;application&gt;
&lt;uses-library android:name="com.google.android.wearable"
android:required="false" /&gt;
...
&lt;/application&gt;</pre>
<li>Add the <a href="https://developer.android.com/reference/android/Manifest.permission.html#WAKE_LOCK">WAKE_LOCK</a> permission to the handheld and wearable app manifest:</li>
<pre>&lt;uses-permission android:name="android.permission.WAKE_LOCK" /&gt;</pre>
<li>Have your Activity extend <a href="https://developer.android.com/reference/android/support/wearable/activity/WearableActivity.html">WearableActivity</a>. This will provide the overrides that notify your app when the wearable <a href="https://developer.android.com/reference/android/support/wearable/activity/WearableActivity.html#onEnterAmbient(android.os.Bundle)">enters</a>, <a href="https://developer.android.com/reference/android/support/wearable/activity/WearableActivity.html#onExitAmbient()">exits</a> and <a href="https://developer.android.com/reference/android/support/wearable/activity/WearableActivity.html#onUpdateAmbient()">provides screen updates</a> in ambient mode.</li>
<li>In the onCreate() method of your activity, call the <span style="font-family: Courier New, Courier, monospace;"><a href="https://developer.android.com/reference/android/support/wearable/activity/WearableActivity.html#setAmbientEnabled()">setAmbientEnabled()</a></span> method. This tells the framework that the app should enter ambient mode rather than returning to the watch face.</li>
<li>Set your map to support ambient mode. You can do this by setting the attribute <span style="font-family: Courier New, Courier, monospace;">map:ambientEnabled="true"</span> in the activity's XML layout file, or programmatically by setting <span style="font-family: Courier New, Courier, monospace;"><a href="https://developers.google.com/android/reference/com/google/android/gms/maps/GoogleMapOptions.html#ambientEnabled(boolean)">GoogleMapOptions.ambientEnabled(true)</a></span>. This informs the API to pre-load necessary map tiles for ambient mode.</li>
<li>When the activity switches to ambient mode, the system calls the <span style="font-family: Courier New, Courier, monospace;"><a href="https://developer.android.com/reference/android/support/wearable/activity/WearableActivity.html#onEnterAmbient(android.os.Bundle)">onEnterAmbient()</a></span> method in your wearable activity. Override <span style="font-family: Courier New, Courier, monospace;"><a href="https://developer.android.com/reference/android/support/wearable/activity/WearableActivity.html#onEnterAmbient(android.os.Bundle)">onEnterAmbient()</a></span> and call <span style="font-family: Courier New, Courier, monospace;"><a href="https://developers.google.com/android/reference/com/google/android/gms/maps/MapFragment.html#onEnterAmbient(android.os.Bundle)">MapFragment.onEnterAmbient()</a></span> or <span style="font-family: Courier New, Courier, monospace;"><a href="https://developers.google.com/android/reference/com/google/android/gms/maps/MapView.html#onEnterAmbient(android.os.Bundle)">MapView.onEnterAmbient()</a></span>. The map changes to a non-interactive, low-color rendering of the map.</li>
<li>When in ambient mode, your app can update the display every minute by overriding <span style="font-family: Courier New, Courier, monospace;"><a href="https://developer.android.com/reference/android/support/wearable/activity/WearableActivity.html#onUpdateAmbient()">onUpdateAmbient()</a></span>. If you need more frequent updates, check out this <a href="https://developer.android.com/training/wearables/apps/always-on.html#UpdateContent">guide</a>.</li>
<li>When the activity leaves ambient mode, the system calls the <span style="font-family: Courier New, Courier, monospace;"><a href="https://developer.android.com/reference/android/support/wearable/activity/WearableActivity.html#onExitAmbient()">onExitAmbient()</a></span> method in your wearable activity. Override <span style="font-family: Courier New, Courier, monospace;"><a href="https://developer.android.com/reference/android/support/wearable/activity/WearableActivity.html#onExitAmbient()">onExitAmbient()</a></span> and call <span style="font-family: Courier New, Courier, monospace;"><a href="https://developers.google.com/android/reference/com/google/android/gms/maps/MapFragment.html#onExitAmbient()">MapFragment.onExitAmbient()</a></span> or <span style="font-family: Courier New, Courier, monospace;"><a href="https://developers.google.com/android/reference/com/google/android/gms/maps/MapView.html#onExitAmbient()">MapView.onExitAmbient()</a></span>. The map returns to the normal rendering and is now ready to accept user input.</li>
</ol>
<br />
With always-on maps on Android Wear, you can now show maps at a glance. For more information on these APIs check out the <a href="https://developers.google.com/maps/documentation/android-api/wear#enable_ambient_mode">documentation</a> and the <a href="https://github.com/googlemaps/android-samples/tree/master/AndroidWearMap">sample code</a>.]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/always-on-android-wear-apps-with-the-google-maps-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Map Tips: Style maps like a wizard</title>
		<link>https://googledata.org/google-maps/map-tips-style-maps-like-a-wizard/</link>
		<comments>https://googledata.org/google-maps/map-tips-style-maps-like-a-wizard/#comments</comments>
		<pubDate>Thu, 24 Sep 2015 17:45:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=253fb82f341a3f9e259b1266b67e08b6</guid>
		<description><![CDATA[<span>Posted by Ed Boiling, Google Maps Solution Architect</span><br /><br /><i><b>Editor&#8217;s note: </b> &#8216;Map Tips&#8217; are designed to answer frequently asked questions about <a href="https://developers.google.com/maps/">Google Maps APIs</a>. For important tips on how to deploy Google&#8217;s mapping tools, read more from <a href="https://twitter.com/boilerwadding">Ed Boiling</a>, Google Maps Solution Architect at Google.</i><br /><br />
At Google, we understand that not everyone dreams in the same beautiful shades of orange and yellows of our Google Maps road network or the calm blues of Google Maps waterways. The reality is that our customers might want to make the water purple or their roads green. Sometimes you need a muted map with no labels to overlay your own data, or maybe you want the colors to match the branding of your website.<br /><br />
That&#8217;s why we offer Styled Maps. You can create the styles by hand and test your code to see how they look, or use our time saving visual tool &#8212; the <a href="http://googlemaps.github.io/js-samples/styledmaps/wizard/index.html">Google Maps Style Wizard</a>. The Google Maps Style Wizard allows you to select features and their elements, apply operations to those features, and save the styles to JSON, which you can copy and paste into your application.<br /><div>
<span><img alt="Styled_map.png" height="293px;" src="https://lh6.googleusercontent.com/UCEnnZSe6irGKTOlIDK-c1PkaPMY4C6NVxPmm1sojWQKcA-qHg6RVactPuPmOpehJeFdl_OCqEGuLUumEvZWeLHxpQHU9T4TGvnGYGz9-mPihFIym9RCN7OYNLA3PL3r7A=s1600" width="398px;"></span></div>
<span></span><br />
With this simple JSON file, you can tailor that map to your needs&#8212;the color scheme of your website, a greyscale map to show details or to highlight a big event.<br /><br />
1. Select a type of feature to style in the Selectors panel. For any element type (e.g. roads, water) you can choose to style the shapes (select &#8220;Geometry&#8221;) or the text (Select &#8220;Labels&#8221;), or both. You can show a map of anywhere you wish as a preview.<br /><div>
<span><img alt="Screen Shot 2015-09-07 at 11.56.33.png" height="271px;" src="https://lh4.googleusercontent.com/UtK2AfbU3_frXKr1Sd-FIzDXovElAqWoLTxt2fxXqRek66ehC7HbOBShRb6wHVtP3hmkJ_VzI9I5LyHFO4gBW6Q36CYHTfbgcEMNg6axyOiecSRCpO1dUju3aXeUc6ox=s1600" width="417px;"></span></div>
<span></span><br />
2. To change the visibility, lightness or color, choose the  combination of Stylers that match your needs. For example, to switch off all the map labels, select Feature type &#8220;All&#8221;, Element type &#8220;Labels&#8221; and check the box for the &#8220;Visibility&#8221; styler. Choose &#8220;Off&#8221; as the option for Visibility. To make all the water purple, select Feature type &#8220;water&#8221;, Element type &#8220;geometry&#8221; and select the &#8220;fill&#8221; option. Fill changes the solid color and stroke changes the line color. In the Stylers section choose the shade you want using the sliders or the hexadecimal value. For purple, either slide R to 204, G to 0 and B to 255 or enter #CC00FF in the text box.<br /><div>
<span><img alt="Screen Shot 2015-09-07 at 11.58.19.png" height="568px;" src="https://lh4.googleusercontent.com/AXRRMtE_Q31z0lTkgG1DZrXB1X1ZEUy7mDSqU0zbS_hiWbHdH2lL-5hLCZOrby1KECUm7ZwTMj8d10sWW45ssGKum842cGjBpGStBb9GhR-qu3i5_S-jxeoEJ1fk00_p-Q=s1600" width="336px;"></span></div>
<span></span><br />
3. Once you are happy with the styling of the feature type, click the Add button in the Map Style panel to save the style and create a new style to work on. Repeat Steps 2 to 5 to build up the set of styles for your map. Styles are applied in the order they are listed in the Map Style panel. To copy the style into your own Maps API map, click the Show JSON button to display the JSON object to pass to the <span>style </span>property of your <a href="http://code.google.com/apis/maps/documentation/javascript/reference.html#MapOptions">MapOptions</a> object. To generate an example map with this style using the Static Maps API, click the Static Map button.<br /><br />
4. Select a type of feature to style in the Selectors panel. For any element type (e.g. roads, water) you can choose to style the shapes (select &#8220;Geometry&#8221;) or the text (Select &#8220;Labels&#8221;), or both. You can show a map of anywhere you wish as a preview.<br /><div>
<span><img alt="Screen Shot 2015-09-07 at 11.56.33.png" height="271px;" src="https://lh4.googleusercontent.com/UtK2AfbU3_frXKr1Sd-FIzDXovElAqWoLTxt2fxXqRek66ehC7HbOBShRb6wHVtP3hmkJ_VzI9I5LyHFO4gBW6Q36CYHTfbgcEMNg6axyOiecSRCpO1dUju3aXeUc6ox=s1600" width="417px;"></span></div>
<span></span><br />
5. To change the visibility, lightness or color, choose the  combination of Stylers that match your needs. For example, to switch off all the map labels, select Feature type &#8220;All&#8221;, Element type &#8220;Labels&#8221; and check the box for the &#8220;Visibility&#8221; styler. Choose &#8220;Off&#8221; as the option for Visibility. To make all the water purple, select Feature type &#8220;water&#8221;, Element type &#8220;geometry&#8221; and select the &#8220;fill&#8221; option. Fill changes the solid color and stroke changes the line color. In the Stylers section choose the shade you want using the sliders or the hexadecimal value. For purple, either slide R to 204, G to 0 and B to 255 or enter #CC00FF in the text box.<br /><div>
<span><img alt="Screen Shot 2015-09-07 at 11.58.19.png" height="568px;" src="https://lh4.googleusercontent.com/AXRRMtE_Q31z0lTkgG1DZrXB1X1ZEUy7mDSqU0zbS_hiWbHdH2lL-5hLCZOrby1KECUm7ZwTMj8d10sWW45ssGKum842cGjBpGStBb9GhR-qu3i5_S-jxeoEJ1fk00_p-Q=s1600" width="336px;"></span></div>
<span></span><br />
6. Once you are happy with the styling of the feature type, click the Add button in the Map Style panel to save the style and create a new style to work on. Repeat Steps 2 to 5 to build up the set of styles for your map. Styles are applied in the order they are listed in the Map Style panel. To copy the style into your own Maps API map, click the Show JSON button to display the JSON object to pass to the <span>style</span> property of your <a href="http://code.google.com/apis/maps/documentation/javascript/reference.html#MapOptions">MapOptions</a> object. To generate an example map with this style using the Static Maps API, click the Static Map button.<br /><br />
Here&#8217;s a complete example for a map with no labels and purple water.<br /><br /><pre>[
  {
    "featureType": "water",
    "elementType": "geometry.fill",
    "stylers": [
      { "color": "#cc00ff" }
    ]
  },{
    "elementType": "labels",
    "stylers": [
      { "visibility": "off" }
    ]
  }
]</pre>
<br />
This style creates a muted grey scale map with just basic outlines that&#8217;s ideal for overlaying a data visualization using one of the <a href="https://developers.google.com/maps/documentation/javascript/overlays?hl=en">many Maps API methods available</a>.<br /><br /><pre>[
  {
    "stylers": [
      { "visibility": "off" }
    ]
  },{
    "featureType": "landscape",
    "stylers": [
      { "visibility": "on" },
      { "color": "#e5e3df" }
    ]
  },{
    "featureType": "water",
    "elementType": "geometry",
    "stylers": [
      { "visibility": "on" },
      { "color": "#d4d4d4" }
    ]
  }
]</pre>
<div>
<span><img alt="Screen Shot 2015-09-07 at 12.01.07.png" height="265px;" src="https://lh3.googleusercontent.com/v2wceTzWox5b9A9VFkkMm0aMYt7B6HqNWKywcaoFOrlNjbr1i3rkJsPY5tX9OJs4LEl210GBogo-_2-rgZnXQOlnIA-kpKLwc9yukttkKCcgdIjAVDb01n5mnAOlOp9wNQ=s1600" width="432px;"></span></div>
<span></span><br />
We hope you&#8217;re able to incorporate the <a href="https://developers.google.com/maps/documentation/javascript/styling?csw=1">Styled Maps</a> capabilities into your website or application. Start customizing your maps today with the <a href="http://googlemaps.github.io/js-samples/styledmaps/wizard/index.html">Google Maps Style Wizard</a>. If you need some inspiration, visit our friends at <a href="http://snazzymaps.com/">snazzymaps.com</a> to see a gallery of styled maps - you can start from any one of the hundreds of user uploaded Google Maps styles.]]></description>
				<content:encoded><![CDATA[<span class="post-author">Posted by Ed Boiling, Google Maps Solution Architect</span><br />
<br />
<i><b>Editor’s note: </b> ‘Map Tips’ are designed to answer frequently asked questions about <a href="https://developers.google.com/maps/">Google Maps APIs</a>. For important tips on how to deploy Google’s mapping tools, read more from <a href="https://twitter.com/boilerwadding">Ed Boiling</a>, Google Maps Solution Architect at Google.</i><br />
<br />
At Google, we understand that not everyone dreams in the same beautiful shades of orange and yellows of our Google Maps road network or the calm blues of Google Maps waterways. The reality is that our customers might want to make the water purple or their roads green. Sometimes you need a muted map with no labels to overlay your own data, or maybe you want the colors to match the branding of your website.<br />
<br />
That’s why we offer Styled Maps. You can create the styles by hand and test your code to see how they look, or use our time saving visual tool — the <a href="http://googlemaps.github.io/js-samples/styledmaps/wizard/index.html">Google Maps Style Wizard</a>. The Google Maps Style Wizard allows you to select features and their elements, apply operations to those features, and save the styles to JSON, which you can copy and paste into your application.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: 'Open Sans'; font-size: 13.3333px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="Styled_map.png" height="293px;" src="https://lh6.googleusercontent.com/UCEnnZSe6irGKTOlIDK-c1PkaPMY4C6NVxPmm1sojWQKcA-qHg6RVactPuPmOpehJeFdl_OCqEGuLUumEvZWeLHxpQHU9T4TGvnGYGz9-mPihFIym9RCN7OYNLA3PL3r7A=s1600" style="border: none; transform: rotate(0rad);" width="398px;" /></span></div>
<span id="docs-internal-guid-2f0a3948-006d-5829-24f4-8f32073da6a8"></span><br />
With this simple JSON file, you can tailor that map to your needs—the color scheme of your website, a greyscale map to show details or to highlight a big event.<br />
<br />
1. Select a type of feature to style in the Selectors panel. For any element type (e.g. roads, water) you can choose to style the shapes (select “Geometry”) or the text (Select “Labels”), or both. You can show a map of anywhere you wish as a preview.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: 'Open Sans'; font-size: 13.3333px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="Screen Shot 2015-09-07 at 11.56.33.png" height="271px;" src="https://lh4.googleusercontent.com/UtK2AfbU3_frXKr1Sd-FIzDXovElAqWoLTxt2fxXqRek66ehC7HbOBShRb6wHVtP3hmkJ_VzI9I5LyHFO4gBW6Q36CYHTfbgcEMNg6axyOiecSRCpO1dUju3aXeUc6ox=s1600" style="border: none; transform: rotate(0rad);" width="417px;" /></span></div>
<span id="docs-internal-guid-2f0a3948-006d-ad48-08b9-667421c03e52"></span><br />
2. To change the visibility, lightness or color, choose the  combination of Stylers that match your needs. For example, to switch off all the map labels, select Feature type “All”, Element type “Labels” and check the box for the “Visibility” styler. Choose “Off” as the option for Visibility. To make all the water purple, select Feature type “water”, Element type “geometry” and select the “fill” option. Fill changes the solid color and stroke changes the line color. In the Stylers section choose the shade you want using the sliders or the hexadecimal value. For purple, either slide R to 204, G to 0 and B to 255 or enter #CC00FF in the text box.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: 'Open Sans'; font-size: 13.3333px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="Screen Shot 2015-09-07 at 11.58.19.png" height="568px;" src="https://lh4.googleusercontent.com/AXRRMtE_Q31z0lTkgG1DZrXB1X1ZEUy7mDSqU0zbS_hiWbHdH2lL-5hLCZOrby1KECUm7ZwTMj8d10sWW45ssGKum842cGjBpGStBb9GhR-qu3i5_S-jxeoEJ1fk00_p-Q=s1600" style="border: none; transform: rotate(0rad);" width="336px;" /></span></div>
<span id="docs-internal-guid-2f0a3948-006e-2527-aad3-4d8dbd0f959c"></span><br />
3. Once you are happy with the styling of the feature type, click the Add button in the Map Style panel to save the style and create a new style to work on. Repeat Steps 2 to 5 to build up the set of styles for your map. Styles are applied in the order they are listed in the Map Style panel. To copy the style into your own Maps API map, click the Show JSON button to display the JSON object to pass to the <span style="font-family: Courier New, Courier, monospace;">style </span>property of your <a href="http://code.google.com/apis/maps/documentation/javascript/reference.html#MapOptions">MapOptions</a> object. To generate an example map with this style using the Static Maps API, click the Static Map button.<br />
<br />
4. Select a type of feature to style in the Selectors panel. For any element type (e.g. roads, water) you can choose to style the shapes (select “Geometry”) or the text (Select “Labels”), or both. You can show a map of anywhere you wish as a preview.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: 'Open Sans'; font-size: 13.3333px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="Screen Shot 2015-09-07 at 11.56.33.png" height="271px;" src="https://lh4.googleusercontent.com/UtK2AfbU3_frXKr1Sd-FIzDXovElAqWoLTxt2fxXqRek66ehC7HbOBShRb6wHVtP3hmkJ_VzI9I5LyHFO4gBW6Q36CYHTfbgcEMNg6axyOiecSRCpO1dUju3aXeUc6ox=s1600" style="border: none; transform: rotate(0rad);" width="417px;" /></span></div>
<span id="docs-internal-guid-2f0a3948-006e-80a2-855d-79d196a27eef"></span><br />
5. To change the visibility, lightness or color, choose the  combination of Stylers that match your needs. For example, to switch off all the map labels, select Feature type “All”, Element type “Labels” and check the box for the “Visibility” styler. Choose “Off” as the option for Visibility. To make all the water purple, select Feature type “water”, Element type “geometry” and select the “fill” option. Fill changes the solid color and stroke changes the line color. In the Stylers section choose the shade you want using the sliders or the hexadecimal value. For purple, either slide R to 204, G to 0 and B to 255 or enter #CC00FF in the text box.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: 'Open Sans'; font-size: 13.3333px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="Screen Shot 2015-09-07 at 11.58.19.png" height="568px;" src="https://lh4.googleusercontent.com/AXRRMtE_Q31z0lTkgG1DZrXB1X1ZEUy7mDSqU0zbS_hiWbHdH2lL-5hLCZOrby1KECUm7ZwTMj8d10sWW45ssGKum842cGjBpGStBb9GhR-qu3i5_S-jxeoEJ1fk00_p-Q=s1600" style="border: none; transform: rotate(0rad);" width="336px;" /></span></div>
<span id="docs-internal-guid-2f0a3948-006e-d32c-67a7-607631d3382b"></span><br />
6. Once you are happy with the styling of the feature type, click the Add button in the Map Style panel to save the style and create a new style to work on. Repeat Steps 2 to 5 to build up the set of styles for your map. Styles are applied in the order they are listed in the Map Style panel. To copy the style into your own Maps API map, click the Show JSON button to display the JSON object to pass to the <span style="font-family: Courier New, Courier, monospace;">style</span> property of your <a href="http://code.google.com/apis/maps/documentation/javascript/reference.html#MapOptions">MapOptions</a> object. To generate an example map with this style using the Static Maps API, click the Static Map button.<br />
<br />
Here’s a complete example for a map with no labels and purple water.<br />
<br />
<pre>[
  {
    "featureType": "water",
    "elementType": "geometry.fill",
    "stylers": [
      { "color": "#cc00ff" }
    ]
  },{
    "elementType": "labels",
    "stylers": [
      { "visibility": "off" }
    ]
  }
]</pre>
<br />
This style creates a muted grey scale map with just basic outlines that’s ideal for overlaying a data visualization using one of the <a href="https://developers.google.com/maps/documentation/javascript/overlays?hl=en">many Maps API methods available</a>.<br />
<br />
<pre>[
  {
    "stylers": [
      { "visibility": "off" }
    ]
  },{
    "featureType": "landscape",
    "stylers": [
      { "visibility": "on" },
      { "color": "#e5e3df" }
    ]
  },{
    "featureType": "water",
    "elementType": "geometry",
    "stylers": [
      { "visibility": "on" },
      { "color": "#d4d4d4" }
    ]
  }
]</pre>
<div class="separator" style="clear: both; text-align: center;">
<span style="background-color: white; font-family: 'Courier New'; font-size: 13.3333px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="Screen Shot 2015-09-07 at 12.01.07.png" height="265px;" src="https://lh3.googleusercontent.com/v2wceTzWox5b9A9VFkkMm0aMYt7B6HqNWKywcaoFOrlNjbr1i3rkJsPY5tX9OJs4LEl210GBogo-_2-rgZnXQOlnIA-kpKLwc9yukttkKCcgdIjAVDb01n5mnAOlOp9wNQ=s1600" style="border: none; transform: rotate(0rad);" width="432px;" /></span></div>
<span id="docs-internal-guid-2f0a3948-0070-5f50-2c99-39da2483f1de"></span><br />
We hope you’re able to incorporate the <a href="https://developers.google.com/maps/documentation/javascript/styling?csw=1">Styled Maps</a> capabilities into your website or application. Start customizing your maps today with the <a href="http://googlemaps.github.io/js-samples/styledmaps/wizard/index.html">Google Maps Style Wizard</a>. If you need some inspiration, visit our friends at <a href="http://snazzymaps.com/">snazzymaps.com</a> to see a gallery of styled maps - you can start from any one of the hundreds of user uploaded Google Maps styles.]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/map-tips-style-maps-like-a-wizard/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Map Tips: Speeding up page load times with the Google Maps JavaScript API</title>
		<link>https://googledata.org/google-maps/map-tips-speeding-up-page-load-times-with-the-google-maps-javascript-api/</link>
		<comments>https://googledata.org/google-maps/map-tips-speeding-up-page-load-times-with-the-google-maps-javascript-api/#comments</comments>
		<pubDate>Mon, 21 Sep 2015 19:52:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=88ee17f401798fbcedbb75dfe5de3993</guid>
		<description><![CDATA[<span>Posted by Mark McDonald, Google Developer Relations Team</span><br /><br /><i><b>Editor&#8217;s note:</b> &#8216;Map Tips&#8217; are designed to answer frequently asked questions about Google Maps APIs. Since web performance is so hot right now, we want to provide some useful information. For important tips on how to deploy Google&#8217;s mapping tools, read more from <a href="https://twitter.com/m4rkmc">Mark McDonald</a>, Google Developer Relations. Also, our friends over at Wikipedia have <a href="https://twitter.com/wikipedia/status/630885153519177728">just done something similar</a>!</i><br /><br />
Asynchronously loading JavaScript on your pages can give you huge performance wins. We have just updated all of our JavaScript Maps API samples and you can make these changes to your site, too. Read on to find out what we did and how it works, or skip straight to Unblocking scripts to see what you can start to update on your site today.<br /><br /><h4>
Loading JavaScript 101</h4>
There are plenty of great <a href="https://developers.google.com/web/fundamentals/performance/?hl=en&#38;utm_campaign=entblog&#38;utm_source=FasterMaps06082018&#38;utm_medium=entweb">developer resources</a> that describe browser rendering processes in detail, and you should read them all, but right now we&#8217;re interested in how <span>&#60;script&#62;</span> tags affect page load time. Here&#8217;s a quick refresher.<br /><ol><li>As a browser loads its stream of HTML content representing the page to render, it builds <a href="https://developers.google.com/web/fundamentals/performance/critical-rendering-path/constructing-the-object-model?hl=en&#38;utm_campaign=entblog&#38;utm_source=FasterMaps06082018&#38;utm_medium=entweb">DOM and CSSOM</a> trees representing the page structure and style, respectively.</li>
<li>JavaScript can change both the DOM and the CSSOM, for example through <span>document.createElement()</span> and <span>myElement.style.backgroundColor.</span></li>
<li>Ergo, when the browser hits a <span>&#60;script&#62;</span> tag, either in-line or externally hosted, it has to pause any further processing of the script and any further HTML rendering until the script has been fetched and any CSS declared prior has been fetched and processed. Take note&#8212;this is critical as it affects the speed at which the first round of content is displayed in the browser.</li>
</ol>
Ilya Grigorik has written on this topic in detail, so check out his article on <a href="https://www.igvita.com/2014/05/20/script-injected-async-scripts-considered-harmful/">asynchronously loading JavaScript</a> to find out more.<br /><br /><h4>
Unblocking scripts</h4>
The first change we made to our samples was to add the <span>async</span> and <span>defer</span> attributes to the script tag:<br /><br /><span>&#60;script src="https://maps.googleapis.com/maps/api/js" <b>async defer</b>&#62;&#60;/script&#62;</span><br /><br />
The <span>async</span> attribute instructs the browser to fetch the script asynchronously, then execute the script as soon as it is retrieved, removing both the block on DOM construction and the wait for CSSOM construction.<br /><br />
The <span>defer</span> attribute is an older, more supported attribute that instructs the browser to execute the script when the DOM is ready. We&#8217;ve included it because the async attribute is not supported in all browsers (specifically, older versions of Internet Explorer). In older browsers (as far back as <a href="http://caniuse.com/#feat=script-defer">Internet Explorer 5.5</a>), defer still speeds up the page load, so it&#8217;s worth including even though it&#8217;s ignored in newer browsers when async is present.<br /><br />
The <a href="https://html.spec.whatwg.org/multipage/scripting.html#attr-script-async">WHATWG spec</a> explains the behavior:<br /><br />
There are three possible modes that can be selected using these attributes. If the <a href="https://html.spec.whatwg.org/multipage/scripting.html#attr-script-async">async</a> attribute is present, then the script will be executed as soon as it is available, but without blocking further parsing of the page. If the <a href="https://html.spec.whatwg.org/multipage/scripting.html#attr-script-async">async</a> attribute is not present but the <a href="https://html.spec.whatwg.org/multipage/scripting.html#attr-script-defer">defer</a> attribute is present, then the script is executed when the page has finished parsing. If neither attribute is present, then the script is fetched and executed immediately, before the user agent continues parsing the page.<br /><br />
The second change we made to our samples was to move the map initialization code from the window&#8217;s <span>onLoad</span> event to use a callback. So this code:<br /><pre>&#60;script src="https://maps.googleapis.com/maps/api/js"&#62;&#60;/script&#62;
...
&#60;script&#62;
function initMap() {
  var map = new google.maps.Map(document.getElementById('map'), {
    center: {lat: -34.397, lng: 150.644},
    zoom: 8
  });
}
google.maps.event.addDomListener(window, 'load', initMap);
&#60;/script&#62;</pre>
<br />
Now looks like:<br /><pre>&#60;script&#62;
function initMap() {
  var map = new google.maps.Map(document.getElementById('map'), {
    center: {lat: -34.397, lng: 150.644},
    zoom: 8
  });
}
&#60;/script&#62;
&#60;script src="https://maps.googleapis.com/maps/api/js?callback=initMap" 
async defer&#62;&#60;/script&#62;</pre>
<br />
This change allows the Maps API code (which now executes as soon as it has been fetched) to run the map initialization code as soon as it can. We&#8217;ve also moved the <span>&#60;script&#62;</span> tag after the custom code, to avoid a race condition where the Maps API code could load before <span>initMap</span> is declared. <br /><br />
When implementing this, you should also ensure that any DOM objects you need (particularly the map) are going to be available when your code is called, which could be before <span>DOMContentLoaded fires</span>. For simple inline scripts, you can guarantee this by putting the script after the element in the page.<br /><br /><h4>
The numbers</h4>
Here are the before &#38; after screenshots of the waterfall from <a href="https://developers.google.com/web/tools/chrome-devtools/">Chrome DevTools</a>. The first image shows the old technique, without async/defer or any callbacks. In addition to the code above, the test code logs <span>window.performance.now()</span> at the end of <span>initMap</span>, which is used to calculate the point at which you can start making map customizations.<br /><br />
Before:<br />
DOMContentLoaded is triggered at ~600ms (658ms in the screenshot below) and map customizations can begin around 700 - 1000ms.<br /><div>
<span><img alt="sync.png" height="209px;" src="https://lh3.googleusercontent.com/frqJacRxg1Q2NM-KROTuqFXfc1eEijpi8IzGj5NTBy5D191hTyorlqyxPFSlATzNkaqJGSZ-Lph_IbkzYZsHrobGgDrqvqhERmg5qIvMLuaQIIS9YIaYBJLtIKrCRngDaOw=s1600" width="624px;"></span></div>
<span></span><br />
After:<br />
DOMContentLoaded is triggered at 35ms and map customizations can begin at around 300 - 500ms.<br /><div>
<span><img alt="async.png" height="217px;" src="https://lh5.googleusercontent.com/uh1LXECMWNlDm5QaGiUk-SYV4h3npiCwhEQCLnMyOYcYOWafG4lDNcsk4D4n6Ae_EBou1VQZPlS0EDXLywJ7Z7rojjRe21rn3W5ODGI5PTzz4nfyhdJnk43gHdvgCfoLSKs=s1600" width="624px;"></span></div>
<span></span><br /><h4>
I can use this everywhere, right?</h4>
Alas, no. As the script tags are no longer synchronously loading in a predictable order, any code using the <span>google.maps</span> namespace needs to run within the callback or sometime afterwards. <br /><br />
To work around this constraint, you can either fall back to loading the API synchronously or <a href="http://addyosmani.com/resources/essentialjsdesignpatterns/book/#mixinpatternjavascript">mix in</a> your code with the parent class once it&#8217;s available. If you choose to load it synchronously, you can still move the <span>&#60;script&#62;</span> tag to the end of the <span>&#60;body&#62;</span> section so your page renders quickly.<br /><br />
There are 2 particular cases you should look out for:<br /><ul><li>Subclassing anything in the Google Maps JavaScript API (for example, <a href="https://developers.google.com/maps/documentation/javascript/customoverlays">custom overlays</a>). You must ensure your classes are defined after the callback has been executed.</li>
<li><span><a href="https://developers.google.com/maps/documentation/javascript/reference#LatLng">LatLngs</a></span> defined outside of the map initialization function. Most functions now accept <span><a href="https://developers.google.com/maps/documentation/javascript/reference#LatLngLiteral">LatLngLiterals</a></span>, so you can simply pass <span>{ lat: 33, lng: 151 }</span>.</li>
</ul><br /><h4>
Updating your own code</h4>
This optimization applies beyond just the Maps APIs and you should check your own sites too. After you&#8217;ve updated your Maps APIs code, look for externally loaded scripts and determine if your code needs to be executed at the point at which it has been defined. If not, add a callback mechanism and the async/defer attributes. <br /><br />
While you&#8217;re there, many popular JavaScript libraries support (in fact, encourage) use of the async attribute. You can find out which ones using the <a href="https://developers.google.com/speed/docs/insights/UseAsync">PageSpeed tool</a>.<br /><br />
We hope you can squeeze even a few extra milliseconds of performance out of your page loads. Remember that performance is a feature!]]></description>
				<content:encoded><![CDATA[<span class="post-author">Posted by Mark McDonald, Google Developer Relations Team</span><br />
<br />
<i><b>Editor’s note:</b> ‘Map Tips’ are designed to answer frequently asked questions about Google Maps APIs. Since web performance is so hot right now, we want to provide some useful information. For important tips on how to deploy Google’s mapping tools, read more from <a href="https://twitter.com/m4rkmc">Mark McDonald</a>, Google Developer Relations. Also, our friends over at Wikipedia have <a href="https://twitter.com/wikipedia/status/630885153519177728">just done something similar</a>!</i><br />
<br />
Asynchronously loading JavaScript on your pages can give you huge performance wins. We have just updated all of our JavaScript Maps API samples and you can make these changes to your site, too. Read on to find out what we did and how it works, or skip straight to Unblocking scripts to see what you can start to update on your site today.<br />
<br />
<h4>
Loading JavaScript 101</h4>
There are plenty of great <a href="https://developers.google.com/web/fundamentals/performance/?hl=en&amp;utm_campaign=entblog&amp;utm_source=FasterMaps06082018&amp;utm_medium=entweb">developer resources</a> that describe browser rendering processes in detail, and you should read them all, but right now we’re interested in how <span style="font-family: Courier New, Courier, monospace;">&lt;script&gt;</span> tags affect page load time. Here’s a quick refresher.<br />
<ol>
<li>As a browser loads its stream of HTML content representing the page to render, it builds <a href="https://developers.google.com/web/fundamentals/performance/critical-rendering-path/constructing-the-object-model?hl=en&amp;utm_campaign=entblog&amp;utm_source=FasterMaps06082018&amp;utm_medium=entweb">DOM and CSSOM</a> trees representing the page structure and style, respectively.</li>
<li>JavaScript can change both the DOM and the CSSOM, for example through <span style="font-family: Courier New, Courier, monospace;">document.createElement()</span> and <span style="font-family: Courier New, Courier, monospace;">myElement.style.backgroundColor.</span></li>
<li>Ergo, when the browser hits a <span style="font-family: Courier New, Courier, monospace;">&lt;script&gt;</span> tag, either in-line or externally hosted, it has to pause any further processing of the script and any further HTML rendering until the script has been fetched and any CSS declared prior has been fetched and processed. Take note—this is critical as it affects the speed at which the first round of content is displayed in the browser.</li>
</ol>
Ilya Grigorik has written on this topic in detail, so check out his article on <a href="https://www.igvita.com/2014/05/20/script-injected-async-scripts-considered-harmful/">asynchronously loading JavaScript</a> to find out more.<br />
<br />
<h4>
Unblocking scripts</h4>
The first change we made to our samples was to add the <span style="font-family: Courier New, Courier, monospace;">async</span> and <span style="font-family: Courier New, Courier, monospace;">defer</span> attributes to the script tag:<br />
<br />
<span style="font-family: Courier New, Courier, monospace;">&lt;script src="https://maps.googleapis.com/maps/api/js" <b>async defer</b>&gt;&lt;/script&gt;</span><br />
<br />
The <span style="font-family: Courier New, Courier, monospace;">async</span> attribute instructs the browser to fetch the script asynchronously, then execute the script as soon as it is retrieved, removing both the block on DOM construction and the wait for CSSOM construction.<br />
<br />
The <span style="font-family: Courier New, Courier, monospace;">defer</span> attribute is an older, more supported attribute that instructs the browser to execute the script when the DOM is ready. We’ve included it because the async attribute is not supported in all browsers (specifically, older versions of Internet Explorer). In older browsers (as far back as <a href="http://caniuse.com/#feat=script-defer">Internet Explorer 5.5</a>), defer still speeds up the page load, so it’s worth including even though it’s ignored in newer browsers when async is present.<br />
<br />
The <a href="https://html.spec.whatwg.org/multipage/scripting.html#attr-script-async">WHATWG spec</a> explains the behavior:<br />
<br />
There are three possible modes that can be selected using these attributes. If the <a href="https://html.spec.whatwg.org/multipage/scripting.html#attr-script-async">async</a> attribute is present, then the script will be executed as soon as it is available, but without blocking further parsing of the page. If the <a href="https://html.spec.whatwg.org/multipage/scripting.html#attr-script-async">async</a> attribute is not present but the <a href="https://html.spec.whatwg.org/multipage/scripting.html#attr-script-defer">defer</a> attribute is present, then the script is executed when the page has finished parsing. If neither attribute is present, then the script is fetched and executed immediately, before the user agent continues parsing the page.<br />
<br />
The second change we made to our samples was to move the map initialization code from the window’s <span style="font-family: Courier New, Courier, monospace;">onLoad</span> event to use a callback. So this code:<br />
<pre>&lt;script src="https://maps.googleapis.com/maps/api/js"&gt;&lt;/script&gt;
...
&lt;script&gt;
function initMap() {
  var map = new google.maps.Map(document.getElementById('map'), {
    center: {lat: -34.397, lng: 150.644},
    zoom: 8
  });
}
google.maps.event.addDomListener(window, 'load', initMap);
&lt;/script&gt;</pre>
<br />
Now looks like:<br />
<pre>&lt;script&gt;
function initMap() {
  var map = new google.maps.Map(document.getElementById('map'), {
    center: {lat: -34.397, lng: 150.644},
    zoom: 8
  });
}
&lt;/script&gt;
&lt;script src="https://maps.googleapis.com/maps/api/js?callback=initMap" 
async defer&gt;&lt;/script&gt;</pre>
<br />
This change allows the Maps API code (which now executes as soon as it has been fetched) to run the map initialization code as soon as it can. We’ve also moved the <span style="font-family: Courier New, Courier, monospace;">&lt;script&gt;</span> tag after the custom code, to avoid a race condition where the Maps API code could load before <span style="font-family: Courier New, Courier, monospace;">initMap</span> is declared. <br />
<br />
When implementing this, you should also ensure that any DOM objects you need (particularly the map) are going to be available when your code is called, which could be before <span style="font-family: Courier New, Courier, monospace;">DOMContentLoaded fires</span>. For simple inline scripts, you can guarantee this by putting the script after the element in the page.<br />
<br />
<h4>
The numbers</h4>
Here are the before &amp; after screenshots of the waterfall from <a href="https://developers.google.com/web/tools/chrome-devtools/">Chrome DevTools</a>. The first image shows the old technique, without async/defer or any callbacks. In addition to the code above, the test code logs <span style="font-family: Courier New, Courier, monospace;">window.performance.now()</span> at the end of <span style="font-family: Courier New, Courier, monospace;">initMap</span>, which is used to calculate the point at which you can start making map customizations.<br />
<br />
Before:<br />
DOMContentLoaded is triggered at ~600ms (658ms in the screenshot below) and map customizations can begin around 700 - 1000ms.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Arial; font-size: 13.3333px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="sync.png" height="209px;" src="https://lh3.googleusercontent.com/frqJacRxg1Q2NM-KROTuqFXfc1eEijpi8IzGj5NTBy5D191hTyorlqyxPFSlATzNkaqJGSZ-Lph_IbkzYZsHrobGgDrqvqhERmg5qIvMLuaQIIS9YIaYBJLtIKrCRngDaOw=s1600" style="border: none; transform: rotate(0rad);" width="624px;" /></span></div>
<span id="docs-internal-guid-c72d823d-f143-b404-070e-9fa77045b26e"></span><br />
After:<br />
DOMContentLoaded is triggered at 35ms and map customizations can begin at around 300 - 500ms.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Arial; font-size: 13.3333px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="async.png" height="217px;" src="https://lh5.googleusercontent.com/uh1LXECMWNlDm5QaGiUk-SYV4h3npiCwhEQCLnMyOYcYOWafG4lDNcsk4D4n6Ae_EBou1VQZPlS0EDXLywJ7Z7rojjRe21rn3W5ODGI5PTzz4nfyhdJnk43gHdvgCfoLSKs=s1600" style="border: none; transform: rotate(0rad);" width="624px;" /></span></div>
<span id="docs-internal-guid-c72d823d-f143-762a-e250-0f267124973a"></span><br />
<h4>
I can use this everywhere, right?</h4>
Alas, no. As the script tags are no longer synchronously loading in a predictable order, any code using the <span style="font-family: Courier New, Courier, monospace;">google.maps</span> namespace needs to run within the callback or sometime afterwards. <br />
<br />
To work around this constraint, you can either fall back to loading the API synchronously or <a href="http://addyosmani.com/resources/essentialjsdesignpatterns/book/#mixinpatternjavascript">mix in</a> your code with the parent class once it’s available. If you choose to load it synchronously, you can still move the <span style="font-family: Courier New, Courier, monospace;">&lt;script&gt;</span> tag to the end of the <span style="font-family: Courier New, Courier, monospace;">&lt;body&gt;</span> section so your page renders quickly.<br />
<br />
There are 2 particular cases you should look out for:<br />
<ul>
<li>Subclassing anything in the Google Maps JavaScript API (for example, <a href="https://developers.google.com/maps/documentation/javascript/customoverlays">custom overlays</a>). You must ensure your classes are defined after the callback has been executed.</li>
<li><span style="font-family: Courier New, Courier, monospace;"><a href="https://developers.google.com/maps/documentation/javascript/reference#LatLng">LatLngs</a></span> defined outside of the map initialization function. Most functions now accept <span style="font-family: Courier New, Courier, monospace;"><a href="https://developers.google.com/maps/documentation/javascript/reference#LatLngLiteral">LatLngLiterals</a></span>, so you can simply pass <span style="font-family: Courier New, Courier, monospace;">{ lat: 33, lng: 151 }</span>.</li>
</ul>
<br />
<h4>
Updating your own code</h4>
This optimization applies beyond just the Maps APIs and you should check your own sites too. After you’ve updated your Maps APIs code, look for externally loaded scripts and determine if your code needs to be executed at the point at which it has been defined. If not, add a callback mechanism and the async/defer attributes. <br />
<br />
While you’re there, many popular JavaScript libraries support (in fact, encourage) use of the async attribute. You can find out which ones using the <a href="https://developers.google.com/speed/docs/insights/UseAsync">PageSpeed tool</a>.<br />
<br />
We hope you can squeeze even a few extra milliseconds of performance out of your page loads. Remember that performance is a feature!]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/map-tips-speeding-up-page-load-times-with-the-google-maps-javascript-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Maps Zen — Not lost</title>
		<link>https://googledata.org/google-maps/maps-zen-not-lost/</link>
		<comments>https://googledata.org/google-maps/maps-zen-not-lost/#comments</comments>
		<pubDate>Wed, 16 Sep 2015 18:25:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=4f5d478725f24f9d3dcd280c719f1056</guid>
		<description><![CDATA[<span>Posted by <a href="http://google.com/+AnkurKotwal">Ankur Kotwal</a>, Developer Advocate at Google</span><br /><br /><b><i>Editor's Note:</i></b> Gone are the days when users were impressed with a marker on a map. The <a href="http://googlegeodevelopers.blogspot.com/search/label/Maps%20Zen">Maps Zen blog post series</a> covers integrations of Google Maps APIs to help your apps provide great maps user experiences. What&#8217;s a zen pattern? Simply put, a design pattern that results in harmonious user experiences.<br /><br /><div>
<br /></div>
<br />
Maps are awesome because they show us where to go. But how are your users getting to their chosen destination? The <a href="https://developers.google.com/maps/documentation/directions/intro">Directions API</a> web service provides step-by-step directions from point A to B and can get your user where they&#8217;re going. Being a web service, it is protected by an API key and thus it should not consumed in the mobile app - proxy it via your server as shown here.<br /><div>
<span><img height="373px;" src="https://lh5.googleusercontent.com/oJChV8zTvDmA6v3wv4hw28HL8kEVPK195BBMQ-djTO-Vi4yzH1ncJq8NhUMFUdikJwc3sYbjs9VterhFmtGQHfQEbPx7VUOXB7xZtIxJYFhsZWB15VFLRIQHG-1U91cWDg=s1600" width="528px;"></span></div>
<span></span><br />
The Directions API can give you walking, cycling and driving directions as expected. But it also gives great public transport directions. When guiding users to a destination, it&#8217;s best to show them the path on a map.<br /><br /><a href="https://developers.google.com/maps/documentation/android/shapes#polylines">Polylines</a> are a great way to show a path but rather than have them simply appear on the map, it&#8217;s nicer to animate them in place. In the image below, the intended path grows providing a clear distinction about the direction of travel.<br /><div>
<span><img height="360" src="https://lh4.googleusercontent.com/JD2eNBO04pAQ3WNnlP_ifYK0MDO5VAyrUMUNhnR74PWg4phrTqxxBMe131bdPSCpURVYgzwtEoXgA2pjfnweHV8fgExaB6RXkirHAdRMB8GVLOP3-vqaDBrEDFox1xDQQQ=s1600" width="640"></span></div>
<span></span><br />
So now we&#8217;re showing users where to go and how to get there. But once they&#8217;re at their destination, our app&#8217;s work is not done. In Shibuya, a city in Tokyo, Japan, there are many tall buildings whose shops visible from the road. It can be really hard to tell which one of those is the destination. In effect, users can be left feeling lost after they get to their destination. Thankfully, there&#8217;s a Maps API for that!<br /><br /><a href="https://developers.google.com/maps/documentation/android/streetview">Street View</a> is a great way to visualize the user&#8217;s destination, or any address really. Adding Street View adds a real-world visual element to your app and provides meaningful context for users. Users will generally expect that they can interact with a Street View since they&#8217;re likely to pan and scan around the location so be sure to leave not to disable interactivity with the <a href="https://developers.google.com/maps/documentation/android/streetview#use_the_api">StreetViewPanorama</a>.<br /><div>
<span><img height="339px;" src="https://lh6.googleusercontent.com/qOqVQssrOYdIROWQirRfWV9tnDGbdHDKwK20RY-dTdnCWUVcw4ckuhi4VttnEMXvw7qI6JRp5j7npDJ6z0prFW7icWYvYndVBWAWa10feIrwHyCS6aZsH34NK9mMLi20bw=s1600" width="602px;"></span></div>
<span></span><br />
You can add a <a href="https://developers.google.com/maps/documentation/android/streetview#use_the_api">StreetViewPanorama</a> into your app by including it in your XML layouts, like so.<br /><pre>&#60;fragment
    android:id="@+id/streetview"
    android:name=
        "com.google.android.gms.maps.StreetViewPanoramaFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/&#62;</pre>
<br />
You can provide a location for the StreetViewPanorama using the following Java code.<br /><pre>streetViewPanorama.setPosition(targetLatLng);
StreetViewPanoramaCamera camera =
    new StreetViewPanoramaCamera(zoom, tilt, bearing);
mStreetViewPanorama.animateTo(camera, duration);</pre>
<br />
With guided directions and the addition of Street View in your apps, users are given a visual representation of their destination. They&#8217;re no longer lost on the way there and they&#8217;re not lost when they get there.]]></description>
				<content:encoded><![CDATA[<span class="post-author">Posted by <a href="http://google.com/+AnkurKotwal">Ankur Kotwal</a>, Developer Advocate at Google</span><br />
<br />
<b><i>Editor's Note:</i></b> Gone are the days when users were impressed with a marker on a map. The <a href="http://googlegeodevelopers.blogspot.com/search/label/Maps%20Zen">Maps Zen blog post series</a> covers integrations of Google Maps APIs to help your apps provide great maps user experiences. What’s a zen pattern? Simply put, a design pattern that results in harmonious user experiences.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/VjEfpl9_iDU?list=PLOU2XLYxmsIJDPXCTt5TLDu67271PruEk" width="560"></iframe><br /></div>
<br />
Maps are awesome because they show us where to go. But how are your users getting to their chosen destination? The <a href="https://developers.google.com/maps/documentation/directions/intro">Directions API</a> web service provides step-by-step directions from point A to B and can get your user where they’re going. Being a web service, it is protected by an API key and thus it should not consumed in the mobile app - proxy it via your server as shown here.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Arial; font-size: 14.6667px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img height="373px;" src="https://lh5.googleusercontent.com/oJChV8zTvDmA6v3wv4hw28HL8kEVPK195BBMQ-djTO-Vi4yzH1ncJq8NhUMFUdikJwc3sYbjs9VterhFmtGQHfQEbPx7VUOXB7xZtIxJYFhsZWB15VFLRIQHG-1U91cWDg=s1600" style="border: none; transform: rotate(0rad);" width="528px;" /></span></div>
<span id="docs-internal-guid-4adcdd71-d214-df06-d5ae-6f98bbbe199a"></span><br />
The Directions API can give you walking, cycling and driving directions as expected. But it also gives great public transport directions. When guiding users to a destination, it’s best to show them the path on a map.<br />
<br />
<a href="https://developers.google.com/maps/documentation/android/shapes#polylines">Polylines</a> are a great way to show a path but rather than have them simply appear on the map, it’s nicer to animate them in place. In the image below, the intended path grows providing a clear distinction about the direction of travel.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Arial; font-size: 14.6667px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img height="360" src="https://lh4.googleusercontent.com/JD2eNBO04pAQ3WNnlP_ifYK0MDO5VAyrUMUNhnR74PWg4phrTqxxBMe131bdPSCpURVYgzwtEoXgA2pjfnweHV8fgExaB6RXkirHAdRMB8GVLOP3-vqaDBrEDFox1xDQQQ=s1600" style="border: none; transform: rotate(0rad);" width="640" /></span></div>
<span id="docs-internal-guid-4adcdd71-d215-7837-a371-54dac53ea30a"></span><br />
So now we’re showing users where to go and how to get there. But once they’re at their destination, our app’s work is not done. In Shibuya, a city in Tokyo, Japan, there are many tall buildings whose shops visible from the road. It can be really hard to tell which one of those is the destination. In effect, users can be left feeling lost after they get to their destination. Thankfully, there’s a Maps API for that!<br />
<br />
<a href="https://developers.google.com/maps/documentation/android/streetview">Street View</a> is a great way to visualize the user’s destination, or any address really. Adding Street View adds a real-world visual element to your app and provides meaningful context for users. Users will generally expect that they can interact with a Street View since they’re likely to pan and scan around the location so be sure to leave not to disable interactivity with the <a href="https://developers.google.com/maps/documentation/android/streetview#use_the_api">StreetViewPanorama</a>.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Arial; font-size: 14.6667px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img height="339px;" src="https://lh6.googleusercontent.com/qOqVQssrOYdIROWQirRfWV9tnDGbdHDKwK20RY-dTdnCWUVcw4ckuhi4VttnEMXvw7qI6JRp5j7npDJ6z0prFW7icWYvYndVBWAWa10feIrwHyCS6aZsH34NK9mMLi20bw=s1600" style="border: none; transform: rotate(0rad);" width="602px;" /></span></div>
<span id="docs-internal-guid-4adcdd71-d217-5d61-9363-31572f25ee52"></span><br />
You can add a <a href="https://developers.google.com/maps/documentation/android/streetview#use_the_api">StreetViewPanorama</a> into your app by including it in your XML layouts, like so.<br />
<pre>&lt;fragment
    android:id="@+id/streetview"
    android:name=
        "com.google.android.gms.maps.StreetViewPanoramaFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/&gt;</pre>
<br />
You can provide a location for the StreetViewPanorama using the following Java code.<br />
<pre>streetViewPanorama.setPosition(targetLatLng);
StreetViewPanoramaCamera camera =
    new StreetViewPanoramaCamera(zoom, tilt, bearing);
mStreetViewPanorama.animateTo(camera, duration);</pre>
<br />
With guided directions and the addition of Street View in your apps, users are given a visual representation of their destination. They’re no longer lost on the way there and they’re not lost when they get there.]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/maps-zen-not-lost/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>New Controls Style for the Google Maps JavaScript API</title>
		<link>https://googledata.org/google-maps/new-controls-style-for-the-google-maps-javascript-api/</link>
		<comments>https://googledata.org/google-maps/new-controls-style-for-the-google-maps-javascript-api/#comments</comments>
		<pubDate>Tue, 15 Sep 2015 23:46:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=297d699eb87f48586f6d717d84d08966</guid>
		<description><![CDATA[<i>Controls</i> are UI elements that allow your users to interact with a map. Whether they are moving Pegman to see Street View or switching between map and satellite modes, people use the controls to explore and get the information they need from a map. <br /><br />
The <a href="https://developers.google.com/maps/documentation/javascript/">Google Maps JavaScript API</a> has a range of options that let developers customize controls by changing their visibility, positioning, styling and behavior. <a href="https://developers.google.com/maps/documentation/javascript/controls">Control options</a> give developers a lot of flexibility to change the way controls work on their maps. <br /><br />
Today, we are rolling out an update to the Google Maps JavaScript API default controls. The updated controls have a more modern look and feel and are more consistent with other Google Maps products, including the <a href="https://developers.google.com/maps/documentation/embed/">Google Maps Embed API</a> and the <a href="https://www.google.com/maps">Google Maps website</a>. Most features of the new control style have already been available to <a href="https://developers.google.com/maps/documentation/javascript/signedin">signed-in maps</a>, but today we are excited to make the new control style available by default to all maps, not just those with signed-in mode enabled. <br /><br />
This API update changes the position, color and size of many of the controls, as well as the functionality of a few controls. For example, the zoom control feature is now on the bottom right instead of the top left, with only &#8220;+&#8221; and &#8220;-&#8221; buttons instead of a slider. In addition, some controls and control options are no longer available in v3.22 of the API (the current experimental version). The Google logo has also been updated to the new version.<br /><br /><div dir="ltr">
<table><colgroup><col width="*"><col width="*"></colgroup><tbody><tr><td><div dir="ltr">
<span>Old</span></div>
</td><td><div dir="ltr">
<span>New</span></div>
</td></tr><tr><td><div>
<span><img alt="Screen Shot 2015-08-25 at 7.33.31 AM.png" height="219px;" src="https://lh4.googleusercontent.com/1soTfqyq2u-6wGueMAo-BwRabXsMXTRq14Ci9niePkdBP5l0-BMscxm3eE8uBofzyd3x2NLitiPYlE0JEn5T6Ue0itJo6RK6eTv0Dy9OxZu2meUU2S4oZUYYC3LDJgj_dJI7szQ" width="297px;"></span></div>
<div dir="ltr">
</div>
</td><td><div>
<span><img height="220px;" src="https://lh4.googleusercontent.com/3v6bGz6mGVkh6yKMe4mNEDxIIqeVuCP5QoKWmqXU-J6EvgVusJnzLMWBT9mkiaB7O1-045edfCW-NskC8DJn9qjp-tnM4lG4j2sdDczJBO7zoUvmZZLQWEny6jPluM6EqeU=s1600" width="297px;"></span></div>
<div dir="ltr">
</div>
</td></tr></tbody></table></div>
<br />
You can temporarily switch back to the old control style in API versions 3.22 (current experimental version) and 3.23 (experimental version from November 2015). In versions 3.22 and 3.23, the old control style can be obtained setting a single parameter, <span>google.maps.controlStyle = 'azteca'</span>, before you initialize the map. This parameter will be available until August 2016, giving you ample time to make any required updates to your application. In version 3.24 (experimental version from February 2016), this parameter will be removed. If you are using custom controls or UI elements that overlap the map, we recommend that you test your application with the new controls style and make any updates well before August 2016. The new logo is the only change that affects all API versions and cannot be removed.<br /><br />
For full details of how individual controls will be affected, as well as how to revert to the old controls style, please refer to our <a href="https://developers.google.com/maps/articles/v322-controls-diff">developer documentation</a>. You can also visit the Maps API <a href="https://developers.google.com/maps/documentation/javascript/versions">versioning guide</a> for details of how Maps API versions work, how to check which API version you are using, and other best practices for developers.<br /><br /><i>Posted by Elena Kelareva, Product Manager, Google Maps APIs</i>]]></description>
				<content:encoded><![CDATA[<i>Controls</i> are UI elements that allow your users to interact with a map. Whether they are moving Pegman to see Street View or switching between map and satellite modes, people use the controls to explore and get the information they need from a map. <br />
<br />
The <a href="https://developers.google.com/maps/documentation/javascript/">Google Maps JavaScript API</a> has a range of options that let developers customize controls by changing their visibility, positioning, styling and behavior. <a href="https://developers.google.com/maps/documentation/javascript/controls">Control options</a> give developers a lot of flexibility to change the way controls work on their maps. <br />
<br />
Today, we are rolling out an update to the Google Maps JavaScript API default controls. The updated controls have a more modern look and feel and are more consistent with other Google Maps products, including the <a href="https://developers.google.com/maps/documentation/embed/">Google Maps Embed API</a> and the <a href="https://www.google.com/maps">Google Maps website</a>. Most features of the new control style have already been available to <a href="https://developers.google.com/maps/documentation/javascript/signedin">signed-in maps</a>, but today we are excited to make the new control style available by default to all maps, not just those with signed-in mode enabled. <br />
<br />
This API update changes the position, color and size of many of the controls, as well as the functionality of a few controls. For example, the zoom control feature is now on the bottom right instead of the top left, with only “+” and “-” buttons instead of a slider. In addition, some controls and control options are no longer available in v3.22 of the API (the current experimental version). The Google logo has also been updated to the new version.<br />
<br />
<div dir="ltr" style="margin-left: 0pt;">
<table style="border-collapse: collapse; border: none; width: 624px;"><colgroup><col width="*"></col><col width="*"></col></colgroup><tbody>
<tr style="height: 0px;"><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Old</span></div>
</td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">New</span></div>
</td></tr>
<tr style="height: 0px;"><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div class="separator" style="clear: both; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; margin-left: 1em; margin-right: 1em; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img alt="Screen Shot 2015-08-25 at 7.33.31 AM.png" height="219px;" src="https://lh4.googleusercontent.com/1soTfqyq2u-6wGueMAo-BwRabXsMXTRq14Ci9niePkdBP5l0-BMscxm3eE8uBofzyd3x2NLitiPYlE0JEn5T6Ue0itJo6RK6eTv0Dy9OxZu2meUU2S4oZUYYC3LDJgj_dJI7szQ" style="border: none; transform: rotate(0rad);" width="297px;" /></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
</div>
</td><td style="border-bottom: solid #000000 1px; border-left: solid #000000 1px; border-right: solid #000000 1px; border-top: solid #000000 1px; padding: 7px 7px 7px 7px; vertical-align: top;"><div class="separator" style="clear: both; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 14.6667px; font-style: normal; font-variant: normal; font-weight: 400; margin-left: 1em; margin-right: 1em; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img height="220px;" src="https://lh4.googleusercontent.com/3v6bGz6mGVkh6yKMe4mNEDxIIqeVuCP5QoKWmqXU-J6EvgVusJnzLMWBT9mkiaB7O1-045edfCW-NskC8DJn9qjp-tnM4lG4j2sdDczJBO7zoUvmZZLQWEny6jPluM6EqeU=s1600" style="border: none; transform: rotate(0rad);" width="297px;" /></span></div>
<div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
</div>
</td></tr>
</tbody></table>
</div>
<br />
You can temporarily switch back to the old control style in API versions 3.22 (current experimental version) and 3.23 (experimental version from November 2015). In versions 3.22 and 3.23, the old control style can be obtained setting a single parameter, <span style="font-family: Courier New, Courier, monospace;">google.maps.controlStyle = 'azteca'</span>, before you initialize the map. This parameter will be available until August 2016, giving you ample time to make any required updates to your application. In version 3.24 (experimental version from February 2016), this parameter will be removed. If you are using custom controls or UI elements that overlap the map, we recommend that you test your application with the new controls style and make any updates well before August 2016. The new logo is the only change that affects all API versions and cannot be removed.<br />
<br />
For full details of how individual controls will be affected, as well as how to revert to the old controls style, please refer to our <a href="https://developers.google.com/maps/articles/v322-controls-diff">developer documentation</a>. You can also visit the Maps API <a href="https://developers.google.com/maps/documentation/javascript/versions">versioning guide</a> for details of how Maps API versions work, how to check which API version you are using, and other best practices for developers.<br />
<br />
<i>Posted by Elena Kelareva, Product Manager, Google Maps APIs</i>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/new-controls-style-for-the-google-maps-javascript-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Maps Zen — Visualize</title>
		<link>https://googledata.org/google-maps/maps-zen-visualize/</link>
		<comments>https://googledata.org/google-maps/maps-zen-visualize/#comments</comments>
		<pubDate>Thu, 10 Sep 2015 15:47:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=48dd4789fb2102a7accc475508c574eb</guid>
		<description><![CDATA[<span>Posted by <a href="http://google.com/+AnkurKotwal">Ankur Kotwal</a>, Developer Advocate at Google</span><br /><br /><i><b>Editor's Note:</b> Gone are the days when users were impressed with a marker on a map. The <a href="http://googlegeodevelopers.blogspot.com/search/label/Maps%20Zen">Maps Zen blog post series</a> covers integrations of Google Maps APIs to help your apps provide great maps user experiences. What&#8217;s a zen pattern? Simply put, a design pattern that results in harmonious user experiences.</i><br /><br /><div>
<br /></div>
<br /><a href="https://developers.google.com/maps/documentation/android/marker">Markers</a> are much more useful than identifying points on a map. Markers can also be used as a way to visually convey information about a place. If a user is searching for a well rated restaurant, they&#8217;d fire up your app to find that there&#8217;s a bunch of restaurants in their vicinity. But it&#8217;s not easy to tell which ones are actually worth visiting. To see the ratings for each place, they&#8217;d end up having to tap each one first.<br /><div>
<span><img height="339px;" src="https://lh5.googleusercontent.com/ne-Q-eP2ZIA7VPoL-43akwEak6K0G5NihZQbgyZv1HVAeEbWAO_Gu9b3ooNTkirM0hw56LXGvq7nXRV_WbPQPy6btqJOfSR_F2GWpr2vxg1JAwurDrumb3099KQR-Vpsx00=s1600" width="602px;"></span></div>
<span></span><br />
Here&#8217;s an how marker selection and marker animations can be a great way to show this information. In this example, markers that lack colour rate poorly and the vibrant colorful markers are the highly rated ones. There&#8217;s also animated steam on some markers also helping to highlight the best rated restaurants!<br /><div>
<span><img height="339px;" src="https://lh6.googleusercontent.com/szIjQTAP6sQU2Owb_MgZH7lXYAVkoK-0s0SnDSASEMJ54WJLHreFiu-pYEZcQ1VGnpGUR7oLHexhJu0YEteJN8oxqafamnX5kZ8IpndovDnDGf59IDl-TbSFNoh52G7zEA=s1600" width="602px;"></span></div>
<span></span><br />
To achieve the steam animation, the marker icon is being changed by calling the <a href="https://developers.google.com/android/reference/com/google/android/gms/maps/model/Marker.html#setIcon(com.google.android.gms.maps.model.BitmapDescriptor)">setIcon()</a> method periodically. A delay of 32ms roughly corresponds to 30 marker icon updates a second &#8212; animating the icon at 30 frames per second.<br /><pre>mAnimHandler.post(new Runnable() {
@Override
public void run() {
marker.setIcon(mSteamFrames.nextFrame());
// Next frame in 32 ms
mAnimHandler.postDelayed(this, 32);
}
});</pre>
<br />
To desaturate the marker icons, a <a href="http://developer.android.com/reference/android/graphics/ColorMatrixColorFilter.html">ColorMatrixColorFilter</a> from the Android framework being used. First, setup the color filter based on the restaurant rating scale via a <a href="http://developer.android.com/reference/android/graphics/ColorMatrix.html">ColorMatrix</a>. In this case, any restaurant that has a 3 star rating will be presented as having an entirely grayscale icon. Restaurants with a 4.5 star or higher rating will be presented in full color. The restaurant scale is set it to a Paint object and the filter is applied to the marker image using a canvas.<br /><pre>ColorMatrix desatMatrix = new ColorMatrix();
desatMatrix.setSaturation(restaurantRating);

ColorFilter paintColorFilter = new
ColorMatrixColorFilter(desatMatrix);
Paint paint = new Paint();

paint.setColorFilter(paintColorFilter);

Canvas canvas = new Canvas(newImage);
canvas.drawBitmap(oldImage, 0, 0, paint);</pre>
<br />
Markers are great for showing points on a map but sometimes you can end up with too many. In this case, we have too well rated many restaurants around us - sure, it&#8217;s a nice problem to have but it&#8217;s not helping the user choose a restaurant. In such situations, you need to display many markers but still keep the view comprehensible. We&#8217;re going to look at two ways to overcome these issues.<br /><br />
The first is through the use of marker clustering. As the zoom levels of the map change, markers are aggregated making for a much more digestible view. Now as the map zooms out, markers will combine, showing how many restaurants are in the surrounding areas.<br /><div>
<span><img height="339px;" src="https://lh5.googleusercontent.com/M_y3Uj6-zbAi0IklnD5v7I8DKGK1AAn0jfyetjeqBHhzP4munADkst3jpacn8lE8hpqM-h9kDEHwT_BJSuBylcq6B_7pEAC1V06a4pihcNUYqGZWVFF6GLXcYrqJUs-5AA=s1600" width="602px;"></span></div>
<span></span><br />
This visual effect may seem like a lot of work, but it is not. The <a href="https://developers.google.com/maps/documentation/android/utility/">Android Maps Util library</a> provides a four-step implementation of <a href="https://developers.google.com/maps/documentation/android-api/utility/?hl=en#clustering">marker clustering</a>:<br /><br />
1. Add the library to your gradle config.<br /><pre>compile 'com.google.maps.android:android-maps-utils:0.3+'</pre>
2. Implement <a href="https://github.com/googlemaps/android-maps-utils/blob/master/library/src/com/google/maps/android/clustering/ClusterItem.java">ClusterItem</a> interface in your main data class.<br /><pre>public interface ClusterItem {
LatLng getPosition();
}</pre>
3. Instantiate the cluster manager and register it for a couple of map listeners.<br /><pre>mClusterManager = new ClusterManager&#60;&#62;(this, mMap);
mMap.setOnCameraChangeListener(mClusterManager);
mMap.setOnMarkerClickListener(mClusterManager);</pre>
4. Replace your marker management code with calls to the cluster manager  - the cluster manager will manage adding and removing the markers for you.<br /><pre>mClusterManager.addItem(clusterItem);</pre>
5. You can optionally customise the effect further by providing custom aggregate markers (showing images instead of a count for example).<br /><br />
Let&#8217;s look at the second method to show marker aggregation - it looks really cool! Here, the count of markers are replaced with a heat map showing the concentration of these markers.<br /><div>
<span><img height="339px;" src="https://lh5.googleusercontent.com/WvRxS5mySHbHqbW5AYbwklQ4lCtYLbvg_azxBCaL8cFWiBp8Z2WfH-KKh5fa1RzKLqCP7JGG3L6sRtuPM86ed7tLviWZO8hIm3M539Z_WFK8Cd3SQhB1seu0sB61GsiW=s1600" width="602px;"></span></div>
<span></span><br />
Achieving this effect is also just four simple steps using the <a href="https://developers.google.com/maps/documentation/android/utility/">Android Maps Utils library</a>, thanks to its <a href="https://developers.google.com/maps/documentation/android/utility/#heatmap">heatmaps</a>.<br /><br />
1. Add the library to your gradle config.<br /><pre>compile 'com.google.maps.android:android-maps-utils:0.3+'</pre>
2. Instantiate a HeatMapTileProvider and pass it your LatLngs.<br /><pre>mHeatmapTileProvider = new HeatmapTileProvider.Builder()
.data(mLatLngCollection)
.build();</pre>
3. Use it to create a map overlay. <br /><pre>mTileOverlay = mMap.addTileOverlay(
new TileOverlayOptions().tileProvider(mHeatmapTileProvider));</pre>
4. You can optionally customize this further by specifying the gradient and the radius of the heatmap.<br /><br />
It&#8217;s worth keeping in mind that information overload is a common problem with mobile apps. Location apps, in particular suffer from poor user experiences when dealing lots of places. The <a href="https://developers.google.com/maps/documentation/android/utility/">Android Maps Utils library</a> offers beautiful visualizations enabling you to build amazing maps.]]></description>
				<content:encoded><![CDATA[<span class="post-author">Posted by <a href="http://google.com/+AnkurKotwal">Ankur Kotwal</a>, Developer Advocate at Google</span><br />
<br />
<i><b>Editor's Note:</b> Gone are the days when users were impressed with a marker on a map. The <a href="http://googlegeodevelopers.blogspot.com/search/label/Maps%20Zen">Maps Zen blog post series</a> covers integrations of Google Maps APIs to help your apps provide great maps user experiences. What’s a zen pattern? Simply put, a design pattern that results in harmonious user experiences.</i><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/FFm9NmSfjw0?list=PLOU2XLYxmsIJDPXCTt5TLDu67271PruEk" width="560"></iframe><br /></div>
<br />
<a href="https://developers.google.com/maps/documentation/android/marker">Markers</a> are much more useful than identifying points on a map. Markers can also be used as a way to visually convey information about a place. If a user is searching for a well rated restaurant, they’d fire up your app to find that there’s a bunch of restaurants in their vicinity. But it’s not easy to tell which ones are actually worth visiting. To see the ratings for each place, they’d end up having to tap each one first.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Arial; font-size: 13.3333px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img height="339px;" src="https://lh5.googleusercontent.com/ne-Q-eP2ZIA7VPoL-43akwEak6K0G5NihZQbgyZv1HVAeEbWAO_Gu9b3ooNTkirM0hw56LXGvq7nXRV_WbPQPy6btqJOfSR_F2GWpr2vxg1JAwurDrumb3099KQR-Vpsx00=s1600" style="border: none; transform: rotate(0rad);" width="602px;" /></span></div>
<span id="docs-internal-guid-46ae41a0-b7ed-a61d-25b7-22e7bb33a2be"></span><br />
Here’s an how marker selection and marker animations can be a great way to show this information. In this example, markers that lack colour rate poorly and the vibrant colorful markers are the highly rated ones. There’s also animated steam on some markers also helping to highlight the best rated restaurants!<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Arial; font-size: 13.3333px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img height="339px;" src="https://lh6.googleusercontent.com/szIjQTAP6sQU2Owb_MgZH7lXYAVkoK-0s0SnDSASEMJ54WJLHreFiu-pYEZcQ1VGnpGUR7oLHexhJu0YEteJN8oxqafamnX5kZ8IpndovDnDGf59IDl-TbSFNoh52G7zEA=s1600" style="border: none; transform: rotate(0rad);" width="602px;" /></span></div>
<span id="docs-internal-guid-46ae41a0-b7ee-01d2-8537-0f688e3356d5"></span><br />
To achieve the steam animation, the marker icon is being changed by calling the <a href="https://developers.google.com/android/reference/com/google/android/gms/maps/model/Marker.html#setIcon(com.google.android.gms.maps.model.BitmapDescriptor)">setIcon()</a> method periodically. A delay of 32ms roughly corresponds to 30 marker icon updates a second — animating the icon at 30 frames per second.<br />
<pre>mAnimHandler.post(new Runnable() {
@Override
public void run() {
marker.setIcon(mSteamFrames.nextFrame());
// Next frame in 32 ms
mAnimHandler.postDelayed(this, 32);
}
});</pre>
<br />
To desaturate the marker icons, a <a href="http://developer.android.com/reference/android/graphics/ColorMatrixColorFilter.html">ColorMatrixColorFilter</a> from the Android framework being used. First, setup the color filter based on the restaurant rating scale via a <a href="http://developer.android.com/reference/android/graphics/ColorMatrix.html">ColorMatrix</a>. In this case, any restaurant that has a 3 star rating will be presented as having an entirely grayscale icon. Restaurants with a 4.5 star or higher rating will be presented in full color. The restaurant scale is set it to a Paint object and the filter is applied to the marker image using a canvas.<br />
<pre>ColorMatrix desatMatrix = new ColorMatrix();
desatMatrix.setSaturation(restaurantRating);

ColorFilter paintColorFilter = new
ColorMatrixColorFilter(desatMatrix);
Paint paint = new Paint();

paint.setColorFilter(paintColorFilter);

Canvas canvas = new Canvas(newImage);
canvas.drawBitmap(oldImage, 0, 0, paint);</pre>
<br />
Markers are great for showing points on a map but sometimes you can end up with too many. In this case, we have too well rated many restaurants around us - sure, it’s a nice problem to have but it’s not helping the user choose a restaurant. In such situations, you need to display many markers but still keep the view comprehensible. We’re going to look at two ways to overcome these issues.<br />
<br />
The first is through the use of marker clustering. As the zoom levels of the map change, markers are aggregated making for a much more digestible view. Now as the map zooms out, markers will combine, showing how many restaurants are in the surrounding areas.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Arial; font-size: 13.3333px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img height="339px;" src="https://lh5.googleusercontent.com/M_y3Uj6-zbAi0IklnD5v7I8DKGK1AAn0jfyetjeqBHhzP4munADkst3jpacn8lE8hpqM-h9kDEHwT_BJSuBylcq6B_7pEAC1V06a4pihcNUYqGZWVFF6GLXcYrqJUs-5AA=s1600" style="border: none; transform: rotate(0rad);" width="602px;" /></span></div>
<span id="docs-internal-guid-46ae41a0-b7ee-5bae-9731-6b2dcb84ee09"></span><br />
This visual effect may seem like a lot of work, but it is not. The <a href="https://developers.google.com/maps/documentation/android/utility/">Android Maps Util library</a> provides a four-step implementation of <a href="https://developers.google.com/maps/documentation/android-api/utility/?hl=en#clustering">marker clustering</a>:<br />
<br />
1. Add the library to your gradle config.<br />
<pre>compile 'com.google.maps.android:android-maps-utils:0.3+'</pre>
2. Implement <a href="https://github.com/googlemaps/android-maps-utils/blob/master/library/src/com/google/maps/android/clustering/ClusterItem.java">ClusterItem</a> interface in your main data class.<br />
<pre>public interface ClusterItem {
LatLng getPosition();
}</pre>
3. Instantiate the cluster manager and register it for a couple of map listeners.<br />
<pre>mClusterManager = new ClusterManager&lt;&gt;(this, mMap);
mMap.setOnCameraChangeListener(mClusterManager);
mMap.setOnMarkerClickListener(mClusterManager);</pre>
4. Replace your marker management code with calls to the cluster manager  - the cluster manager will manage adding and removing the markers for you.<br />
<pre>mClusterManager.addItem(clusterItem);</pre>
5. You can optionally customise the effect further by providing custom aggregate markers (showing images instead of a count for example).<br />
<br />
Let’s look at the second method to show marker aggregation - it looks really cool! Here, the count of markers are replaced with a heat map showing the concentration of these markers.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Arial; font-size: 13.3333px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img height="339px;" src="https://lh5.googleusercontent.com/WvRxS5mySHbHqbW5AYbwklQ4lCtYLbvg_azxBCaL8cFWiBp8Z2WfH-KKh5fa1RzKLqCP7JGG3L6sRtuPM86ed7tLviWZO8hIm3M539Z_WFK8Cd3SQhB1seu0sB61GsiW=s1600" style="border: none; transform: rotate(0rad);" width="602px;" /></span></div>
<span id="docs-internal-guid-46ae41a0-b7ee-b291-4fc1-e9122127ac43"></span><br />
Achieving this effect is also just four simple steps using the <a href="https://developers.google.com/maps/documentation/android/utility/">Android Maps Utils library</a>, thanks to its <a href="https://developers.google.com/maps/documentation/android/utility/#heatmap">heatmaps</a>.<br />
<br />
1. Add the library to your gradle config.<br />
<pre>compile 'com.google.maps.android:android-maps-utils:0.3+'</pre>
2. Instantiate a HeatMapTileProvider and pass it your LatLngs.<br />
<pre>mHeatmapTileProvider = new HeatmapTileProvider.Builder()
.data(mLatLngCollection)
.build();</pre>
3. Use it to create a map overlay. <br />
<pre>mTileOverlay = mMap.addTileOverlay(
new TileOverlayOptions().tileProvider(mHeatmapTileProvider));</pre>
4. You can optionally customize this further by specifying the gradient and the radius of the heatmap.<br />
<br />
It’s worth keeping in mind that information overload is a common problem with mobile apps. Location apps, in particular suffer from poor user experiences when dealing lots of places. The <a href="https://developers.google.com/maps/documentation/android/utility/">Android Maps Utils library</a> offers beautiful visualizations enabling you to build amazing maps.]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/maps-zen-visualize/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Kocomojo brings beacon technology to marketers with Google Maps APIs</title>
		<link>https://googledata.org/google-maps/kocomojo-brings-beacon-technology-to-marketers-with-google-maps-apis/</link>
		<comments>https://googledata.org/google-maps/kocomojo-brings-beacon-technology-to-marketers-with-google-maps-apis/#comments</comments>
		<pubDate>Wed, 09 Sep 2015 15:48:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=1ca41cc8738a345deb0cd9ea8578d030</guid>
		<description><![CDATA[<span>Posted by Kristan Hamill, CEO, Kocomojo</span><br /><br /><i><b>Editor&#8217;s note:</b> Today&#8217;s guest blogger is Kristan Hamill, CEO of the proximity-based marketing company Kocomojo. Read how <a href="http://www.kocomojo.com/">Kocomojo</a> uses Google Maps APIs to help businesses build customer loyalty.</i><br /><br />
Access to real-time location data has opened up new ways to interact with and better understand customers and customer behavior. With the Kocomojo web dashboard and mobile SDK, marketers can create campaigns inside their own applications or third-party apps based on real-time customer locations and behavior. Since geo-targeting is becoming one of the most powerful ways businesses can connect with customers, we partnered with Google Maps Premier Partner <a href="http://www.ditoweb.com/">Dito</a> to build our <a href="http://www.kocomojo.com/">Kocomojo</a> proximity-based marketing platform, KocoConnectTM using <a href="https://developers.google.com/maps/">Google Maps APIs</a>.<br /><br />
Beacons (Bluetooth low energy devices ) broadcast their location to nearby portable electronic devices, allowing smartphones, tablets and other devices to perform actions when in close proximity to beacons. This gives marketers the ability to promote at close proximity in the range of three to fifty feet with accuracy up to three feet. You can read more about beacons on the <a href="https://developers.google.com/beacons/">Google Developers website</a>.<br /><br />
When we combine geofences with beacon technology, marketers can create sophisticated geo-targeted and hyper-local boundaries that trigger campaigns on the mobile phone. These campaigns can direct customer foot traffic and help businesses interact with customers who are near or on premises. And the KocoConnect platform is beacon agnostic, working with iBeacon, Eddystone, and proprietary beacon protocols so that marketers using it have options when selecting beacon hardware.<br /><div>
<span><img alt="Kocomojo screenshot map.png" height="640" src="https://lh6.googleusercontent.com/SGcsF1IqAuiD51aXmKaJArb1Gpnn7sdxWEwHmai4JL6X__q-zmxnjElQcceX4zQb9vBKaVXSvZiuCMMjL_vQNH_vqNeCFRNSKyAxUGYL1hk6cyyxgNox2OpoJtBG6sezRTFO-24" width="556"></span></div>
<span></span><br />
The <a href="https://developers.google.com/maps/documentation/javascript/">Google Maps JavaScript API</a> allows us to insert maps into our Web dashboard, so clients can instantly visualize their data and make informed decisions. With the Kocomojo analytics tools, marketers can measure engagement rates, user preference on A / B tests, and promotion performance over time or within any particular boundary, making adjustments to campaign strategy as needed. People intuitively know how to use Google Maps, so they can quickly focus on the work that needs to be done rather than spend time learning a new interface. <br /><br />
The <a href="https://developers.google.com/maps/documentation/geocoding/">Google Maps Geocoding API</a> and the <a href="https://developers.google.com/maps/documentation/javascript/drawinglayer">Google Maps Drawing Layer</a> let our clients draw a boundary around their stores to define the area in which they want to make offers to nearby customers. The same approach can be applied to building campaigns in remote areas, giving clients the flexibility to send targeted messaging to select neighborhoods and demographics. <br /><br />
When their customers are inside those boundaries, they&#8217;ll receive an offer or message on their phones. The boundary can be as small as a quarter mile or as wide as ten miles. The offers don&#8217;t have to be just for special sales &#8212; companies can also use them to build brand loyalty, for example, offering rewards for visiting a store a certain number of times or promoting an exclusive event.<br /><br />
When building proximity marketing campaigns in iOS and Android, we use the  Google Maps Geocoding API Web Service. For iOS, we use the <a href="https://developers.google.com/maps/documentation/ios/">Google Maps SDK for iOS</a>, and Android uses the <a href="https://developers.google.com/maps/documentation/android/">Google Maps Android API</a>.<br /><div>
<span><img alt="Kokomojo_2.png" height="640" src="https://lh6.googleusercontent.com/8DjSJ60m1hWHSdkS9GFLGMsaqgz90SlKT5Sq8vTw6xMajYh0OqRn-lijn1odRbBRwvreaL89EiSyh0VzngXWvP9fz9jKZrClDSDZ9d4Ubs3m2EvnVrvwmilT5ZastptNVGqj3UM" width="601"></span></div>
<span></span><br />
With the Google Maps APIs, we&#8217;re just starting to scratch the surface of what proximity-based marketing will eventually do. But even today, the results are phenomenal. Proximity-based marketing delivers a 60 percent engagement rate, which means that people respond to 60 percent of offers sent to them. That&#8217;s extraordinarily high. While that number may drop over time &#8212; new technologies often have the highest engagement rates when they&#8217;re first introduced &#8212; it&#8217;s clear that marketing that incorporates user&#8217;s location is here to stay, with benefits for both consumers and businesses.]]></description>
				<content:encoded><![CDATA[<span class="post-author">Posted by Kristan Hamill, CEO, Kocomojo</span><br />
<br />
<i><b>Editor’s note:</b> Today’s guest blogger is Kristan Hamill, CEO of the proximity-based marketing company Kocomojo. Read how <a href="http://www.kocomojo.com/">Kocomojo</a> uses Google Maps APIs to help businesses build customer loyalty.</i><br />
<br />
Access to real-time location data has opened up new ways to interact with and better understand customers and customer behavior. With the Kocomojo web dashboard and mobile SDK, marketers can create campaigns inside their own applications or third-party apps based on real-time customer locations and behavior. Since geo-targeting is becoming one of the most powerful ways businesses can connect with customers, we partnered with Google Maps Premier Partner <a href="http://www.ditoweb.com/">Dito</a> to build our <a href="http://www.kocomojo.com/">Kocomojo</a> proximity-based marketing platform, KocoConnectTM using <a href="https://developers.google.com/maps/">Google Maps APIs</a>.<br />
<br />
Beacons (Bluetooth low energy devices ) broadcast their location to nearby portable electronic devices, allowing smartphones, tablets and other devices to perform actions when in close proximity to beacons. This gives marketers the ability to promote at close proximity in the range of three to fifty feet with accuracy up to three feet. You can read more about beacons on the <a href="https://developers.google.com/beacons/">Google Developers website</a>.<br />
<br />
When we combine geofences with beacon technology, marketers can create sophisticated geo-targeted and hyper-local boundaries that trigger campaigns on the mobile phone. These campaigns can direct customer foot traffic and help businesses interact with customers who are near or on premises. And the KocoConnect platform is beacon agnostic, working with iBeacon, Eddystone, and proprietary beacon protocols so that marketers using it have options when selecting beacon hardware.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Arial; font-size: 13.3333px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="Kocomojo screenshot map.png" height="640" src="https://lh6.googleusercontent.com/SGcsF1IqAuiD51aXmKaJArb1Gpnn7sdxWEwHmai4JL6X__q-zmxnjElQcceX4zQb9vBKaVXSvZiuCMMjL_vQNH_vqNeCFRNSKyAxUGYL1hk6cyyxgNox2OpoJtBG6sezRTFO-24" style="border: none; transform: rotate(0rad);" width="556" /></span></div>
<span id="docs-internal-guid-0570e839-ae4c-74c0-21e6-a07af359bf80"></span><br />
The <a href="https://developers.google.com/maps/documentation/javascript/">Google Maps JavaScript API</a> allows us to insert maps into our Web dashboard, so clients can instantly visualize their data and make informed decisions. With the Kocomojo analytics tools, marketers can measure engagement rates, user preference on A / B tests, and promotion performance over time or within any particular boundary, making adjustments to campaign strategy as needed. People intuitively know how to use Google Maps, so they can quickly focus on the work that needs to be done rather than spend time learning a new interface. <br />
<br />
The <a href="https://developers.google.com/maps/documentation/geocoding/">Google Maps Geocoding API</a> and the <a href="https://developers.google.com/maps/documentation/javascript/drawinglayer">Google Maps Drawing Layer</a> let our clients draw a boundary around their stores to define the area in which they want to make offers to nearby customers. The same approach can be applied to building campaigns in remote areas, giving clients the flexibility to send targeted messaging to select neighborhoods and demographics. <br />
<br />
When their customers are inside those boundaries, they’ll receive an offer or message on their phones. The boundary can be as small as a quarter mile or as wide as ten miles. The offers don’t have to be just for special sales — companies can also use them to build brand loyalty, for example, offering rewards for visiting a store a certain number of times or promoting an exclusive event.<br />
<br />
When building proximity marketing campaigns in iOS and Android, we use the  Google Maps Geocoding API Web Service. For iOS, we use the <a href="https://developers.google.com/maps/documentation/ios/">Google Maps SDK for iOS</a>, and Android uses the <a href="https://developers.google.com/maps/documentation/android/">Google Maps Android API</a>.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Arial; font-size: 13.3333px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="Kokomojo_2.png" height="640" src="https://lh6.googleusercontent.com/8DjSJ60m1hWHSdkS9GFLGMsaqgz90SlKT5Sq8vTw6xMajYh0OqRn-lijn1odRbBRwvreaL89EiSyh0VzngXWvP9fz9jKZrClDSDZ9d4Ubs3m2EvnVrvwmilT5ZastptNVGqj3UM" style="border: none; transform: rotate(0rad);" width="601" /></span></div>
<span id="docs-internal-guid-0570e839-ae4d-1083-f639-34c0106e3d3f"></span><br />
With the Google Maps APIs, we’re just starting to scratch the surface of what proximity-based marketing will eventually do. But even today, the results are phenomenal. Proximity-based marketing delivers a 60 percent engagement rate, which means that people respond to 60 percent of offers sent to them. That’s extraordinarily high. While that number may drop over time — new technologies often have the highest engagement rates when they’re first introduced — it’s clear that marketing that incorporates user’s location is here to stay, with benefits for both consumers and businesses.]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/kocomojo-brings-beacon-technology-to-marketers-with-google-maps-apis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Introducing a more flexible option to purchase the Google Maps Web Service APIs</title>
		<link>https://googledata.org/google-maps/introducing-a-more-flexible-option-to-purchase-the-google-maps-web-service-apis/</link>
		<comments>https://googledata.org/google-maps/introducing-a-more-flexible-option-to-purchase-the-google-maps-web-service-apis/#comments</comments>
		<pubDate>Tue, 01 Sep 2015 23:35:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=3d2675297bd4017a77995b43b984e4c2</guid>
		<description><![CDATA[<span>Posted by Ken Hoetmer, Product Manager, Google Maps APIs</span><br /><br />
The <a href="https://developers.google.com/maps/web-services?utm_source=googleGeoBlog&#38;utm_medium=blog&#38;utm_campaign=mapsDevsiteRedesign20150901">Google Maps Web Service APIs</a> offer a powerful toolkit for the real world - including geocoding, directions, elevation for any point on earth, and snapping GPS crumbs to the road network.<br /><br />
Today we&#8217;re introducing a simple and flexible option for developers to instantly and easily scale with these Web Service APIs, by opening them up to <a href="https://developers.google.com/maps/pricing-and-plans?utm_source=googleGeoBlog&#38;utm_medium=blog&#38;utm_campaign=mapsDevsiteRedesign20150901">pay-as-you-go purchasing</a> via the Google Developers Console. In this new purchasing structure, the Google Maps Geocoding, Directions, Distance Matrix, Roads, Geolocation, Elevation, and Time Zone APIs remain free of charge for the first 2,500 requests per day, and developers may now simply pay $0.50 USD per 1,000 additional requests up to 100,000 requests per API per day. Developers requiring over 100,000 requests per day should <a href="https://developers.google.com/maps/contact-sales?utm_source=googleGeoBlog&#38;utm_medium=blog&#38;utm_campaign=mapsDevsiteRedesign20150901">contact us</a> to purchase a premium licence.<br /><br />
To get started, head over to our updated Google Maps APIs <a href="https://developers.google.com/maps?utm_source=googleGeoBlog&#38;utm_medium=blog&#38;utm_campaign=mapsDevsiteRedesign20150901">developer site</a> to check out the APIs, get a key, and provide your billing details to enable the higher limits.<br /><br /><div>
<a href="http://2.bp.blogspot.com/-2-vjnrpDBXI/VeWMxZa5gcI/AAAAAAAAAcI/wHExS0N9zcY/s1600/Screen%2BShot%2B2015-09-01%2Bat%2B9.30.21%2BPM.png"><img border="0" src="http://2.bp.blogspot.com/-2-vjnrpDBXI/VeWMxZa5gcI/AAAAAAAAAcI/wHExS0N9zcY/s1600/Screen%2BShot%2B2015-09-01%2Bat%2B9.30.21%2BPM.png" width="100%"></a></div>
Lastly, alongside this change we&#8217;ve updated our <a href="https://developers.google.com/maps/terms?utm_source=googleGeoBlog&#38;utm_medium=blog&#38;utm_campaign=mapsDevsiteRedesign20150901">Google Maps/Earth APIs Terms of Service</a> to include a section on payment terms as well as some clarifications to the deprecation policy, turn-by-turn navigation restrictions and derivative data sets.<br /><br />
Enjoy!]]></description>
				<content:encoded><![CDATA[<span class="post-author">Posted by Ken Hoetmer, Product Manager, Google Maps APIs</span><br />
<br />
The <a href="https://developers.google.com/maps/web-services?utm_source=googleGeoBlog&amp;utm_medium=blog&amp;utm_campaign=mapsDevsiteRedesign20150901">Google Maps Web Service APIs</a> offer a powerful toolkit for the real world - including geocoding, directions, elevation for any point on earth, and snapping GPS crumbs to the road network.<br />
<br />
Today we’re introducing a simple and flexible option for developers to instantly and easily scale with these Web Service APIs, by opening them up to <a href="https://developers.google.com/maps/pricing-and-plans?utm_source=googleGeoBlog&amp;utm_medium=blog&amp;utm_campaign=mapsDevsiteRedesign20150901">pay-as-you-go purchasing</a> via the Google Developers Console. In this new purchasing structure, the Google Maps Geocoding, Directions, Distance Matrix, Roads, Geolocation, Elevation, and Time Zone APIs remain free of charge for the first 2,500 requests per day, and developers may now simply pay $0.50 USD per 1,000 additional requests up to 100,000 requests per API per day. Developers requiring over 100,000 requests per day should <a href="https://developers.google.com/maps/contact-sales?utm_source=googleGeoBlog&amp;utm_medium=blog&amp;utm_campaign=mapsDevsiteRedesign20150901">contact us</a> to purchase a premium licence.<br />
<br />
To get started, head over to our updated Google Maps APIs <a href="https://developers.google.com/maps?utm_source=googleGeoBlog&amp;utm_medium=blog&amp;utm_campaign=mapsDevsiteRedesign20150901">developer site</a> to check out the APIs, get a key, and provide your billing details to enable the higher limits.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-2-vjnrpDBXI/VeWMxZa5gcI/AAAAAAAAAcI/wHExS0N9zcY/s1600/Screen%2BShot%2B2015-09-01%2Bat%2B9.30.21%2BPM.png" imageanchor="1" style="margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-2-vjnrpDBXI/VeWMxZa5gcI/AAAAAAAAAcI/wHExS0N9zcY/s1600/Screen%2BShot%2B2015-09-01%2Bat%2B9.30.21%2BPM.png" width="100%" /></a></div>
Lastly, alongside this change we’ve updated our <a href="https://developers.google.com/maps/terms?utm_source=googleGeoBlog&amp;utm_medium=blog&amp;utm_campaign=mapsDevsiteRedesign20150901">Google Maps/Earth APIs Terms of Service</a> to include a section on payment terms as well as some clarifications to the deprecation policy, turn-by-turn navigation restrictions and derivative data sets.<br />
<br />
Enjoy!]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/introducing-a-more-flexible-option-to-purchase-the-google-maps-web-service-apis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Maps Zen — Framing your shots</title>
		<link>https://googledata.org/google-maps/maps-zen-framing-your-shots/</link>
		<comments>https://googledata.org/google-maps/maps-zen-framing-your-shots/#comments</comments>
		<pubDate>Tue, 25 Aug 2015 18:42:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=e578108c28421e04661e921bca5dcc6a</guid>
		<description><![CDATA[<span>Posted by <a href="http://google.com/+AnkurKotwal" target="_blank">Ankur Kotwal</a>, Developer Advocate at Google</span><br /><br /><i>Gone are the days when users were impressed with a marker on a map. The <a href="http://googlegeodevelopers.blogspot.com/search/label/Maps%20Zen" target="_blank">Maps Zen blog post series</a> covers integrations of Google Maps APIs to help your apps provide great maps user experiences. What&#8217;s a zen pattern? Simply put, a design pattern that results in harmonious user experiences.</i><br /><br /><div>
<br /></div>
<br />
Movie &#38; television directors have fascinating jobs &#8212; shooting movies seems like a lot of fun, right? The idea that you&#8217;re in control of the camera, framing each shot and creating an evocative scene can be really inspirational. Maps developers have the same creative direction over UI. We get to build maps scenes to create evocative user experiences.<br /><br />
The Maps API provides a sophisticated <a href="https://developers.google.com/maps/documentation/android/views" target="_blank">camera</a>, which enables you to frame your maps in three dimensions. Its has expected capabilities such as projections, zooming and panning but additionally you can rotate, tilt and animate the camera. With that in mind, here&#8217;s a map &#8212; one that you&#8217;ve seen many times before. It&#8217;s top down, displaying a certain region, at a pre-determined zoom level.<br /><div>
<span></span></div>
<div>
<a href="http://4.bp.blogspot.com/-v61Zn3LnKtk/Ve9LAMrEUiI/AAAAAAAAAck/eMz4NgwNUfU/s1600/Framing%2Byour%2Bshots%2B1.png"><img border="0" height="380" src="http://4.bp.blogspot.com/-v61Zn3LnKtk/Ve9LAMrEUiI/AAAAAAAAAck/eMz4NgwNUfU/s640/Framing%2Byour%2Bshots%2B1.png" width="640"></a></div>
<span></span><br />
Lets take that same location and adjust its <a href="https://developers.google.com/maps/documentation/android/views#bearing_orientation" target="_blank">bearing</a> and <a href="https://developers.google.com/maps/documentation/android/views#tilt_viewing_angle" target="_blank">tilt</a>. This feels like much more like a real place. The user feels a greater sense of depth; a feeling that there&#8217;s a bigger world out there.<br /><div>
<span></span></div>
<div>
<a href="http://1.bp.blogspot.com/-zqpY2OKMIto/Ve9LQhAnmMI/AAAAAAAAAcs/E1QJyUNBe8E/s1600/Framing%2Byour%2Bshots%2B2%2Blarge.gif"><img border="0" height="360" src="http://1.bp.blogspot.com/-zqpY2OKMIto/Ve9LQhAnmMI/AAAAAAAAAcs/E1QJyUNBe8E/s640/Framing%2Byour%2Bshots%2B2%2Blarge.gif" width="640"></a></div>
<span></span><br />
When directing the camera for something like a house hunting app, the map can be presented in a way that shows more of the surrounding area. First, the <a href="https://developers.google.com/maps/documentation/android/map#map_types" target="_blank">map type</a> has been <a href="https://developers.google.com/maps/documentation/android/map#change_the_map_type" target="_blank">changed to satellite mode</a> and as a result, the nearby beach is more impactful. <br /><div>
<span></span></div>
<div>
<a href="http://4.bp.blogspot.com/-oSY6U3PxX4U/Ve9L5svHnsI/AAAAAAAAAcw/W3vAMg3oUro/s1600/Framing%2Byour%2Bshots%2B3%2Bmedium.gif"><img border="0" height="360" src="http://4.bp.blogspot.com/-oSY6U3PxX4U/Ve9L5svHnsI/AAAAAAAAAcw/W3vAMg3oUro/s640/Framing%2Byour%2Bshots%2B3%2Bmedium.gif" width="640"></a></div>
<span></span><br />
As we select the next house in the search results, the camera animates to its next location and during this journey, we&#8217;re effectively flying over the area retaining location context. There are also changes to the zoom, bearing and tilt. Once again, the user gets  a strong sense of depth and a feeling of exploration. This is crucial in a house hunting scenario since it&#8217;s all about location!<br /><div>
</div>
<br />
To accomplish such camera angles, check out the <a href="https://developers.google.com/android/reference/com/google/android/gms/maps/model/CameraPosition.Builder.html#bearing(float)" target="_blank">bearing</a> and <a href="https://developers.google.com/android/reference/com/google/android/gms/maps/model/CameraPosition.Builder.html#tilt(float)" target="_blank">tilt</a> methods on the <a href="https://developers.google.com/android/reference/com/google/android/gms/maps/model/CameraPosition.Builder" target="_blank">CameraPosition builder</a>. When transitioning from one <a href="https://developers.google.com/android/reference/com/google/android/gms/maps/model/CameraPosition" target="_blank">CameraPosition</a> to another, you&#8217;ll achieve a greater impact if you animate it to place rather that instantly moving there &#8212; to do this, use the <a href="https://developers.google.com/android/reference/com/google/android/gms/maps/GoogleMap.html#animateCamera(com.google.android.gms.maps.CameraUpdate,%20int,%20com.google.android.gms.maps.GoogleMap.CancelableCallback)" target="_blank">animateCamera method</a> on the GoogleMap object.<br /><pre>CameraPosition.Builder
target(LatLng location)
zoom(float zoom)
bearing(float bearing)
tilt(float tilt)

map.AnimateCamera(
CameraUpdate.newCameraPosition(cameraPosition),
durationInMs,
callback);</pre>
<br />
Camera framing and animations are powerful tools. As a camera director, it's important frame your shot in order to evoke the desired emotion.]]></description>
				<content:encoded><![CDATA[<span class="post-author">Posted by <a href="http://google.com/+AnkurKotwal" >Ankur Kotwal</a>, Developer Advocate at Google</span><br />
<br />
<i>Gone are the days when users were impressed with a marker on a map. The <a href="http://googlegeodevelopers.blogspot.com/search/label/Maps%20Zen" >Maps Zen blog post series</a> covers integrations of Google Maps APIs to help your apps provide great maps user experiences. What’s a zen pattern? Simply put, a design pattern that results in harmonious user experiences.</i><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/gkze68UlHdk?list=PLOU2XLYxmsIJDPXCTt5TLDu67271PruEk" width="560"></iframe><br /></div>
<br />
Movie &amp; television directors have fascinating jobs — shooting movies seems like a lot of fun, right? The idea that you’re in control of the camera, framing each shot and creating an evocative scene can be really inspirational. Maps developers have the same creative direction over UI. We get to build maps scenes to create evocative user experiences.<br />
<br />
The Maps API provides a sophisticated <a href="https://developers.google.com/maps/documentation/android/views" >camera</a>, which enables you to frame your maps in three dimensions. Its has expected capabilities such as projections, zooming and panning but additionally you can rotate, tilt and animate the camera. With that in mind, here’s a map — one that you’ve seen many times before. It’s top down, displaying a certain region, at a pre-determined zoom level.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Arial; font-size: 13.3333333333333px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-v61Zn3LnKtk/Ve9LAMrEUiI/AAAAAAAAAck/eMz4NgwNUfU/s1600/Framing%2Byour%2Bshots%2B1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="380" src="http://4.bp.blogspot.com/-v61Zn3LnKtk/Ve9LAMrEUiI/AAAAAAAAAck/eMz4NgwNUfU/s640/Framing%2Byour%2Bshots%2B1.png" width="640" /></a></div>
<span id="docs-internal-guid-14187a9a-64d6-9c1f-aa9a-6051b9b7bd87"></span><br />
Lets take that same location and adjust its <a href="https://developers.google.com/maps/documentation/android/views#bearing_orientation" >bearing</a> and <a href="https://developers.google.com/maps/documentation/android/views#tilt_viewing_angle" >tilt</a>. This feels like much more like a real place. The user feels a greater sense of depth; a feeling that there’s a bigger world out there.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Arial; font-size: 13.3333333333333px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-zqpY2OKMIto/Ve9LQhAnmMI/AAAAAAAAAcs/E1QJyUNBe8E/s1600/Framing%2Byour%2Bshots%2B2%2Blarge.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="360" src="http://1.bp.blogspot.com/-zqpY2OKMIto/Ve9LQhAnmMI/AAAAAAAAAcs/E1QJyUNBe8E/s640/Framing%2Byour%2Bshots%2B2%2Blarge.gif" width="640" /></a></div>
<span id="docs-internal-guid-14187a9a-64d6-e32c-bbb6-5852f292e0bf"></span><br />
When directing the camera for something like a house hunting app, the map can be presented in a way that shows more of the surrounding area. First, the <a href="https://developers.google.com/maps/documentation/android/map#map_types" >map type</a> has been <a href="https://developers.google.com/maps/documentation/android/map#change_the_map_type" >changed to satellite mode</a> and as a result, the nearby beach is more impactful. <br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Arial; font-size: 13.3333333333333px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-oSY6U3PxX4U/Ve9L5svHnsI/AAAAAAAAAcw/W3vAMg3oUro/s1600/Framing%2Byour%2Bshots%2B3%2Bmedium.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="360" src="http://4.bp.blogspot.com/-oSY6U3PxX4U/Ve9L5svHnsI/AAAAAAAAAcw/W3vAMg3oUro/s640/Framing%2Byour%2Bshots%2B3%2Bmedium.gif" width="640" /></a></div>
<span id="docs-internal-guid-14187a9a-64d7-1f36-748c-84900d75f059"></span><br />
As we select the next house in the search results, the camera animates to its next location and during this journey, we’re effectively flying over the area retaining location context. There are also changes to the zoom, bearing and tilt. Once again, the user gets  a strong sense of depth and a feeling of exploration. This is crucial in a house hunting scenario since it’s all about location!<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
To accomplish such camera angles, check out the <a href="https://developers.google.com/android/reference/com/google/android/gms/maps/model/CameraPosition.Builder.html#bearing(float)" >bearing</a> and <a href="https://developers.google.com/android/reference/com/google/android/gms/maps/model/CameraPosition.Builder.html#tilt(float)" >tilt</a> methods on the <a href="https://developers.google.com/android/reference/com/google/android/gms/maps/model/CameraPosition.Builder" >CameraPosition builder</a>. When transitioning from one <a href="https://developers.google.com/android/reference/com/google/android/gms/maps/model/CameraPosition" >CameraPosition</a> to another, you’ll achieve a greater impact if you animate it to place rather that instantly moving there — to do this, use the <a href="https://developers.google.com/android/reference/com/google/android/gms/maps/GoogleMap.html#animateCamera(com.google.android.gms.maps.CameraUpdate,%20int,%20com.google.android.gms.maps.GoogleMap.CancelableCallback)" >animateCamera method</a> on the GoogleMap object.<br />
<pre>CameraPosition.Builder
target(LatLng location)
zoom(float zoom)
bearing(float bearing)
tilt(float tilt)

map.AnimateCamera(
CameraUpdate.newCameraPosition(cameraPosition),
durationInMs,
callback);</pre>
<br />
Camera framing and animations are powerful tools. As a camera director, it's important frame your shot in order to evoke the desired emotion.]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/maps-zen-framing-your-shots/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Maps Zen — Seeing the Lite</title>
		<link>https://googledata.org/google-maps/maps-zen-seeing-the-lite/</link>
		<comments>https://googledata.org/google-maps/maps-zen-seeing-the-lite/#comments</comments>
		<pubDate>Tue, 18 Aug 2015 16:44:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=d80a1209474187439f65fd34da360f58</guid>
		<description><![CDATA[<span>Posted by <a href="http://google.com/+AnkurKotwal" target="_blank">Ankur Kotwal</a>, Developer Advocate at Google</span><br /><br /><i>Gone are the days when users were impressed with a marker on a map. This is the first in a series of <a href="http://googlegeodevelopers.blogspot.com/search/label/Maps%20Zen">Maps Zen blog posts</a> covering integrations of Google Maps APIs to help your apps provide great maps user experiences. What&#8217;s a zen pattern? Simply put, a design pattern that results in harmonious user experiences.</i><br /><div>
<br /></div>
A common UI pattern is showing a collection of places. At first glance it seems pretty easy. You could just throw together a list of place names and you&#8217;re done, right? Its not quite that simple. Here are two ways to visualize locations using the <a href="https://developers.google.com/maps/documentation/android/" target="_blank">Google Maps Android API</a>.<br /><br />
First is on the map itself. Here, we remove the UI and let the map markers be the primary point of interaction. This makes for a very immersive experience, however it's only effective if the markers fit comfortably on one screen. If the user has to zoom or scroll, the emphasis of your collection is lost. For example, &#8220;Train stations near me&#8221; works well since the results are co-located.<br /><div>
<span><img height="381" src="https://lh5.googleusercontent.com/ng4ooCicpR0DSFA75W88oBL9G2zi3YvtZEgi_yhqk4JGUlje-CSCYwhIJ53LpKOMRrYM-n2yi7VsiiNfDB1HyuwAO4hmWz0-CmVDSwd-otZv36fPNIJOIoV4LH4izWE9jotFHMk" width="640"></span></div>
<span></span><br />
The second method of displaying a list of places that are spread out &#8212;it uses map thumbnails. The Maps Android API offers <a href="https://developers.google.com/maps/documentation/android/lite" target="_blank">Lite mode</a> &#8212; an ideal mode for such scenarios.<br /><br />
Lite mode provides a static map; effectively just the image of a map without the ability for the user to pan, or tilt the camera. This limited functionality, however, comes with some big benefits &#8212; it&#8217;s super fast and uses less memory. Additionally, you still get click listeners, markers and polylines. Lite mode makes it possible to show lists of maps &#8212; they are just images so you can instantiate many of these.<br /><div>
<span><img height="381" src="https://lh4.googleusercontent.com/o2EXyoUhIDA_65bg0OmlMLyTvEfqTBGjGRJXgUeM2xErqSkPmekS-xPCOTA--vEN6WlyrDh_QSArHGHd5fVksO6KOmEB9AAoccu7i3k5-pf3FLSDhBr5fmPLK7MnK3zoBoeLTWE" width="640"></span></div>
<span></span><br />
Enabling Lite mode is simple. If you&#8217;re <a href="https://developers.google.com/maps/documentation/android/map?hl=en#programmatically" target="_blank">creating your maps in Java</a>, on creation, simply specify litemode in the GoogleMapOptions object as shown below.<br /><pre>GoogleMapOptions options = new GoogleMapOptions().liteMode(true);</pre>
If your map is <a href="https://developers.google.com/maps/documentation/android/map?hl=en#using_xml_attributes" target="_blank">declared via layouts</a>, add the xml property in your layouts as shown below. Be sure to include the map namespace since it makes the litemode attribute available.<br /><pre>&#60;fragment xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:map="http://schemas.android.com/apk/res-auto"
    android:name="com.google.android.gms.maps.MapFragment"
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    map:liteMode="true"/&#62;</pre>
At some point, you may need to replace the lite mode map with the fully-interactive one. In that situation, you can gracefully transition into a regular map triggered by a touch event. In the image below, <a href="https://www.google.com.au/url?sa=t&#38;rct=j&#38;q=&#38;esrc=s&#38;source=web&#38;cd=8&#38;cad=rja&#38;uact=8&#38;ved=0CEoQtwIwB2oVChMIrfHRz4aWxwIVxhymCh3gRAh3&#38;url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DRhiPJByIMrM&#38;ei=9SjEVe0ixrmYBeCJobgH&#38;usg=AFQjCNHfYAT84JxUx0c4AxU_81ZhKGLHew&#38;sig2=cxdQChNnbqlGjDPMWy15kQ&#38;bvm=bv.99804247,d.dGY" target="_blank">Android Lollipop transitions</a> are being used across screens. You can see the big map dissolve and the grid implode in place. For users on older versions of Android, a reasonable fallback is to <a href="https://developers.google.com/maps/documentation/android/map?hl=en#programmatically" target="_blank">instantiate a MapFragment</a> and animate it into place.<br /><div>
<span><img height="360" src="https://lh4.googleusercontent.com/I8mphBadpqAQkjzBDi5BVOoiilhYSn7OTHBdvHVmCdg4Gdb6A4Rm8rxntmpeegiK3ei5rmBg1mifJJiXIiJ5Ea5CiVPIcxkDMEi6qR8zdfpEiow5Wrlb63Rsx98c4p6uFaTIK7s" width="640"></span></div>
<span></span><br />
With this technique, we&#8217;re able to mix and match Lite mode and regular maps seamlessly. I hope you&#8217;ve now seen the lite &#8212; Lite mode that is. It enables you to show multiple maps simultaneously whilst keeping your app performant.]]></description>
				<content:encoded><![CDATA[<span class="post-author">Posted by <a href="http://google.com/+AnkurKotwal" >Ankur Kotwal</a>, Developer Advocate at Google</span><br />
<br />
<i>Gone are the days when users were impressed with a marker on a map. This is the first in a series of <a href="http://googlegeodevelopers.blogspot.com/search/label/Maps%20Zen">Maps Zen blog posts</a> covering integrations of Google Maps APIs to help your apps provide great maps user experiences. What’s a zen pattern? Simply put, a design pattern that results in harmonious user experiences.</i><br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/N0N1Xkc_1pU?list=PLOU2XLYxmsIJDPXCTt5TLDu67271PruEk" width="560"></iframe><br /></div>
A common UI pattern is showing a collection of places. At first glance it seems pretty easy. You could just throw together a list of place names and you’re done, right? Its not quite that simple. Here are two ways to visualize locations using the <a href="https://developers.google.com/maps/documentation/android/" >Google Maps Android API</a>.<br />
<br />
First is on the map itself. Here, we remove the UI and let the map markers be the primary point of interaction. This makes for a very immersive experience, however it's only effective if the markers fit comfortably on one screen. If the user has to zoom or scroll, the emphasis of your collection is lost. For example, “Train stations near me” works well since the results are co-located.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Arial; font-size: 13.3333333333333px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img height="381" src="https://lh5.googleusercontent.com/ng4ooCicpR0DSFA75W88oBL9G2zi3YvtZEgi_yhqk4JGUlje-CSCYwhIJ53LpKOMRrYM-n2yi7VsiiNfDB1HyuwAO4hmWz0-CmVDSwd-otZv36fPNIJOIoV4LH4izWE9jotFHMk" style="border: none; transform: rotate(0rad);" width="640" /></span></div>
<span id="docs-internal-guid-f42d6cdd-414d-203f-b3e0-cb88bcd5ec01"></span><br />
The second method of displaying a list of places that are spread out —it uses map thumbnails. The Maps Android API offers <a href="https://developers.google.com/maps/documentation/android/lite" >Lite mode</a> — an ideal mode for such scenarios.<br />
<br />
Lite mode provides a static map; effectively just the image of a map without the ability for the user to pan, or tilt the camera. This limited functionality, however, comes with some big benefits — it’s super fast and uses less memory. Additionally, you still get click listeners, markers and polylines. Lite mode makes it possible to show lists of maps — they are just images so you can instantiate many of these.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Arial; font-size: 13.3333333333333px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img height="381" src="https://lh4.googleusercontent.com/o2EXyoUhIDA_65bg0OmlMLyTvEfqTBGjGRJXgUeM2xErqSkPmekS-xPCOTA--vEN6WlyrDh_QSArHGHd5fVksO6KOmEB9AAoccu7i3k5-pf3FLSDhBr5fmPLK7MnK3zoBoeLTWE" style="border: none; transform: rotate(0rad);" width="640" /></span></div>
<span id="docs-internal-guid-f42d6cdd-414d-5a28-ab67-c4ae0745eb94"></span><br />
Enabling Lite mode is simple. If you’re <a href="https://developers.google.com/maps/documentation/android/map?hl=en#programmatically" >creating your maps in Java</a>, on creation, simply specify litemode in the GoogleMapOptions object as shown below.<br />
<pre>GoogleMapOptions options = new GoogleMapOptions().liteMode(true);</pre>
If your map is <a href="https://developers.google.com/maps/documentation/android/map?hl=en#using_xml_attributes" >declared via layouts</a>, add the xml property in your layouts as shown below. Be sure to include the map namespace since it makes the litemode attribute available.<br />
<pre>&lt;fragment xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:map="http://schemas.android.com/apk/res-auto"
    android:name="com.google.android.gms.maps.MapFragment"
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    map:liteMode="true"/&gt;</pre>
At some point, you may need to replace the lite mode map with the fully-interactive one. In that situation, you can gracefully transition into a regular map triggered by a touch event. In the image below, <a href="https://www.google.com.au/url?sa=t&amp;rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=8&amp;cad=rja&amp;uact=8&amp;ved=0CEoQtwIwB2oVChMIrfHRz4aWxwIVxhymCh3gRAh3&amp;url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DRhiPJByIMrM&amp;ei=9SjEVe0ixrmYBeCJobgH&amp;usg=AFQjCNHfYAT84JxUx0c4AxU_81ZhKGLHew&amp;sig2=cxdQChNnbqlGjDPMWy15kQ&amp;bvm=bv.99804247,d.dGY" >Android Lollipop transitions</a> are being used across screens. You can see the big map dissolve and the grid implode in place. For users on older versions of Android, a reasonable fallback is to <a href="https://developers.google.com/maps/documentation/android/map?hl=en#programmatically" >instantiate a MapFragment</a> and animate it into place.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Arial; font-size: 13.3333333333333px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img height="360" src="https://lh4.googleusercontent.com/I8mphBadpqAQkjzBDi5BVOoiilhYSn7OTHBdvHVmCdg4Gdb6A4Rm8rxntmpeegiK3ei5rmBg1mifJJiXIiJ5Ea5CiVPIcxkDMEi6qR8zdfpEiow5Wrlb63Rsx98c4p6uFaTIK7s" style="border: none; transform: rotate(0rad);" width="640" /></span></div>
<span id="docs-internal-guid-f42d6cdd-414d-9156-8316-6ab0d41bb03f"></span><br />
With this technique, we’re able to mix and match Lite mode and regular maps seamlessly. I hope you’ve now seen the lite — Lite mode that is. It enables you to show multiple maps simultaneously whilst keeping your app performant.]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/maps-zen-seeing-the-lite/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Maps data and Google Maps APIs enable a new approach to agriculture</title>
		<link>https://googledata.org/google-maps/maps-data-and-google-maps-apis-enable-a-new-approach-to-agriculture/</link>
		<comments>https://googledata.org/google-maps/maps-data-and-google-maps-apis-enable-a-new-approach-to-agriculture/#comments</comments>
		<pubDate>Mon, 17 Aug 2015 17:53:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=cfa6889659f2a9913d76dfe4c5ed0a2d</guid>
		<description><![CDATA[<span>Posted by Selena Salazar, Product Marketing Manager, Google Maps APIs</span><br /><br />
Antoine Beyeler, a computer programmer in Switzerland, took inspiration from insects to develop drones that sense obstacles as they fly autonomously. He&#8217;s now chief technology officer of <a href="https://www.google.com/url?q=https%3A%2F%2Fwww.sensefly.com%2Fhome.html&#38;sa=D&#38;sntz=1&#38;usg=AFQjCNGfvBndAGCPEWNllG7NP-7p_Txqgw" target="_blank">SenseFly</a>, which develops drone software that farmers, miners, and other industrial clients use to produce 3D maps.<br /><br />
Chris Seifert, a data expert in California, is developing software that uses weather and crop yield data to help farmers plant crops and deploy resources more efficiently. He co-founded <a href="https://www.google.com/url?q=https%3A%2F%2Facrevalue.granular.ag%2F&#38;sa=D&#38;sntz=1&#38;usg=AFQjCNF4JQJFByqXoF4_pW1YFhAwSLQ2VQ" target="_blank">AcreValue</a>, which analyzes public-data sources to help farmers determine the agricultural value of land they want to buy or sell.<br /><br />
These &#8220;precision agriculture&#8221; startups are among a new wave of companies helping farmers boost yields while using lower quantities of water, fertilizer, and pesticides. Map data is a key component, helping drones fly straight and farmers visualize data in a way they can understand. <br /><br />
Farming usually conjures images of overalls and pitchforks. The reality is much more complex. &#8220;It&#8217;s become a very high-tech industry,&#8221; says Seifert, who studied at Stanford University and worked at Google before launching AcreValue. &#8220;Recently, a picture of someone&#8217;s tractor got posted on Reddit, and there are four or five different screens in that photo,&#8221; he says, including precision-planting monitors and tablets for Web browsing. <br /><br />
AcreValue collects data from government sources, compiles and analyzes them, and presents them on top of the map. It uses <a href="https://developers.google.com/maps/web/" target="_blank">Google Maps JavaScript API</a> and the <a href="https://developers.google.com/maps/documentation/staticmaps/intro" target="_blank">Google Maps Static Maps API</a> to build a satellite image-viewing tool with which &#8220;farmers can recognize the fields more easily,&#8221; Seifert says.<br /><div>
<span><img alt="AcreValue_1.png" height="334" src="https://lh3.googleusercontent.com/H8qDon3ClCyR1eigkxhzvchWmCEfaJwY5phA-V6b79pOepFE3aqcshwEAq7uDXXOtbnxUYF1NOpxTEBuJ7UhWLl8ILqDZuNgwIVIm9w31Fg06r6zFI29EEigEm0-5JnVuX94-cU" width="640"></span></div>
<span></span><br />
The result is that farmers who want to buy or sell land can find &#8220;a very Zillow type of experience&#8221; at AcreValue, Seifert says. <br /><br />
&#8220;If you&#8217;re running a very, very large business, and you&#8217;re running that business in an Excel spreadsheet, you&#8217;re missing out on a lot of the spatial detail you might be getting if you can have a map view,&#8221; he adds. &#8220;That sort of transparency into what&#8217;s happening in your operations is a huge benefit.&#8221;<br /><br />
According to San Francisco agricultural-technology company Granular, which acquired AcreValue earlier this year, agriculture worldwide is a $3 trillion industry. The Association of Unmanned Vehicle Systems International predicts that agriculture will make up most of the market for unmanned aerial vehicles, or UAVs, once the FAA legalizes them. Many small farmers are already using inexpensive drones to survey their land.<br /><div>
<span><img alt="image (1).png" src="https://lh6.googleusercontent.com/v-_XvPG8KKmwhUm9tCrQTHbx5fIGgWW7kiUZD59mFLxA1thxGL9EMlpmF_yp91tgEzuzqaV2_zhJuuDa_siUDM5cOADLko1ARLgYrKLm8xZrnIWiSdvkVilgwaGMjyTYhvlVwBw"></span></div>
<span></span><br />
Because drones can fly to specific patches of a crop much more quickly than tractors can drive, says Ken Giles, a professor of biological and agricultural engineering at the University of California at Davis, they enable farmers to observe how weather or pest conditions develop before spraying pesticides or applying fertilizer.<br /><br />
&#8220;If you&#8217;ve got a vehicle (that can) do a targeted spray, then you don&#8217;t have to think ahead as much,&#8221; Giles says. UAVs &#8220;allow us to be more intelligent about our use.&#8221;<br /><br />
Using map data, farmers can program precise courses for their drones to fly to survey their fields. Heat maps developed from drone photography help farmers visualize water use, disease outbreaks, and plant health statistics.<br /><div>
<span><img alt="image.png" height="350" src="https://lh4.googleusercontent.com/AtcTogYcJUYjeZO6InJOKW-JnPYrFdNNoJRpKdfULHkuEESR7f7eQwZhFZxsrYbWhYxJH8LlSIjJYaJOaZcW5ajKe6LeqHz8kEq7bCDeds_vL4ftJO1T1BpsWXH3z-9GTUPKv9U" width="400"></span></div>
<span></span><br />
Like Seifert, Swiss drone engineer Beyeler is targeting midsize to large farms with his company, SenseFly. Its software, which incorporates Google Maps data, enables farmers to draw a drone&#8217;s flight path, then track and update it on the fly. SenseFly&#8217;s standard interchange formats, such as GeoTIFF, KML, and shapefiles, help different systems communicate with each other, Beyeler says.<br /><br />
Using its built-in GPS technology, a SenseFly drone makes several passes over a crop to take photos and gather data. SenseFly&#8217;s software then uses the information to develop a high-resolution &#8220;normalized difference vegetation map&#8221; of chlorophyll presence, a key indicator of plant health.<br /><br />
Self-driving tractors, also gaining in popularity, can then use the vegetation map to determine how much fertilizer to dispense.<br /><br />
&#8220;The farmer can see things he can&#8217;t see with the naked eye,&#8221; Beyeler says.<br /><br />
When Beyeler launched SenseFly in 2009, &#8220;drones hadn&#8217;t been seen so much in the private world, only in the military world,&#8221; he says. &#8220;We wanted to democratize the drone technology for civilian populations.&#8221;<br /><br />
&#8220;We have drones. What should we do with them?&#8221; Beyeler asked. And his company was born.]]></description>
				<content:encoded><![CDATA[<span class="post-author">Posted by Selena Salazar, Product Marketing Manager, Google Maps APIs</span><br />
<br />
Antoine Beyeler, a computer programmer in Switzerland, took inspiration from insects to develop drones that sense obstacles as they fly autonomously. He’s now chief technology officer of <a href="https://www.google.com/url?q=https%3A%2F%2Fwww.sensefly.com%2Fhome.html&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGfvBndAGCPEWNllG7NP-7p_Txqgw" >SenseFly</a>, which develops drone software that farmers, miners, and other industrial clients use to produce 3D maps.<br />
<br />
Chris Seifert, a data expert in California, is developing software that uses weather and crop yield data to help farmers plant crops and deploy resources more efficiently. He co-founded <a href="https://www.google.com/url?q=https%3A%2F%2Facrevalue.granular.ag%2F&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNF4JQJFByqXoF4_pW1YFhAwSLQ2VQ" >AcreValue</a>, which analyzes public-data sources to help farmers determine the agricultural value of land they want to buy or sell.<br />
<br />
These “precision agriculture” startups are among a new wave of companies helping farmers boost yields while using lower quantities of water, fertilizer, and pesticides. Map data is a key component, helping drones fly straight and farmers visualize data in a way they can understand. <br />
<br />
Farming usually conjures images of overalls and pitchforks. The reality is much more complex. “It’s become a very high-tech industry,” says Seifert, who studied at Stanford University and worked at Google before launching AcreValue. “Recently, a picture of someone’s tractor got posted on Reddit, and there are four or five different screens in that photo,” he says, including precision-planting monitors and tablets for Web browsing. <br />
<br />
AcreValue collects data from government sources, compiles and analyzes them, and presents them on top of the map. It uses <a href="https://developers.google.com/maps/web/" >Google Maps JavaScript API</a> and the <a href="https://developers.google.com/maps/documentation/staticmaps/intro" >Google Maps Static Maps API</a> to build a satellite image-viewing tool with which “farmers can recognize the fields more easily,” Seifert says.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="background-color: white; color: #222222; font-family: Arial; font-size: 13.3333333333333px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="AcreValue_1.png" height="334" src="https://lh3.googleusercontent.com/H8qDon3ClCyR1eigkxhzvchWmCEfaJwY5phA-V6b79pOepFE3aqcshwEAq7uDXXOtbnxUYF1NOpxTEBuJ7UhWLl8ILqDZuNgwIVIm9w31Fg06r6zFI29EEigEm0-5JnVuX94-cU" style="border: none; transform: rotate(0rad);" width="640" /></span></div>
<span id="docs-internal-guid-b8ffa9d4-3c78-03b7-f962-fc7427767384"></span><br />
The result is that farmers who want to buy or sell land can find “a very Zillow type of experience” at AcreValue, Seifert says. <br />
<br />
“If you’re running a very, very large business, and you’re running that business in an Excel spreadsheet, you’re missing out on a lot of the spatial detail you might be getting if you can have a map view,” he adds. “That sort of transparency into what’s happening in your operations is a huge benefit.”<br />
<br />
According to San Francisco agricultural-technology company Granular, which acquired AcreValue earlier this year, agriculture worldwide is a $3 trillion industry. The Association of Unmanned Vehicle Systems International predicts that agriculture will make up most of the market for unmanned aerial vehicles, or UAVs, once the FAA legalizes them. Many small farmers are already using inexpensive drones to survey their land.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Arial; font-size: 13.3333333333333px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="image (1).png" src="https://lh6.googleusercontent.com/v-_XvPG8KKmwhUm9tCrQTHbx5fIGgWW7kiUZD59mFLxA1thxGL9EMlpmF_yp91tgEzuzqaV2_zhJuuDa_siUDM5cOADLko1ARLgYrKLm8xZrnIWiSdvkVilgwaGMjyTYhvlVwBw" style="border: none; transform: rotate(0rad);" /></span></div>
<span id="docs-internal-guid-b8ffa9d4-3c78-8457-9cdf-3bfa4b4c949c"></span><br />
Because drones can fly to specific patches of a crop much more quickly than tractors can drive, says Ken Giles, a professor of biological and agricultural engineering at the University of California at Davis, they enable farmers to observe how weather or pest conditions develop before spraying pesticides or applying fertilizer.<br />
<br />
“If you’ve got a vehicle (that can) do a targeted spray, then you don’t have to think ahead as much,” Giles says. UAVs “allow us to be more intelligent about our use.”<br />
<br />
Using map data, farmers can program precise courses for their drones to fly to survey their fields. Heat maps developed from drone photography help farmers visualize water use, disease outbreaks, and plant health statistics.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Arial; font-size: 13.3333333333333px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="image.png" height="350" src="https://lh4.googleusercontent.com/AtcTogYcJUYjeZO6InJOKW-JnPYrFdNNoJRpKdfULHkuEESR7f7eQwZhFZxsrYbWhYxJH8LlSIjJYaJOaZcW5ajKe6LeqHz8kEq7bCDeds_vL4ftJO1T1BpsWXH3z-9GTUPKv9U" style="border: none; transform: rotate(0rad);" width="400" /></span></div>
<span id="docs-internal-guid-b8ffa9d4-3c78-d0be-7019-cf6131c08473"></span><br />
Like Seifert, Swiss drone engineer Beyeler is targeting midsize to large farms with his company, SenseFly. Its software, which incorporates Google Maps data, enables farmers to draw a drone’s flight path, then track and update it on the fly. SenseFly’s standard interchange formats, such as GeoTIFF, KML, and shapefiles, help different systems communicate with each other, Beyeler says.<br />
<br />
Using its built-in GPS technology, a SenseFly drone makes several passes over a crop to take photos and gather data. SenseFly’s software then uses the information to develop a high-resolution “normalized difference vegetation map” of chlorophyll presence, a key indicator of plant health.<br />
<br />
Self-driving tractors, also gaining in popularity, can then use the vegetation map to determine how much fertilizer to dispense.<br />
<br />
“The farmer can see things he can’t see with the naked eye,” Beyeler says.<br />
<br />
When Beyeler launched SenseFly in 2009, “drones hadn’t been seen so much in the private world, only in the military world,” he says. “We wanted to democratize the drone technology for civilian populations.”<br />
<br />
“We have drones. What should we do with them?” Beyeler asked. And his company was born.]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/maps-data-and-google-maps-apis-enable-a-new-approach-to-agriculture/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Map Tips: Using the Google Maps APIs to book the perfect ride</title>
		<link>https://googledata.org/google-maps/map-tips-using-the-google-maps-apis-to-book-the-perfect-ride/</link>
		<comments>https://googledata.org/google-maps/map-tips-using-the-google-maps-apis-to-book-the-perfect-ride/#comments</comments>
		<pubDate>Thu, 13 Aug 2015 17:24:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=8db5c82c6f9986f0020d20caf7902125</guid>
		<description><![CDATA[<span>Posted by Richard Coombes, Google Maps Solutions Architect at Google</span><br /><br /><i>Editor&#8217;s note:  &#8216;Map Tips&#8217; are designed to answer frequently asked questions about <a href="https://developers.google.com/maps/" target="_blank">Google Maps APIs</a>. For important tips on how to deploy Google&#8217;s mapping tools, read more from <a href="https://twitter.com/RichardCoombes" target="_blank">Richard Coombes</a>, Google Maps Solutions Architect at Google.</i><br /><br />
The number of transportation booking apps&#8212;taxi, rideshare, shuttle and limo to name a few, has exploded over the last few years primarily due to the increase in GPS enabled smartphones, fast and reliable mobile connectivity and simple, secure payment options. These apps offer real benefits to customers, drivers and taxi booking companies and location plays a critical role for all of them. Google Maps APIs enable many feature-rich capabilities that can provide the best location-based information and user experiences for booking and tracking the perfect ride.<br /><br />
Here are eight helpful tips for optimizing your taxi or rideshare services with the Google Maps APIs:<br /><b><br /></b>
<b>1. Use Places API Autocomplete for easy address entry.</b> The type-ahead-search suggestions available with Places API Autocomplete makes it fast and easy for the customer to provide an accurate  pick-up and drop-off location with minimal keystrokes. The Autocomplete feature is available in <a href="https://developers.google.com/places/android/autocomplete" target="_blank">Android</a>, <a href="https://developers.google.com/places/ios/autocomplete" target="_blank">iOS</a>, <a href="https://developers.google.com/maps/documentation/javascript/places-autocomplete" target="_blank">Javascript</a> and as a <a href="https://developers.google.com/places/webservice/autocomplete" target="_blank">web service</a> for flexible integration options.<br /><br /><b>2. Automatically locate the customer for fast booking.</b> If booking a taxi immediately, allow your customer to automatically communicate their current location using the location capabilities of their smartphone or browser. On Android and iOS make use of the <a href="https://developers.google.com/places/android/placepicker" target="_blank">Places API Place Picker</a> UI widget so your customer can choose their location from a list of nearby places. Alternatively, the <a href="https://developers.google.com/maps/documentation/geocoding/intro" target="_blank">Geocoding API</a> can provide the nearest address to their current location.<br /><div>
<span></span></div>
<div>
<a href="https://lh3.googleusercontent.com/--Ynlr2szW1xxCjj6Z9OFFJ5t0yGiWHfmZ1G_k5pjL6s_dYBDxyUJZ4LQqtCk47PQbEiIE7YUnyZuQO4byVSRbTX61sWO_FyTPdqUiT9gFqKFDIgMK3K7ntr0n7ppmPpmRxuYkE"><img border="0" height="400" src="https://lh3.googleusercontent.com/--Ynlr2szW1xxCjj6Z9OFFJ5t0yGiWHfmZ1G_k5pjL6s_dYBDxyUJZ4LQqtCk47PQbEiIE7YUnyZuQO4byVSRbTX61sWO_FyTPdqUiT9gFqKFDIgMK3K7ntr0n7ppmPpmRxuYkE" width="237"></a></div>
<b>3. Use the Distance Matrix API to find the closest taxis based on drive time and drive distance. </b>Performing a simple radius or &#8220;straight line&#8221; distance search to find the nearest available taxis can often provide misleading results. For example, a taxi may be on the far side of a highway or the other side of a river and take a long time to drive to the pick-up point. The <a href="https://developers.google.com/maps/documentation/distancematrix/intro" target="_blank">Distance Matrix API</a> can calculate the driving distances and times, based on Google&#8217;s road network, to improve the accuracy of your search results.<br /><br /><b>4. Show the real-time location of the customer and driver on a Google Map.</b> Help reassure the customer that their ride is on the way by showing real-time location of the vehicle on a map&#8212;in relation to their position. If the driver is unfamiliar with the area this can also help guide her to the customer&#8217;s location. Google has global coverage so if you&#8217;re working in multiple countries we&#8217;ve got you covered. No need to work with multiple map providers. Asset tracking with Google Maps allows a taxi booking company to view the real-time location and status of all their taxis on a central map to help process offline bookings coming in via telephone calls. Need help storing and retrieving all of your taxi fleet locations? Take a look at our <a href="http://googlegeodevelopers.blogspot.sg/2015/06/code-road-android-app-store-your.html" target="_blank">previous blog post</a> on how to store your location data in the cloud with Firebase.<br /><br /><div>
<span></span></div>
<span></span><br /><div>
<a href="https://lh3.googleusercontent.com/F2ygmWUuKZr6-YN3fg6ytxe7OfyoDZDUuGO5q_zV_ojnWFhTvYsMak7Gshohe5XGLtnaJ_J9KMJq8pbd0PAhZoBDhf0pqXRgQsuS5k6k9veWicfHdINCwY50nwbkQpvUNW2AsQI"><img border="0" height="400" src="https://lh3.googleusercontent.com/F2ygmWUuKZr6-YN3fg6ytxe7OfyoDZDUuGO5q_zV_ojnWFhTvYsMak7Gshohe5XGLtnaJ_J9KMJq8pbd0PAhZoBDhf0pqXRgQsuS5k6k9veWicfHdINCwY50nwbkQpvUNW2AsQI" width="236"></a></div>
<b>5. Provide the customer arrival times based on current traffic conditions.</b> If your customer is in a hurry, it can feel really frustrating wondering when her taxi will arrive. Keep the customer informed of the vehicle&#8217;s estimated time of arrival using the duration-in-traffic information in the <a href="https://developers.google.com/maps/documentation/directions/intro" target="_blank">Directions API</a>.<br /><b><br /></b><br /><b>6. Provide an estimated fare and drop-off time to the customer.</b> Before the journey starts, provide customers with an estimated fare based on the optimal route and traffic conditions.  The <a href="https://developers.google.com/maps/documentation/directions/intro" target="_blank">Directions API</a> can provide the route distance and duration in current traffic. Alternative routes can also be provided. These details can be used to estimate when the customer may arrive at their destination and how much it should cost.<br /><div>
<span><img height="400" src="https://lh6.googleusercontent.com/iOLtOCn_oMLirwNKTiFi9s95g4sfkBuINHV6dEBF_Sj4qq0hnJ8dMgN0MtokDtLfIyHqhFUeIfYY7yp_490kFuEIxm5w5Wt3GEIUhdmUXGd4EP4BVYGrSvQwH-4nhoxZm-mjkvA" width="381"></span></div>
<b>7. Improve measurement accuracy of distance travelled using Roads API.</b> If you&#8217;ve used GPS on a smartphone before you probably know that the accuracy can sometimes be poor, especially in highrise urban environments. If you need to calculate fares, driver payments, fuel consumption or maintenance planning then accurate distance reporting is vital. The <a href="https://developers.google.com/maps/documentation/roads/intro" target="_blank">Roads API</a> can take your original jittery GPS data and snap them to the road network as well as fill in gaps (interpolate) in missing your GPS data to ensure the path smoothly follows the road. This leads to improved distance measurements and better visualisations of where the taxi has actually travelled.<br /><b><br /></b><br /><b>8. Better understand vehicle speed and safety.</b> Oftentimes a taxi booking company is relying solely on information coming from the driver&#8217;s and customer&#8217;s smartphone and no in-car telematic devices are available. The Roads API can provide the posted speed limit along a road. This speed limit can be compared with the calculated actual speed of the vehicle (from GPS data) to determine if and where speeding occurs.<br /><br />
We hope you&#8217;re able to incorporate some of these ideas into your taxi booking systems. Learn more about what <a href="https://developers.google.com/maps/" target="_blank">Google Maps APIs</a> can do for your websites and applications.]]></description>
				<content:encoded><![CDATA[<span class="post-author">Posted by Richard Coombes, Google Maps Solutions Architect at Google</span><br />
<br />
<i>Editor’s note:  ‘Map Tips’ are designed to answer frequently asked questions about <a href="https://developers.google.com/maps/" >Google Maps APIs</a>. For important tips on how to deploy Google’s mapping tools, read more from <a href="https://twitter.com/RichardCoombes" >Richard Coombes</a>, Google Maps Solutions Architect at Google.</i><br />
<br />
The number of transportation booking apps—taxi, rideshare, shuttle and limo to name a few, has exploded over the last few years primarily due to the increase in GPS enabled smartphones, fast and reliable mobile connectivity and simple, secure payment options. These apps offer real benefits to customers, drivers and taxi booking companies and location plays a critical role for all of them. Google Maps APIs enable many feature-rich capabilities that can provide the best location-based information and user experiences for booking and tracking the perfect ride.<br />
<br />
Here are eight helpful tips for optimizing your taxi or rideshare services with the Google Maps APIs:<br />
<b><br /></b>
<b>1. Use Places API Autocomplete for easy address entry.</b> The type-ahead-search suggestions available with Places API Autocomplete makes it fast and easy for the customer to provide an accurate  pick-up and drop-off location with minimal keystrokes. The Autocomplete feature is available in <a href="https://developers.google.com/places/android/autocomplete" >Android</a>, <a href="https://developers.google.com/places/ios/autocomplete" >iOS</a>, <a href="https://developers.google.com/maps/documentation/javascript/places-autocomplete" >Javascript</a> and as a <a href="https://developers.google.com/places/webservice/autocomplete" >web service</a> for flexible integration options.<br />
<br /><b>2. Automatically locate the customer for fast booking.</b> If booking a taxi immediately, allow your customer to automatically communicate their current location using the location capabilities of their smartphone or browser. On Android and iOS make use of the <a href="https://developers.google.com/places/android/placepicker" >Places API Place Picker</a> UI widget so your customer can choose their location from a list of nearby places. Alternatively, the <a href="https://developers.google.com/maps/documentation/geocoding/intro" >Geocoding API</a> can provide the nearest address to their current location.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="color: #444444; font-family: Roboto; font-size: 13.3333333333333px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://lh3.googleusercontent.com/--Ynlr2szW1xxCjj6Z9OFFJ5t0yGiWHfmZ1G_k5pjL6s_dYBDxyUJZ4LQqtCk47PQbEiIE7YUnyZuQO4byVSRbTX61sWO_FyTPdqUiT9gFqKFDIgMK3K7ntr0n7ppmPpmRxuYkE" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://lh3.googleusercontent.com/--Ynlr2szW1xxCjj6Z9OFFJ5t0yGiWHfmZ1G_k5pjL6s_dYBDxyUJZ4LQqtCk47PQbEiIE7YUnyZuQO4byVSRbTX61sWO_FyTPdqUiT9gFqKFDIgMK3K7ntr0n7ppmPpmRxuYkE" style="border: none; transform: rotate(0rad);" width="237" /></a></div>
<b>3. Use the Distance Matrix API to find the closest taxis based on drive time and drive distance. </b>Performing a simple radius or “straight line” distance search to find the nearest available taxis can often provide misleading results. For example, a taxi may be on the far side of a highway or the other side of a river and take a long time to drive to the pick-up point. The <a href="https://developers.google.com/maps/documentation/distancematrix/intro" >Distance Matrix API</a> can calculate the driving distances and times, based on Google’s road network, to improve the accuracy of your search results.<br />
<br /><b>4. Show the real-time location of the customer and driver on a Google Map.</b> Help reassure the customer that their ride is on the way by showing real-time location of the vehicle on a map—in relation to their position. If the driver is unfamiliar with the area this can also help guide her to the customer’s location. Google has global coverage so if you’re working in multiple countries we’ve got you covered. No need to work with multiple map providers. Asset tracking with Google Maps allows a taxi booking company to view the real-time location and status of all their taxis on a central map to help process offline bookings coming in via telephone calls. Need help storing and retrieving all of your taxi fleet locations? Take a look at our <a href="http://googlegeodevelopers.blogspot.sg/2015/06/code-road-android-app-store-your.html" >previous blog post</a> on how to store your location data in the cloud with Firebase.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="clear: right; color: #444444; float: right; font-family: Roboto; font-size: 13.3333333333333px; font-weight: 700; margin-bottom: 1em; margin-left: 1em; vertical-align: baseline; white-space: pre-wrap;"></span></div>
<span id="docs-internal-guid-db4a5036-2813-25f1-8385-22e8e893df81"></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://lh3.googleusercontent.com/F2ygmWUuKZr6-YN3fg6ytxe7OfyoDZDUuGO5q_zV_ojnWFhTvYsMak7Gshohe5XGLtnaJ_J9KMJq8pbd0PAhZoBDhf0pqXRgQsuS5k6k9veWicfHdINCwY50nwbkQpvUNW2AsQI" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://lh3.googleusercontent.com/F2ygmWUuKZr6-YN3fg6ytxe7OfyoDZDUuGO5q_zV_ojnWFhTvYsMak7Gshohe5XGLtnaJ_J9KMJq8pbd0PAhZoBDhf0pqXRgQsuS5k6k9veWicfHdINCwY50nwbkQpvUNW2AsQI" style="border: none; transform: rotate(0rad);" width="236" /></a></div>
<b>5. Provide the customer arrival times based on current traffic conditions.</b> If your customer is in a hurry, it can feel really frustrating wondering when her taxi will arrive. Keep the customer informed of the vehicle’s estimated time of arrival using the duration-in-traffic information in the <a href="https://developers.google.com/maps/documentation/directions/intro" >Directions API</a>.<br /><b><br /></b><br />
<b>6. Provide an estimated fare and drop-off time to the customer.</b> Before the journey starts, provide customers with an estimated fare based on the optimal route and traffic conditions.  The <a href="https://developers.google.com/maps/documentation/directions/intro" >Directions API</a> can provide the route distance and duration in current traffic. Alternative routes can also be provided. These details can be used to estimate when the customer may arrive at their destination and how much it should cost.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="color: #444444; font-family: Roboto; font-size: 13.3333333333333px; font-weight: 700; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img height="400" src="https://lh6.googleusercontent.com/iOLtOCn_oMLirwNKTiFi9s95g4sfkBuINHV6dEBF_Sj4qq0hnJ8dMgN0MtokDtLfIyHqhFUeIfYY7yp_490kFuEIxm5w5Wt3GEIUhdmUXGd4EP4BVYGrSvQwH-4nhoxZm-mjkvA" style="border: none; transform: rotate(0rad);" width="381" /></span></div>
<b>7. Improve measurement accuracy of distance travelled using Roads API.</b> If you’ve used GPS on a smartphone before you probably know that the accuracy can sometimes be poor, especially in highrise urban environments. If you need to calculate fares, driver payments, fuel consumption or maintenance planning then accurate distance reporting is vital. The <a href="https://developers.google.com/maps/documentation/roads/intro" >Roads API</a> can take your original jittery GPS data and snap them to the road network as well as fill in gaps (interpolate) in missing your GPS data to ensure the path smoothly follows the road. This leads to improved distance measurements and better visualisations of where the taxi has actually travelled.<br /><b><br /></b><br />
<b>8. Better understand vehicle speed and safety.</b> Oftentimes a taxi booking company is relying solely on information coming from the driver’s and customer’s smartphone and no in-car telematic devices are available. The Roads API can provide the posted speed limit along a road. This speed limit can be compared with the calculated actual speed of the vehicle (from GPS data) to determine if and where speeding occurs.<br />
<br />
We hope you’re able to incorporate some of these ideas into your taxi booking systems. Learn more about what <a href="https://developers.google.com/maps/" >Google Maps APIs</a> can do for your websites and applications.]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/map-tips-using-the-google-maps-apis-to-book-the-perfect-ride/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Labels meets markers with the Google Maps JavaScript API</title>
		<link>https://googledata.org/google-maps/labels-meets-markers-with-the-google-maps-javascript-api/</link>
		<comments>https://googledata.org/google-maps/labels-meets-markers-with-the-google-maps-javascript-api/#comments</comments>
		<pubDate>Thu, 06 Aug 2015 17:18:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=d42233eabc7dd2f662c34cc709a225c7</guid>
		<description><![CDATA[Maps with many markers can be hard to navigate. On Google Search, we combat this problem by adding labels to the markers on the associated map. This allows users to associate a marker to the specific search result.  Now developers are able to use this labeling property on the <a href="https://developers.google.com/maps/documentation/javascript/markers#icons" target="_blank">Google Maps JavaScript API</a>.<br /><div>
<span><img height="313" src="https://lh5.googleusercontent.com/1ZJ7nBt7huK2BRGxGy047iVsPf3v8VaGrIb66KQjxrgD2jf8TMxDA7Tnszgh6xosq8ZSitkqiOeA6HybC4zHt_FiS3My3t6PcH6gFpxLH2bryggm4t6jgMK5kf8cKb67k_7idHA" width="640"></span></div>
<span></span><br />
Today, we are introducing a new label property to <a href="https://developers.google.com/maps/documentation/javascript/3.exp/reference#MarkerOptions" target="_blank">MarkerOptions</a> that makes labeling your markers easier. The label property allows you to pass a letter, number, or any other character to your map markers, creating a map that is easier to navigate and read.  <br /><br />
For example, to add the label A on a markers, you would add &#8220;label&#8221; to the pin you would like to mark:<br /><pre>var marker = new google.maps.Marker({
  // Supply map and position params as usual.
  label: 'A'
});</pre>
<div>
<span><img src="https://lh6.googleusercontent.com/DAnBdkJto8zBAdQbysgmsTd0LRHO6fNurI_4C8nAdbGsfyMKvA3wKzWRyPSnJW7RaKfRqsxOiwtbvwUsuxx6P2qXtefHz-K8hF4wPE7ecMsSRfLeryJAnmzzpp3VINP2qP6nxfA"></span></div>
<span></span><br />
This feature is also available on custom icons, so you can continue to keep the same look and feel of your map. <br /><br />
You can set the origin of the text in your icons, as well as control the color of the text. For example:<br /><pre>var beachIcon = {
  url: 'images/beachflag.png',
  labelOrigin: new google.maps.Point(9, 9)
};

var marker = new google.maps.Marker({
  // Supply the map and position parameters as usual.
  icon: beachIcon,
  label: {
    text: '2',
    color: 'purple'
  }
});</pre>
<div>
<span><img src="https://lh3.googleusercontent.com/_wP6rUMi0okLFcdGT-Zp7TjZenwSoPO-VtZLfjJrSMqQTz73br9YDxV7uQ-kncC7z0QL4LtW7Xq_3SK9058aBBJyABTMDxNys8eSZjs-kLvjxuZ0gqqoMTst_aRqD8XJHf7Xd2s"></span></div>
<span></span><br />
For more details, check out the <a href="https://developers.google.com/maps/documentation/javascript/markers#icons" target="_blank">developer's guide</a> and <a href="https://developers.google.com/maps/documentation/javascript/3.exp/reference#MarkerLabel" target="_blank">reference</a>. As always, if you have a question, we recommend posting on Stack Overflow using the <a href="http://www.google.com/url?q=http%3A%2F%2Fstackoverflow.com%2Fquestions%2Ftagged%2Fgoogle-maps-api-3&#38;sa=D&#38;sntz=1&#38;usg=AFQjCNEPDKSqE-dVOqGHphuQAXQp0hjQCA" target="_blank">google-maps-api-3</a> tag. Happy mapping!<br /><br /><i>Posted by Richard Wang, Intern, Google Maps JavaScript API team</i>]]></description>
				<content:encoded><![CDATA[Maps with many markers can be hard to navigate. On Google Search, we combat this problem by adding labels to the markers on the associated map. This allows users to associate a marker to the specific search result.  Now developers are able to use this labeling property on the <a href="https://developers.google.com/maps/documentation/javascript/markers#icons" >Google Maps JavaScript API</a>.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Arial; font-size: 14.6666666666667px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img height="313" src="https://lh5.googleusercontent.com/1ZJ7nBt7huK2BRGxGy047iVsPf3v8VaGrIb66KQjxrgD2jf8TMxDA7Tnszgh6xosq8ZSitkqiOeA6HybC4zHt_FiS3My3t6PcH6gFpxLH2bryggm4t6jgMK5kf8cKb67k_7idHA" style="border: none; transform: rotate(0rad);" width="640" /></span></div>
<span id="docs-internal-guid-d1185789-03fc-9578-3ca2-5f442797e6c3"></span><br />
Today, we are introducing a new label property to <a href="https://developers.google.com/maps/documentation/javascript/3.exp/reference#MarkerOptions" >MarkerOptions</a> that makes labeling your markers easier. The label property allows you to pass a letter, number, or any other character to your map markers, creating a map that is easier to navigate and read.  <br />
<br />
For example, to add the label A on a markers, you would add “label” to the pin you would like to mark:<br />
<pre>var marker = new google.maps.Marker({
  // Supply map and position params as usual.
  label: 'A'
});</pre>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Arial; font-size: 14.6666666666667px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img src="https://lh6.googleusercontent.com/DAnBdkJto8zBAdQbysgmsTd0LRHO6fNurI_4C8nAdbGsfyMKvA3wKzWRyPSnJW7RaKfRqsxOiwtbvwUsuxx6P2qXtefHz-K8hF4wPE7ecMsSRfLeryJAnmzzpp3VINP2qP6nxfA" style="border: none; transform: rotate(0rad);" /></span></div>
<span id="docs-internal-guid-d1185789-03fc-eccc-430a-6da81220a1e3"></span><br />
This feature is also available on custom icons, so you can continue to keep the same look and feel of your map. <br />
<br />
You can set the origin of the text in your icons, as well as control the color of the text. For example:<br />
<pre>var beachIcon = {
  url: 'images/beachflag.png',
  labelOrigin: new google.maps.Point(9, 9)
};

var marker = new google.maps.Marker({
  // Supply the map and position parameters as usual.
  icon: beachIcon,
  label: {
    text: '2',
    color: 'purple'
  }
});</pre>
<div class="separator" style="clear: both; text-align: center;">
<span style="color: red; font-family: Arial; font-size: 14.6666666666667px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img src="https://lh3.googleusercontent.com/_wP6rUMi0okLFcdGT-Zp7TjZenwSoPO-VtZLfjJrSMqQTz73br9YDxV7uQ-kncC7z0QL4LtW7Xq_3SK9058aBBJyABTMDxNys8eSZjs-kLvjxuZ0gqqoMTst_aRqD8XJHf7Xd2s" style="border: none; transform: rotate(0rad);" /></span></div>
<span id="docs-internal-guid-d1185789-03fd-5584-2959-2338d97d7059"></span><br />
For more details, check out the <a href="https://developers.google.com/maps/documentation/javascript/markers#icons" >developer's guide</a> and <a href="https://developers.google.com/maps/documentation/javascript/3.exp/reference#MarkerLabel" >reference</a>. As always, if you have a question, we recommend posting on Stack Overflow using the <a href="http://www.google.com/url?q=http%3A%2F%2Fstackoverflow.com%2Fquestions%2Ftagged%2Fgoogle-maps-api-3&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNEPDKSqE-dVOqGHphuQAXQp0hjQCA" >google-maps-api-3</a> tag. Happy mapping!<br />
<br />
<i>Posted by Richard Wang, Intern, Google Maps JavaScript API team</i>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/labels-meets-markers-with-the-google-maps-javascript-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Tixsee builds a slam-dunk ticket-buying experience for the Dallas Mavericks using Google Maps APIs</title>
		<link>https://googledata.org/google-maps/tixsee-builds-a-slam-dunk-ticket-buying-experience-for-the-dallas-mavericks-using-google-maps-apis/</link>
		<comments>https://googledata.org/google-maps/tixsee-builds-a-slam-dunk-ticket-buying-experience-for-the-dallas-mavericks-using-google-maps-apis/#comments</comments>
		<pubDate>Tue, 28 Jul 2015 16:44:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=25cf2481e229e997413d9494ada82dee</guid>
		<description><![CDATA[<span>Posted by Brett Dowling, founder and President of Tixsee</span><br /><br /><i>Editor&#8217;s note: Today&#8217;s guest blogger is Brett Dowling, founder and President of Tixsee, an innovative Fan Experience Management Platform for the sports, entertainment, and venue management industries. Read how <a href="http://www.google.com/url?q=http%3A%2F%2Fwww.tixsee.com%2F&#38;sa=D&#38;sntz=1&#38;usg=AFQjCNHWpHgumX2CuA8nd19i3vwJjyXFEQ" target="_blank">Tixsee</a>&#160;</i><i>built a unique ticket-purchasing platform for the Dallas Mavericks and&#160;</i><i>worked with&#160;Google for Work Premier Partner <a href="https://www.sadasystems.com/" target="_blank">SADA Systems</a> to deploy Google Maps APIs.</i><br /><br />
When you go to a basketball game, you want to make sure you get great seats, secure an awesome view of the court and are able to find your way around the arena. That&#8217;s what we&#8217;re doing for fans of the Dallas Mavericks with our <a href="http://www.google.com/url?q=http%3A%2F%2Fwww.tixsee.com%2F&#38;sa=D&#38;sntz=1&#38;usg=AFQjCNHWpHgumX2CuA8nd19i3vwJjyXFEQ" target="_blank">Tixsee</a> platform, an immersive shopping experience that lets people see the view from their seats before purchasing.<br /><br />
From the <a href="http://www.google.com/url?q=http%3A%2F%2Fwww.mavs.com%2Ftour%2F&#38;sa=D&#38;sntz=1&#38;usg=AFQjCNERBOimQItZruk5bV7icOMv5-XQ4A" target="_blank">Mavericks&#8217; Web site</a>, fans can take a tour of the arena, stroll the aisles to see the view of the court from any seat, then buy a ticket. They can also tour the Mavericks&#8217; store and buy team gear. Visitors make their way around the arena using familiar Street View controls. We used the <a href="https://developers.google.com/maps/documentation/javascript/streetview" target="_blank">Google Maps Street View Service</a> in the <a href="https://developers.google.com/maps/documentation/javascript/" target="_blank">Google Maps JavaScript API</a> to build this experience. We worked with Business Photos America, <a href="http://www.google.com/maps/about/partners/businessview/" target="_blank">Google Maps Business View Trusted Agency</a>, to take more than 12,400 images of the arena. We used those images to create more than 1,000 high-definition panoramas that re-create the arena in 3D.<br /><div>
<span><img alt="PastedGraphic-1.png" height="330" src="https://lh5.googleusercontent.com/2Skwn2g6W2E5I4UvLtVvLJc8IBBU6TiwcI9wgm4n480mmN_33zxdaRxgoxgZRMU3yZJjj6Xn4WVkI-2ZVn88ZcdVhOFoYz62HflgCedpa9kEkrhNXYTdBmFV_qfYuj91KHhMmo0" width="640"></span></div>
<span></span><br />
The Mavericks&#8217; ticketing platform is much more than just the site&#8217;s interactive interface. Just as important is the content management system (CMS) that lets the team do things like create special offers to drum up excitement and increase ticket sales. We use the <a href="https://developers.google.com/maps/documentation/embed/" target="_blank">Google Maps Embed API</a> to embed the Street View imagery inside the CMS. The backend users can then orient the panoramas and preview campaigns before deploying to the live project. For a social media campaign, they hid a photograph of an autographed team ball in the virtual arena, and the first person to find the ball online was able to keep it. Traffic to the site spiked.<br /><div>
<span><img alt="PastedGraphic-2.png" height="331" src="https://lh6.googleusercontent.com/hGk7mTOgpsHNzRpDcVnF1BaWIE_GTKg0rdCVjd3ZOrhdEUY41yEDgUvknkGmBXoU9wtap4xX2NarJc_LPCB-PKU07x6l_LIsRFMXYgZFUa6HA9xwgyDMznDRAkVEwYnj_1zAhbo" width="640"></span></div>
<span></span><br />
We&#8217;ve got a lot more planned, especially for mobile, because we know people will be bringing their phones to the arena. We have plans to release apps for iOS and Android in the near future. We&#8217;ll be using the <a href="https://developers.google.com/maps/documentation/directions/intro" target="_blank">Google Maps Directions API</a> so people can find their way to one of the eight parking lots near the arena, then navigate right to their seats. It&#8217;s all part of our ultimate goal: to build a platform for the Mavericks that intensifies the fan experience and reinforces the value of purchasing tickets to live events at the arena.]]></description>
				<content:encoded><![CDATA[<span class="post-author">Posted by Brett Dowling, founder and President of Tixsee</span><br />
<br />
<i>Editor’s note: Today’s guest blogger is Brett Dowling, founder and President of Tixsee, an innovative Fan Experience Management Platform for the sports, entertainment, and venue management industries. Read how <a href="http://www.google.com/url?q=http%3A%2F%2Fwww.tixsee.com%2F&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHWpHgumX2CuA8nd19i3vwJjyXFEQ" >Tixsee</a>&nbsp;</i><i>built a unique ticket-purchasing platform for the Dallas Mavericks and&nbsp;</i><i>worked with&nbsp;Google for Work Premier Partner <a href="https://www.sadasystems.com/" >SADA Systems</a> to deploy Google Maps APIs.</i><br />
<br />
When you go to a basketball game, you want to make sure you get great seats, secure an awesome view of the court and are able to find your way around the arena. That’s what we’re doing for fans of the Dallas Mavericks with our <a href="http://www.google.com/url?q=http%3A%2F%2Fwww.tixsee.com%2F&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHWpHgumX2CuA8nd19i3vwJjyXFEQ" >Tixsee</a> platform, an immersive shopping experience that lets people see the view from their seats before purchasing.<br />
<br />
From the <a href="http://www.google.com/url?q=http%3A%2F%2Fwww.mavs.com%2Ftour%2F&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNERBOimQItZruk5bV7icOMv5-XQ4A" >Mavericks’ Web site</a>, fans can take a tour of the arena, stroll the aisles to see the view of the court from any seat, then buy a ticket. They can also tour the Mavericks’ store and buy team gear. Visitors make their way around the arena using familiar Street View controls. We used the <a href="https://developers.google.com/maps/documentation/javascript/streetview" >Google Maps Street View Service</a> in the <a href="https://developers.google.com/maps/documentation/javascript/" >Google Maps JavaScript API</a> to build this experience. We worked with Business Photos America, <a href="http://www.google.com/maps/about/partners/businessview/" >Google Maps Business View Trusted Agency</a>, to take more than 12,400 images of the arena. We used those images to create more than 1,000 high-definition panoramas that re-create the arena in 3D.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Arial; font-size: 13.3333333333333px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="PastedGraphic-1.png" height="330" src="https://lh5.googleusercontent.com/2Skwn2g6W2E5I4UvLtVvLJc8IBBU6TiwcI9wgm4n480mmN_33zxdaRxgoxgZRMU3yZJjj6Xn4WVkI-2ZVn88ZcdVhOFoYz62HflgCedpa9kEkrhNXYTdBmFV_qfYuj91KHhMmo0" style="-webkit-transform: rotate(0rad); border: none; transform: rotate(0rad);" width="640" /></span></div>
<span id="docs-internal-guid-df5a61f4-d580-3e83-a217-d44061e017da"></span><br />
The Mavericks’ ticketing platform is much more than just the site’s interactive interface. Just as important is the content management system (CMS) that lets the team do things like create special offers to drum up excitement and increase ticket sales. We use the <a href="https://developers.google.com/maps/documentation/embed/" >Google Maps Embed API</a> to embed the Street View imagery inside the CMS. The backend users can then orient the panoramas and preview campaigns before deploying to the live project. For a social media campaign, they hid a photograph of an autographed team ball in the virtual arena, and the first person to find the ball online was able to keep it. Traffic to the site spiked.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Arial; font-size: 13.3333333333333px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="PastedGraphic-2.png" height="331" src="https://lh6.googleusercontent.com/hGk7mTOgpsHNzRpDcVnF1BaWIE_GTKg0rdCVjd3ZOrhdEUY41yEDgUvknkGmBXoU9wtap4xX2NarJc_LPCB-PKU07x6l_LIsRFMXYgZFUa6HA9xwgyDMznDRAkVEwYnj_1zAhbo" style="-webkit-transform: rotate(0rad); border: none; transform: rotate(0rad);" width="640" /></span></div>
<span id="docs-internal-guid-df5a61f4-d581-f10d-ce47-03ba28aeac4d"></span><br />
We’ve got a lot more planned, especially for mobile, because we know people will be bringing their phones to the arena. We have plans to release apps for iOS and Android in the near future. We’ll be using the <a href="https://developers.google.com/maps/documentation/directions/intro" >Google Maps Directions API</a> so people can find their way to one of the eight parking lots near the arena, then navigate right to their seats. It’s all part of our ultimate goal: to build a platform for the Mavericks that intensifies the fan experience and reinforces the value of purchasing tickets to live events at the arena.]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/tixsee-builds-a-slam-dunk-ticket-buying-experience-for-the-dallas-mavericks-using-google-maps-apis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Map Tips: Create a connected mapping experience</title>
		<link>https://googledata.org/google-maps/map-tips-create-a-connected-mapping-experience/</link>
		<comments>https://googledata.org/google-maps/map-tips-create-a-connected-mapping-experience/#comments</comments>
		<pubDate>Tue, 21 Jul 2015 14:47:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=8bd2d19c40e68edcf5ac56b2d58ce1df</guid>
		<description><![CDATA[<span></span><br /><span>Posted by David McClusky, Google Maps Solutions Architect</span><br /><br /><i>Editor&#8217;s note:  &#8216;Map Tips&#8217; are designed to answer frequently asked questions about <a href="https://developers.google.com/maps/" target="_blank">Google Maps APIs</a>. For important tips on how to deploy Google&#8217;s mapping tools, read more from <a href="https://www.google.com/url?q=https%3A%2F%2Ftwitter.com%2Fdavidmcclusky&#38;sa=D&#38;sntz=1&#38;usg=AFQjCNHj4u2YoeC5gQIGakn0IALpml8JaQ" target="_blank">David McClusky</a>, Google Maps Solutions Architect at Google.</i><br /><div>
</div>
<span></span> Millions of websites and apps are leveraging the Google Maps APIs today&#8212;whether helping users book a hotel or find a great restaurant. But, did you know that by enabling signed-in maps you can make this an even more powerful experience for your users? With signed-in Maps, you can build applications where users will see a map completely tailored to them.<br /><br />
Within your application, users will have the option to sign-in to the Google Map with their Google account, and will be able to see all of their favorite places (such as their home and work locations) displayed on your map.  If you display your own layers of data on the map, such as markers for store locations, you can enable your users to save those to their favorite places as well, to be viewable on other Google Maps throughout the web and mobile devices  (such as maps.google.com or Google Maps for Android/iOS).<br /><br />
For example, imagine you are building a travel site to help users choose a hotel and plan nearby activities.  By enabling signed-in maps, a user can save a hotel they found on your site to their personal Google account.<br /><span></span><span></span><span></span><span><span><img height="435" src="https://lh4.googleusercontent.com/nC07FoNkWRNgzMbbkaFFW_ulAtMu5DFHjcD-jqpGWXPqeTeYHZCgkdEVW2w3kXv0EwV2QlFP-X4wGXbU_xBcxcwqDqdRE1qenLi2FHeo15fN00TdYtfUGk3fDG1tjwdpy_D4OUc" width="640"></span></span><br />
Later, when continuing their research on maps.google.com or on Google Maps Mobile, your user will see the hotel she saved (indicated by a star on the map), with a link back to your site.<br /><span><span><img height="435" src="https://lh4.googleusercontent.com/Q_81n5An8DsaskGIE_2G_-3N4PCWpDP8NeCJTeYDFFFuObXuw-ocgY2jX76AF72UiW-tqKLX9ur-X8uJxkQwjdXnrVhF-jjqieSvfA4egNOwMVSlvFAicirCih6xE6Q9nAB3Rxc" width="640"></span></span><br /><h4>
 Getting Started</h4>
 It&#8217;s easy to get started. The first step is to enable sign-in on a map created with the Google Maps JavaScript API. You do this by including &#8220;signed_in=true&#8221; when loading the Javascript API:<br /><br /><pre>&#60;script type="text/javascript"
  src="https://maps.googleapis.com/maps/api/js?v=3.exp&#38;signed_in=true"&#62;
&#60;/script&#62;
</pre>
When you enable sign-in with the Google Maps JavaScript API, your users will now see a map tailored to them, which means their saved locations will now show on the map.  As you can see in the following picture, the user&#8217;s Google profile picture will also appear in the top-right of the map (when logged in with a Google account).<br /><span></span><span><span><img height="315px;" src="https://lh4.googleusercontent.com/yEaES04xiQKNf5dtMykcvXIYf7SXvzRx-Mw6HqWO1bYiSZuvFu3WFX2hhUACWp5M5HKdenn1cJasYEAAv8UvIOYBv3chyJ26RK3FGPSfYJg4R4zE6JaIdEL2Jc8jO93SaEvWGs8" width="624px;"></span></span><br />
Next, you want to help your users remember the locations that matter most to them by allowing them to save places using the Attributed Save feature of the Google Maps Javascript API. With Attributed Save, saved places will appear on other Google Maps when a user views them on the web or mobile devices. <br /><br />
The easiest way to do this is by adding place and attribution properties to the MarkerOptions object when creating and adding a marker to your map.<br /><pre>var marker = new google.maps.Marker({
    map: map,
    // Define the place with a location, and a query string.
    place: {
      location: {lat: 40.739929, lng: -74.005792},
      query: Gansevoort Meatpacking NYC, New York, NY
    },
    // Attributions help users find your site again.
    attribution: {
      source: 'Altostrat Hotels',
      webUrl: 'https://developers.google.com/maps/'
    }
  });</pre>
By adding the place property with a location and query string, you are associating your marker with a specific point-of-interest in Google&#8217;s database of places.  The attribution field allows your users link back to your site again in the future when viewing this saved place on other maps throughout the web. Note that attributed save requires the place to be known in Google&#8217;s database (either as a business name or an address). Here is a complete working code <a href="https://developers.google.com/maps/documentation/javascript/examples/save-infowindow" target="_blank">sample</a> for reference.<br /><br /><h4>
Tips and Tricks</h4>
Here are some tips to help you make the most of signed-in maps using the Google Maps Javascript API:<br /><br />
When specifying the place to associate with a marker, use placeId rather than a query string to uniquely identify the place.  Learn more about how to <a href="https://developers.google.com/maps/documentation/javascript/places#placeid" target="_blank">reference a place using a place Id</a>.<br />
Be sure to use include attribution for any markers added to the map, so your users can easily link back to your site when viewing favorite places on other maps throughout the web.<br />
If you are showing only a single marker on a map, using the <a href="https://developers.google.com/maps/documentation/javascript/signedin#save_to_google_maps_with_the_savewidget" target="_blank">SaveWidget</a> is a great way to highlight the location with a custom display<br /><br /><h4>
Resources</h4>
We hope you&#8217;re able to incorporate signed-in Maps  into your website. To learn more about implementing signed-in  Maps and Attributed Save, take a look at the following resources:<br /><ul><li><a href="https://developers.google.com/maps/documentation/javascript/signedin" target="_blank">Google Maps Javascript API Developer&#8217;s Guide</a></li>
<li><a href="https://developers.google.com/maps/documentation/javascript/signedin#save_to_google_maps_with_an_info_window" target="_blank">Attributed Save: Save to Google Maps with an info window</a></li>
<li><a href="https://developers.google.com/maps/documentation/javascript/signedin#save_to_google_maps_with_the_savewidget" target="_blank">Attributed Save: Save to Google Maps with a SaveWidget</a></li>
</ul>]]></description>
				<content:encoded><![CDATA[<span style="clear: right; float: right; font-family: 'Open Sans'; font-size: 13.3333333333333px; margin-bottom: 1em; margin-left: 1em; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span class="post-author">Posted by David McClusky, Google Maps Solutions Architect</span><br />
<br />
<i>Editor’s note:  ‘Map Tips’ are designed to answer frequently asked questions about <a href="https://developers.google.com/maps/" >Google Maps APIs</a>. For important tips on how to deploy Google’s mapping tools, read more from <a href="https://www.google.com/url?q=https%3A%2F%2Ftwitter.com%2Fdavidmcclusky&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHj4u2YoeC5gQIGakn0IALpml8JaQ" >David McClusky</a>, Google Maps Solutions Architect at Google.</i><br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/jRBzpZMuScU" width="560"></iframe></div>
<span style="clear: right; float: right; font-family: 'Open Sans'; font-size: 13.3333333333333px; margin-bottom: 1em; margin-left: 1em; vertical-align: baseline; white-space: pre-wrap;"></span><insert here="" video=""> Millions of websites and apps are leveraging the Google Maps APIs today—whether helping users book a hotel or find a great restaurant. But, did you know that by enabling signed-in maps you can make this an even more powerful experience for your users? With signed-in Maps, you can build applications where users will see a map completely tailored to them.<br />
<br />
Within your application, users will have the option to sign-in to the Google Map with their Google account, and will be able to see all of their favorite places (such as their home and work locations) displayed on your map.  If you display your own layers of data on the map, such as markers for store locations, you can enable your users to save those to their favorite places as well, to be viewable on other Google Maps throughout the web and mobile devices  (such as maps.google.com or Google Maps for Android/iOS).<br />
<br />
For example, imagine you are building a travel site to help users choose a hotel and plan nearby activities.  By enabling signed-in maps, a user can save a hotel they found on your site to their personal Google account.<br />
<span id="docs-internal-guid-8f415324-b101-184f-de77-525ceac8bc55"></span><span id="docs-internal-guid-8f415324-b101-184f-de77-525ceac8bc55"></span><span id="docs-internal-guid-8f415324-b101-184f-de77-525ceac8bc55"></span><span id="docs-internal-guid-8f415324-b101-184f-de77-525ceac8bc55"><span style="font-family: 'Open Sans'; font-size: 13.3333333333333px; vertical-align: baseline; white-space: pre-wrap;"><img height="435" src="https://lh4.googleusercontent.com/nC07FoNkWRNgzMbbkaFFW_ulAtMu5DFHjcD-jqpGWXPqeTeYHZCgkdEVW2w3kXv0EwV2QlFP-X4wGXbU_xBcxcwqDqdRE1qenLi2FHeo15fN00TdYtfUGk3fDG1tjwdpy_D4OUc" style="-webkit-transform: rotate(0rad); border: none; transform: rotate(0rad);" width="640" /></span></span><br />
Later, when continuing their research on maps.google.com or on Google Maps Mobile, your user will see the hotel she saved (indicated by a star on the map), with a link back to your site.<br />
<span id="docs-internal-guid-8f415324-b102-d322-bf70-19593b6ee9ef"><span style="font-family: 'Open Sans'; font-size: 13.3333333333333px; vertical-align: baseline; white-space: pre-wrap;"><img height="435" src="https://lh4.googleusercontent.com/Q_81n5An8DsaskGIE_2G_-3N4PCWpDP8NeCJTeYDFFFuObXuw-ocgY2jX76AF72UiW-tqKLX9ur-X8uJxkQwjdXnrVhF-jjqieSvfA4egNOwMVSlvFAicirCih6xE6Q9nAB3Rxc" style="-webkit-transform: rotate(0rad); border: none; transform: rotate(0rad);" width="640" /></span></span></insert><br />
<h4>
<insert here="" video=""> Getting Started</insert></h4>
<insert here="" video=""> It’s easy to get started. The first step is to enable sign-in on a map created with the Google Maps JavaScript API. You do this by including “signed_in=true” when loading the Javascript API:<br />
</insert><br />
<pre>&lt;script type="text/javascript"
  src="https://maps.googleapis.com/maps/api/js?v=3.exp&amp;signed_in=true"&gt;
&lt;/script&gt;
</pre>
When you enable sign-in with the Google Maps JavaScript API, your users will now see a map tailored to them, which means their saved locations will now show on the map.  As you can see in the following picture, the user’s Google profile picture will also appear in the top-right of the map (when logged in with a Google account).<br />
<span id="docs-internal-guid-8f415324-b103-4263-6517-d865eeb53580"></span><span id="docs-internal-guid-8f415324-b103-ac06-964e-1b5e259fbedc"><span style="font-family: 'Open Sans'; font-size: 13.3333333333333px; vertical-align: baseline; white-space: pre-wrap;"><img height="315px;" src="https://lh4.googleusercontent.com/yEaES04xiQKNf5dtMykcvXIYf7SXvzRx-Mw6HqWO1bYiSZuvFu3WFX2hhUACWp5M5HKdenn1cJasYEAAv8UvIOYBv3chyJ26RK3FGPSfYJg4R4zE6JaIdEL2Jc8jO93SaEvWGs8" style="-webkit-transform: rotate(0rad); border: none; transform: rotate(0rad);" width="624px;" /></span></span><br />
Next, you want to help your users remember the locations that matter most to them by allowing them to save places using the Attributed Save feature of the Google Maps Javascript API. With Attributed Save, saved places will appear on other Google Maps when a user views them on the web or mobile devices. <br />
<br />
The easiest way to do this is by adding place and attribution properties to the MarkerOptions object when creating and adding a marker to your map.<br />
<pre>var marker = new google.maps.Marker({
    map: map,
    // Define the place with a location, and a query string.
    place: {
      location: {lat: 40.739929, lng: -74.005792},
      query: Gansevoort Meatpacking NYC, New York, NY
    },
    // Attributions help users find your site again.
    attribution: {
      source: 'Altostrat Hotels',
      webUrl: 'https://developers.google.com/maps/'
    }
  });</pre>
By adding the place property with a location and query string, you are associating your marker with a specific point-of-interest in Google’s database of places.  The attribution field allows your users link back to your site again in the future when viewing this saved place on other maps throughout the web. Note that attributed save requires the place to be known in Google’s database (either as a business name or an address). Here is a complete working code <a href="https://developers.google.com/maps/documentation/javascript/examples/save-infowindow" >sample</a> for reference.<br />
<br />
<h4>
Tips and Tricks</h4>
Here are some tips to help you make the most of signed-in maps using the Google Maps Javascript API:<br />
<br />
When specifying the place to associate with a marker, use placeId rather than a query string to uniquely identify the place.  Learn more about how to <a href="https://developers.google.com/maps/documentation/javascript/places#placeid" >reference a place using a place Id</a>.<br />
Be sure to use include attribution for any markers added to the map, so your users can easily link back to your site when viewing favorite places on other maps throughout the web.<br />
If you are showing only a single marker on a map, using the <a href="https://developers.google.com/maps/documentation/javascript/signedin#save_to_google_maps_with_the_savewidget" >SaveWidget</a> is a great way to highlight the location with a custom display<br />
<br />
<h4>
Resources</h4>
We hope you’re able to incorporate signed-in Maps  into your website. To learn more about implementing signed-in  Maps and Attributed Save, take a look at the following resources:<br />
<ul>
<li><a href="https://developers.google.com/maps/documentation/javascript/signedin" >Google Maps Javascript API Developer’s Guide</a></li>
<li><a href="https://developers.google.com/maps/documentation/javascript/signedin#save_to_google_maps_with_an_info_window" >Attributed Save: Save to Google Maps with an info window</a></li>
<li><a href="https://developers.google.com/maps/documentation/javascript/signedin#save_to_google_maps_with_the_savewidget" >Attributed Save: Save to Google Maps with a SaveWidget</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/map-tips-create-a-connected-mapping-experience/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>New life for old photos: Mapping OldNYC</title>
		<link>https://googledata.org/google-maps/new-life-for-old-photos-mapping-oldnyc/</link>
		<comments>https://googledata.org/google-maps/new-life-for-old-photos-mapping-oldnyc/#comments</comments>
		<pubDate>Mon, 20 Jul 2015 17:03:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=9404529ce4851e339567357af08f926d</guid>
		<description><![CDATA[<span>Posted by Selena Salazar, Product Marketing Manager, Google Maps APIs</span><br /><br />
When Dan Vanderkam, a developer and self-confessed history lover, moved to New York in 2011, he found himself wondering what the city used to look like. He figured other people probably shared his curiosity, so he built a website, <a href="http://oldnyc.org/">oldnyc.org</a>, that overlays the city&#8217;s streets with more than 80,000 images from its past. <br /><br />
&#8220;I've always enjoyed historic photos because they capture so many details that you'd never write about,&#8221; Vanderkam says, guessing it&#8217;s something his father, a historian, passed down to him. &#8220;They really are a window into the past.&#8221; <br /><br />
Vanderkam approached Matt Knutzen, a geospatial librarian at the New York Public Library, whom he met a couple of years earlier at an event at the Google New York office. <br /><br />
At the time, Vanderkam was developing a website that mapped old pictures of San Francisco. <br /><br />
&#8220;We immediately began talking about historical photos and the possibility of overlaying images in 3D space,&#8221; Knutzen recalls.<br /><br />
For the San Francisco project, Vanderkam scraped photos from the San Francisco Public Library&#8217;s online archive, and only asked for permission to use them once he&#8217;d completed the site. <br /><br />
&#8220;I realized later how risky it was to ask them that late,&#8221; he says. &#8220;So, when I went to New York and started oldnyc, I did things differently by approaching the library first.&#8221;<br /><br /><h4>
Starting Work on OldNYC</h4>
Knutzen, who studied geography and cartography in college, was immediately taken with the idea and knew exactly what resources to direct Vanderkam to. He introduced Vanderkam to the Milstein division of the library, which included a collection called <a href="http://www.google.com/url?q=http%3A%2F%2Fdigitalcollections.nypl.org%2Fcollections%2Fphotographic-views-of-new-york-city-1870s-1970s-from-the-collections-of-the-ne-2%23%2F%3Ftab%3Dabout%26scroll%3D12&#38;sa=D&#38;sntz=1&#38;usg=AFQjCNFdbSMdkqmGTxoqo9p3OOb_QPxYqA" target="_blank">Photographic Views of New York City, 1870s &#8211; 1970s</a>. <br /><br />
The images, which are mounted on brown paper, include horse-drawn carts on barely developed dirt roads in the Bronx, skaters at Central Park in 1905, and a giant alligator balloon at Columbus Circle for Macy&#8217;s Thanksgiving Parade.<br /><div>
<span><img alt="Old_Newyork_2.jpg" height="424" src="https://lh5.googleusercontent.com/tRziESRUSAwWd-n_ILOTxAXGYKNST9F9Xm4R0xXOSNMhWCTMLk2xL9FwCd7ky9O2KDYySPg2cCicBirRLxGZYBnf40vZ62rYVteOTW1mTAXFKwZsMwmdi-iGxKIMuryOPWRwqxA" width="640"></span></div>
<span></span><br />
On oldnyc.org, clicking on a red dot marker will open a popup box containing photos of the location sorted from the earliest date to the most recent. Some of the images are undated. The site also shows the descriptions that Vanderkam says were written on the backs of some pictures.<br /><div>
<span><img alt="Old_NY_1.png" height="336" src="https://lh5.googleusercontent.com/oTjYpJoIBCuTyXUEeH-L4DkfoBnFbJNOVH1uEnhZDTWujTJb96nQk-k80nTB-XsWEHZcvxIOAsI-bGHvY9WNRJh8A0r9WbdLKcgCWEWHxYrahsK8k1H0COueBnhHt1viQGUUMvs" width="640"></span></div>
<span></span><br />
Luckily for Vanderkam, Knutzen had already created a metadata spreadsheet containing unique identifiers for each photo corresponding to cross street locations. <br /><br />
&#8220;Plugging the data into <a href="https://developers.google.com/maps/" target="_blank">Google Maps APIs</a> was made easier because I didn&#8217;t have to scrape information or hunt for street names,&#8221; said Vanderkam.<br /><br />
To convert the addresses to latitudes and longitudes, Vanderkam used the <a href="https://developers.google.com/maps/documentation/geocoding/intro" target="_blank">Google Maps Geocoding API</a>.<br /><br />
In order to customize his map, he used the <a href="https://developers.google.com/maps/web/" target="_blank">Google Maps JavaScript API</a> to create location markers, and adjust hue, lightness, saturation, gamma, invert lightness, and visibility. He also specified that his map only include roads and not other elements.<br /><div>
<span><img alt="Old_NY_3.png" height="332" src="https://lh3.googleusercontent.com/W-oXJjBYa59c-xmJgtJaBV4_-qyomeOiF8wjdCpoMeuYhYUdltzVKCd52SRR4cLMgW8KdgCCV5_aiFBvsKT85LRb_jSLllmIapycJ_WBvrkS9M1lw57K4CfhWZHO-xtu-u9axhs" width="640"></span></div>
<span></span><br />
Vanderkam wanted other people to be able to engage with the pictures of the city, so he used a comments API from Facebook to allow site visitors to share their personal experiences.<br /><br /><h4>
Teaching Computers, Engaging Communities</h4>
Getting the photos on his site was also a challenge. Some of the photos were mounted individually, but others were mounted in pairs or more. To automate the task of matching an image with the coordinates in Knutzen&#8217;s spreadsheet and then uploading it to site, Vanderkam wrote code so that the computer could recognise the brown paper and isolate the photos. This was <a href="http://www.google.com/url?q=http%3A%2F%2Fwww.danvk.org%2Fwp%2F2013-02-09%2Ffinding-pictures-in-pictures%2F&#38;sa=D&#38;sntz=1&#38;usg=AFQjCNELXq2Ia8ZSxYPdAyB9nMGEvewKxg" target="_blank">no simple task</a>. To display them, Vanderkam used an expandable image grid library that enlarges a photo when it&#8217;s clicked on. The code is published on <a href="https://github.com/" target="_blank">GitHub</a> by danvk.<br /><div>
<span><img alt="Old_NY_5.png" height="330" src="https://lh6.googleusercontent.com/KRWBkFh2uv3Gzfj6meR9WYewXSpCsN9PZAMfRs7yduWurC5ySgwjTX-RI3Yh4YTrlSEA5I1DmXFggQAL8Fm6B_RScmOCHxUDA9PaXNed0Lixn2rjaC_7kzs-AXd7qKJhDPpO9Mg" width="640"></span></div>
<span></span><br />
Vanderkam also created &#8220;rotate&#8221; and &#8220;improve this transcription&#8221; buttons to encourage site visitors to correct an image&#8217;s orientation or the transcription of the descriptive text on the backs of photos.<br /><div>
<span><img alt="Old_NY_4.png" height="332" src="https://lh5.googleusercontent.com/lSk9_vliul7ry0uYzGNEZxIgQCO3EyfqMERF_bCsTJ2yjEAD6RTbWcGkgHi4nIdBkV8UOJb8FmYiCZbZEK3ejRW3DonzF9PCKdYTgreIgvbcCwclXyrHQfxdLiUUv3cemXlvy_8" width="640"></span></div>
<span></span><br />
&#8220;Oldnyc is an incredibly valuable research tool. It&#8217;s now the best way into the photo collection,&#8221; says Knutzen. &#8220;Having the information of places aligned spatially combines information to give us new knowledge to make new discoveries.&#8221;<br /><br />
Vanderkam doesn&#8217;t have plans to work on maps for more cities, but hopes that someone else would be interested in picking up the baton. &#8220;The code for it is all open source, so if anyone is interested in building a version for their hometown, they should get in touch,&#8221; he says.]]></description>
				<content:encoded><![CDATA[<span class="post-author">Posted by Selena Salazar, Product Marketing Manager, Google Maps APIs</span><br />
<br />
When Dan Vanderkam, a developer and self-confessed history lover, moved to New York in 2011, he found himself wondering what the city used to look like. He figured other people probably shared his curiosity, so he built a website, <a href="http://oldnyc.org/">oldnyc.org</a>, that overlays the city’s streets with more than 80,000 images from its past. <br />
<br />
“I've always enjoyed historic photos because they capture so many details that you'd never write about,” Vanderkam says, guessing it’s something his father, a historian, passed down to him. “They really are a window into the past.” <br />
<br />
Vanderkam approached Matt Knutzen, a geospatial librarian at the New York Public Library, whom he met a couple of years earlier at an event at the Google New York office. <br />
<br />
At the time, Vanderkam was developing a website that mapped old pictures of San Francisco. <br />
<br />
“We immediately began talking about historical photos and the possibility of overlaying images in 3D space,” Knutzen recalls.<br />
<br />
For the San Francisco project, Vanderkam scraped photos from the San Francisco Public Library’s online archive, and only asked for permission to use them once he’d completed the site. <br />
<br />
“I realized later how risky it was to ask them that late,” he says. “So, when I went to New York and started oldnyc, I did things differently by approaching the library first.”<br />
<br />
<h4>
Starting Work on OldNYC</h4>
Knutzen, who studied geography and cartography in college, was immediately taken with the idea and knew exactly what resources to direct Vanderkam to. He introduced Vanderkam to the Milstein division of the library, which included a collection called <a href="http://www.google.com/url?q=http%3A%2F%2Fdigitalcollections.nypl.org%2Fcollections%2Fphotographic-views-of-new-york-city-1870s-1970s-from-the-collections-of-the-ne-2%23%2F%3Ftab%3Dabout%26scroll%3D12&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNFdbSMdkqmGTxoqo9p3OOb_QPxYqA" >Photographic Views of New York City, 1870s – 1970s</a>. <br />
<br />
The images, which are mounted on brown paper, include horse-drawn carts on barely developed dirt roads in the Bronx, skaters at Central Park in 1905, and a giant alligator balloon at Columbus Circle for Macy’s Thanksgiving Parade.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="background-color: white; color: #222222; font-family: 'Pontano Sans'; font-size: 13.3333333333333px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="Old_Newyork_2.jpg" height="424" src="https://lh5.googleusercontent.com/tRziESRUSAwWd-n_ILOTxAXGYKNST9F9Xm4R0xXOSNMhWCTMLk2xL9FwCd7ky9O2KDYySPg2cCicBirRLxGZYBnf40vZ62rYVteOTW1mTAXFKwZsMwmdi-iGxKIMuryOPWRwqxA" style="-webkit-transform: rotate(0rad); border: none; transform: rotate(0rad);" width="640" /></span></div>
<span id="docs-internal-guid-7697da43-a8e1-645a-5b2e-f2b7746db763"></span><br />
On oldnyc.org, clicking on a red dot marker will open a popup box containing photos of the location sorted from the earliest date to the most recent. Some of the images are undated. The site also shows the descriptions that Vanderkam says were written on the backs of some pictures.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="background-color: white; color: #222222; font-family: 'Pontano Sans'; font-size: 13.3333333333333px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="Old_NY_1.png" height="336" src="https://lh5.googleusercontent.com/oTjYpJoIBCuTyXUEeH-L4DkfoBnFbJNOVH1uEnhZDTWujTJb96nQk-k80nTB-XsWEHZcvxIOAsI-bGHvY9WNRJh8A0r9WbdLKcgCWEWHxYrahsK8k1H0COueBnhHt1viQGUUMvs" style="-webkit-transform: rotate(0rad); border: none; transform: rotate(0rad);" width="640" /></span></div>
<span id="docs-internal-guid-7697da43-a8e2-14a0-7168-48df70690566"></span><br />
Luckily for Vanderkam, Knutzen had already created a metadata spreadsheet containing unique identifiers for each photo corresponding to cross street locations. <br />
<br />
“Plugging the data into <a href="https://developers.google.com/maps/" >Google Maps APIs</a> was made easier because I didn’t have to scrape information or hunt for street names,” said Vanderkam.<br />
<br />
To convert the addresses to latitudes and longitudes, Vanderkam used the <a href="https://developers.google.com/maps/documentation/geocoding/intro" >Google Maps Geocoding API</a>.<br />
<br />
In order to customize his map, he used the <a href="https://developers.google.com/maps/web/" >Google Maps JavaScript API</a> to create location markers, and adjust hue, lightness, saturation, gamma, invert lightness, and visibility. He also specified that his map only include roads and not other elements.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="background-color: white; color: #222222; font-family: 'Pontano Sans'; font-size: 13.3333333333333px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="Old_NY_3.png" height="332" src="https://lh3.googleusercontent.com/W-oXJjBYa59c-xmJgtJaBV4_-qyomeOiF8wjdCpoMeuYhYUdltzVKCd52SRR4cLMgW8KdgCCV5_aiFBvsKT85LRb_jSLllmIapycJ_WBvrkS9M1lw57K4CfhWZHO-xtu-u9axhs" style="-webkit-transform: rotate(0rad); border: none; transform: rotate(0rad);" width="640" /></span></div>
<span id="docs-internal-guid-7697da43-a8e2-84c7-9232-9a603dbd78cc"></span><br />
Vanderkam wanted other people to be able to engage with the pictures of the city, so he used a comments API from Facebook to allow site visitors to share their personal experiences.<br />
<br />
<h4>
Teaching Computers, Engaging Communities</h4>
Getting the photos on his site was also a challenge. Some of the photos were mounted individually, but others were mounted in pairs or more. To automate the task of matching an image with the coordinates in Knutzen’s spreadsheet and then uploading it to site, Vanderkam wrote code so that the computer could recognise the brown paper and isolate the photos. This was <a href="http://www.google.com/url?q=http%3A%2F%2Fwww.danvk.org%2Fwp%2F2013-02-09%2Ffinding-pictures-in-pictures%2F&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNELXq2Ia8ZSxYPdAyB9nMGEvewKxg" >no simple task</a>. To display them, Vanderkam used an expandable image grid library that enlarges a photo when it’s clicked on. The code is published on <a href="https://github.com/" >GitHub</a> by danvk.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="background-color: white; color: #222222; font-family: 'Pontano Sans'; font-size: 13.3333333333333px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="Old_NY_5.png" height="330" src="https://lh6.googleusercontent.com/KRWBkFh2uv3Gzfj6meR9WYewXSpCsN9PZAMfRs7yduWurC5ySgwjTX-RI3Yh4YTrlSEA5I1DmXFggQAL8Fm6B_RScmOCHxUDA9PaXNed0Lixn2rjaC_7kzs-AXd7qKJhDPpO9Mg" style="-webkit-transform: rotate(0rad); border: none; transform: rotate(0rad);" width="640" /></span></div>
<span id="docs-internal-guid-7697da43-a8e2-eff9-6409-5f90258b654c"></span><br />
Vanderkam also created “rotate” and “improve this transcription” buttons to encourage site visitors to correct an image’s orientation or the transcription of the descriptive text on the backs of photos.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="background-color: white; color: #222222; font-family: 'Pontano Sans'; font-size: 13.3333333333333px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="Old_NY_4.png" height="332" src="https://lh5.googleusercontent.com/lSk9_vliul7ry0uYzGNEZxIgQCO3EyfqMERF_bCsTJ2yjEAD6RTbWcGkgHi4nIdBkV8UOJb8FmYiCZbZEK3ejRW3DonzF9PCKdYTgreIgvbcCwclXyrHQfxdLiUUv3cemXlvy_8" style="-webkit-transform: rotate(0rad); border: none; transform: rotate(0rad);" width="640" /></span></div>
<span id="docs-internal-guid-7697da43-a8e3-29fb-9db1-07f9e5ae6026"></span><br />
“Oldnyc is an incredibly valuable research tool. It’s now the best way into the photo collection,” says Knutzen. “Having the information of places aligned spatially combines information to give us new knowledge to make new discoveries.”<br />
<br />
Vanderkam doesn’t have plans to work on maps for more cities, but hopes that someone else would be interested in picking up the baton. “The code for it is all open source, so if anyone is interested in building a version for their hometown, they should get in touch,” he says. ]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/new-life-for-old-photos-mapping-oldnyc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>The Weather Channel brings real-time weather updates to users with Google Maps APIs</title>
		<link>https://googledata.org/google-maps/the-weather-channel-brings-real-time-weather-updates-to-users-with-google-maps-apis/</link>
		<comments>https://googledata.org/google-maps/the-weather-channel-brings-real-time-weather-updates-to-users-with-google-maps-apis/#comments</comments>
		<pubDate>Mon, 20 Jul 2015 14:02:00 +0000</pubDate>
		<dc:creator><![CDATA[Maps Devel]]></dc:creator>
				<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Google Earth]]></category>
		<category><![CDATA[google geo]]></category>
		<category><![CDATA[google geodevelopers]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=33cb17524f51bf411f4c6f8b374f8b72</guid>
		<description><![CDATA[<span>Posted by Chris Huff, Vice President of Mobile Development, The Weather Channel</span><br /><br /><i>Editor&#8217;s note: Today&#8217;s guest blogger is Chris Huff, Vice President of Mobile Development at <a href="http://www.weather.com/" target="_blank">The Weather Channel</a>. Read how The Weather Channel uses Google Maps APIs to power their popular Android app. The Weather Channel is just one of many customers who shared their story as part of our cross-country road trip, <a href="https://codetheroad.developers.google.com/" target="_blank">Code the Road</a>.</i><br /><br />
We know from experience that the combination of weather, mapping and community input can result in ideas that keep people safe and informed. Our Android app goes far beyond basic weather forecasting, which is why we chose Google Maps. We use <a href="https://developers.google.com/maps/documentation/android/" target="_blank">Google Maps Android API</a>, <a href="https://developers.google.com/maps/documentation/javascript/" target="_blank">Google Maps JavaScript API</a> and ImageOverlays to place geodata, such as weather alerts, hurricanes, and storm tracks, and weather tiles, such as radar maps and clouds, on top of Google Maps.<br /><br />
Radar maps are one of the app&#8217;s main features, and we work hard to get them right. We get radar imagery from multiple sources and produce raster images from them. Then we take hundreds of the images and animate them in a frame-based animation sequence. The Google Maps Android API gives us overlays to place the animation on top of maps, and also lets us add additional objects such as pins and polygons to visualize lightning strikes or a storm&#8217;s direction. You can see an example below.<br /><div>
</div>
<div>
</div>
<div>
</div>
<div>
<a href="http://3.bp.blogspot.com/-pxlGkjQ5U68/Va1KO5pv93I/AAAAAAAAAbg/Q3IpbuR3vNw/s1600/Weather-Channel-7-13update.gif"><img border="0" height="640" src="http://3.bp.blogspot.com/-pxlGkjQ5U68/Va1KO5pv93I/AAAAAAAAAbg/Q3IpbuR3vNw/s640/Weather-Channel-7-13update.gif" width="338"></a></div>
<br />
The more local weather reporting is, the more accurate it is; a thunderstorm may skip one neighborhood but hit another. So to improve accuracy and to build a community around our app, we&#8217;ve been working to make it more social. People send us information about weather near them, and we use the Google Maps Android API to add a pin to the map for each user-created report. Anyone can tap a pin to see the detailed report. Here&#8217;s an example of social weather reporting.<br /><div>
<span><img alt="Social Weather Reports_The Weather Channel App for Android_framed.png" height="640" src="https://lh4.googleusercontent.com/mlfiDZr5S-HzQtGANSMbRmCwFmJ__7g6wL4Y3Q9XyNShkJI9P9W1CxDMC51AgynymsYxCnMy3vbK2NQ0S-O1XXSPIZ7X4fIUQC893_8EdPkTBZ-JJVsF4D0IaB169pfBcqBbwvk" width="378"></span></div>
<span></span><br />
With more than 68 million downloads, the app has been a tremendous success. We get 2 billion requests for radar maps every year. There&#8217;s an old saying that everyone talks about the weather but no one does anything about it. We beg to disagree. With the Google Maps APIs we&#8217;re giving people detailed, useful, live information about the weather, and we believe that&#8217;s doing quite a bit.<br /><br />
As part of the Code the Road series we hosted the 24-hour hackathon event, &#8220;<a href="http://www.google.com/url?q=http%3A%2F%2Fgooglegeodevelopers.blogspot.com%2F2015%2F07%2Fcode-road-storm-road-hackathon-with.html&#38;sa=D&#38;sntz=1&#38;usg=AFQjCNGyrhDW5QpoY_LKf9J20ilGMkvgEA" target="_blank">Storm the Road: Hack for Safety with The Weather Channel and Google Maps</a>&#8221;, on June 23. The event gave developers an opportunity to come together to create a new app or feature for mobile or web that helps keep the public safe and informed.]]></description>
				<content:encoded><![CDATA[<span class="post-author">Posted by Chris Huff, Vice President of Mobile Development, The Weather Channel</span><br />
<br />
<i>Editor’s note: Today’s guest blogger is Chris Huff, Vice President of Mobile Development at <a href="http://www.weather.com/" >The Weather Channel</a>. Read how The Weather Channel uses Google Maps APIs to power their popular Android app. The Weather Channel is just one of many customers who shared their story as part of our cross-country road trip, <a href="https://codetheroad.developers.google.com/" >Code the Road</a>.</i><br />
<br />
We know from experience that the combination of weather, mapping and community input can result in ideas that keep people safe and informed. Our Android app goes far beyond basic weather forecasting, which is why we chose Google Maps. We use <a href="https://developers.google.com/maps/documentation/android/" >Google Maps Android API</a>, <a href="https://developers.google.com/maps/documentation/javascript/" >Google Maps JavaScript API</a> and ImageOverlays to place geodata, such as weather alerts, hurricanes, and storm tracks, and weather tiles, such as radar maps and clouds, on top of Google Maps.<br />
<br />
Radar maps are one of the app’s main features, and we work hard to get them right. We get radar imagery from multiple sources and produce raster images from them. Then we take hundreds of the images and animate them in a frame-based animation sequence. The Google Maps Android API gives us overlays to place the animation on top of maps, and also lets us add additional objects such as pins and polygons to visualize lightning strikes or a storm’s direction. You can see an example below.<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-pxlGkjQ5U68/Va1KO5pv93I/AAAAAAAAAbg/Q3IpbuR3vNw/s1600/Weather-Channel-7-13update.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="http://3.bp.blogspot.com/-pxlGkjQ5U68/Va1KO5pv93I/AAAAAAAAAbg/Q3IpbuR3vNw/s640/Weather-Channel-7-13update.gif" width="338" /></a></div>
<br />
The more local weather reporting is, the more accurate it is; a thunderstorm may skip one neighborhood but hit another. So to improve accuracy and to build a community around our app, we’ve been working to make it more social. People send us information about weather near them, and we use the Google Maps Android API to add a pin to the map for each user-created report. Anyone can tap a pin to see the detailed report. Here’s an example of social weather reporting.<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Arial; font-size: 13.3333333333333px; margin-left: 1em; margin-right: 1em; vertical-align: baseline; white-space: pre-wrap;"><img alt="Social Weather Reports_The Weather Channel App for Android_framed.png" height="640" src="https://lh4.googleusercontent.com/mlfiDZr5S-HzQtGANSMbRmCwFmJ__7g6wL4Y3Q9XyNShkJI9P9W1CxDMC51AgynymsYxCnMy3vbK2NQ0S-O1XXSPIZ7X4fIUQC893_8EdPkTBZ-JJVsF4D0IaB169pfBcqBbwvk" style="-webkit-transform: rotate(0rad); border: none; transform: rotate(0rad);" width="378" /></span></div>
<span id="docs-internal-guid-5f25ff13-8883-263d-890a-c0034578fda9"></span><br />
With more than 68 million downloads, the app has been a tremendous success. We get 2 billion requests for radar maps every year. There’s an old saying that everyone talks about the weather but no one does anything about it. We beg to disagree. With the Google Maps APIs we’re giving people detailed, useful, live information about the weather, and we believe that’s doing quite a bit.<br />
<br />
As part of the Code the Road series we hosted the 24-hour hackathon event, “<a href="http://www.google.com/url?q=http%3A%2F%2Fgooglegeodevelopers.blogspot.com%2F2015%2F07%2Fcode-road-storm-road-hackathon-with.html&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGyrhDW5QpoY_LKf9J20ilGMkvgEA" >Storm the Road: Hack for Safety with The Weather Channel and Google Maps</a>”, on June 23. The event gave developers an opportunity to come together to create a new app or feature for mobile or web that helps keep the public safe and informed.]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-maps/the-weather-channel-brings-real-time-weather-updates-to-users-with-google-maps-apis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
	</channel>
</rss>
