<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>BlackBerry Developer Blog &#187; maps</title>
	<atom:link href="http://devblog.blackberry.com/tag/maps/feed/" rel="self" type="application/rss+xml" />
	<link>http://devblog.blackberry.com</link>
	<description></description>
	<lastBuildDate>Wed, 19 Jun 2013 18:00:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='devblog.blackberry.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/9ef0a66c09615fa946c4179662398878?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>BlackBerry Developer Blog &#187; maps</title>
		<link>http://devblog.blackberry.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://devblog.blackberry.com/osd.xml" title="BlackBerry Developer Blog" />
	<atom:link rel='hub' href='http://devblog.blackberry.com/?pushpress=hub'/>
		<item>
		<title>How to replace Google Maps with OpenStreet Maps in your BlackBerry 10 Android App</title>
		<link>http://devblog.blackberry.com/2013/03/android-map-blackberry-10/</link>
		<comments>http://devblog.blackberry.com/2013/03/android-map-blackberry-10/#comments</comments>
		<pubDate>Wed, 13 Mar 2013 16:33:10 +0000</pubDate>
		<dc:creator>Luca Filigheddu</dc:creator>
				<category><![CDATA[Android Development]]></category>
		<category><![CDATA[analytics]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[Android Runtime]]></category>
		<category><![CDATA[maps]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[realtime]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=13736</guid>
		<description><![CDATA[On our developer website, we provide a seamless solution consisting of replacing the Google Maps library for Android with a web view integrating the web version of Google Maps. More information can be found by following this link. That said, a fellow Italian developer (the maker of Prezzi Benzina), just sent me detailed information on [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=13736&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<div id="attachment_14140" class="wp-caption aligncenter" style="width: 413px"><a href="http://rimdevblog.files.wordpress.com/2013/03/gps-is-wrong.jpg"><img class="size-full wp-image-14140" alt="TITLE_IMAGE" src="http://rimdevblog.files.wordpress.com/2013/03/gps-is-wrong-e1363192251868.jpg?w=403&#038;h=336" width="403" height="336" /></a><p class="wp-caption-text">Image from <a href="http://failblog.cheezburger.com/" target="_blank"><br />
http://failblog.cheezburger.com/<br />
</a></p></div>
<p>On our developer website, we provide a seamless solution consisting of replacing the Google Maps library for Android with a web view integrating the web version of Google Maps. More information can be found by following <a href="http://developer.blackberry.com/android/apisupport/apisupport_mapping_support.html" target="_new">this link</a>.</p>
<p>That said, a fellow Italian developer (the maker of <a href="http://www.prezzibenzina.it/" target="_blank">Prezzi Benzina</a>), just sent me detailed information on how they easily replaced Google Maps with <a href="http://www.openstreetmap.org/" target="_new">Open Street Maps</a>, a free worldwide map providing open data under the ODBL (<a href="http://opendatacommons.org/licenses/odbl/" target="_new">Open Data Commons Open Database License</a>).</p>
<p>The result? Outstanding! And since it is a very common issue faced by many Android developers making use of Google Maps in their Android applications, we wanted to share in this blog how they did it.</p>
<p><span id="more-13736"></span></p>
<h3><strong>Download</strong></h3>
<p>First of all, you must download the Open Street Maps library from the following link: <a href="https://code.google.com/p/osmdroid/" target="_new"><br />
https://code.google.com/p/osmdroid/<br />
</a></p>
<p>You can either download the <strong>jar</strong> ready to use <a href="https://code.google.com/p/osmdroid/downloads/detail?name=osmdroid-android-3.0.8.jar&amp;can=2&amp;q=" target="_new">osmdroid-android-3.0.8.jar</a> or download the source code and compile it (<span style="text-decoration:underline;">recommended</span>).</p>
<h3><strong>Step 1: Layout Change</strong></h3>
<p>Pretty easy. You code goes from</p>
<pre>&lt;com.google.android.maps.MapView
        android:id="@+id/mapview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:apiKey="@+string/mapviewkey"
        android:clickable="true" /&gt;</pre>
<p><strong>to</strong></p>
<pre>&lt;org.osmdroid.views.MapView
        android:id="@+id/mapview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" /&gt;</pre>
<p>Unlike Google Maps, no key is needed for OSM.</p>
<p><strong>Step 2: Modify Import</strong></p>
<p>Most class names remain the same, so it’s very straight forward..</p>
<p>Your code goes from:</p>
<pre>import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;</pre>
<p><strong>to</strong></p>
<pre>import org.osmdroid.util.GeoPoint;
import org.osmdroid.views.MapController;
import org.osmdroid.views.MapView;</pre>
<p>In addition, you might want to add the following:</p>
<pre>import org.osmdroid.views.overlay.ItemizedIconOverlay;
import org.osmdroid.views.overlay.ItemizedIconOverlay.OnItemGestureListener;
import org.osmdroid.views.overlay.OverlayItem;
import org.osmdroid.views.overlay.OverlayManager;
import org.osmdroid.views.overlay.mylocation.GpsMyLocationProvider;
import org.osmdroid.views.overlay.mylocation.MyLocationNewOverlay;</pre>
<p><strong>WARNING: resources</strong></p>
<p>The default class for resources is: DefaultResourceProxyImpl. It handles English only, so you probably have to create your own with the proper translations.</p>
<pre>    ResourceProxyImpl resProxyImp = new ResourceProxyImpl(this);</pre>
<h3><strong>Step 3: Map Customization</strong></h3>
<p>From</p>
<pre>mapView = (MapView) findViewById(R.id.mapview);
mapView.setBuiltInZoomControls(true);
mMyLocationOverlay = new MyLocationOverlay(this, mapView);
mapView.getOverlays().add(mMyLocationOverlay);</pre>
<p><strong>to</strong></p>
<pre>mapView = (MapView) findViewById(R.id.mapview);
mapView.setUseSafeCanvas(false);
//enable zoom controls
mapView.setBuiltInZoomControls(true);

//enable multitouch
mapView.setMultiTouchControls(true);
//GpsMyLocationProvider can be replaced by your own class. It provides the position information through GPS or Cell towers.
GpsMyLocationProvider imlp = new GpsMyLocationProvider(this.getBaseContext());
//minimum distance for update
imlp.setLocationUpdateMinDistance(1000);
//minimum time for update
imlp.setLocationUpdateMinTime(60000);       
mMyLocationOverlay = new MyLocationNewOverlay(this.getBaseContext(),imlp , mapView, resProxyImp);
mMyLocationOverlay.setUseSafeCanvas(false);
mMyLocationOverlay.setDrawAccuracyEnabled(true);

mapView.getOverlays().add(mMyLocationOverlay);</pre>
<h3><strong>Step 4: Add Marker</strong></h3>
<p>In OSMDroid there are some classes ready to use. The best is ItemizedIconOverlay.</p>
<p>Create an overlay and add it to the map:</p>
<pre>ItemizedIconOverlay markersOverlay = new ItemizedIconOverlay(new LinkedList(), myMarker, null, resProxyImp);
mapView.getOverlays().add(markersOverlay);
Add markers
OverlayItem ovm = new OverlayItem("titolo", "descrizione", new GeoPoint(s.LatitudeE6(), s.LongitudeE6()));
ovm.setMarker(myMarker);
markersOverlay.addItem(ovm);</pre>
<p>Of course, this is just the basic part of the story. There is much more available on OSMDroid &#8211; feel free to explore and bring your Android app to BlackBerry 10 easily!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/13736/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/13736/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=13736&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2013/03/android-map-blackberry-10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d5f08858996f1a3f396417883f8d8a70?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">lfiligheddu</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2013/03/gps-is-wrong-e1363192251868.jpg" medium="image">
			<media:title type="html">TITLE_IMAGE</media:title>
		</media:content>
	</item>
		<item>
		<title>Maps. They Don’t Love You Like I Love You.</title>
		<link>http://devblog.blackberry.com/2012/12/blackberry-webworks-maps/</link>
		<comments>http://devblog.blackberry.com/2012/12/blackberry-webworks-maps/#comments</comments>
		<pubDate>Tue, 04 Dec 2012 15:17:42 +0000</pubDate>
		<dc:creator>chadtatro</dc:creator>
				<category><![CDATA[How-to]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[WebWorks]]></category>
		<category><![CDATA[applications]]></category>
		<category><![CDATA[apps]]></category>
		<category><![CDATA[Bing Maps]]></category>
		<category><![CDATA[BlackBerry 10]]></category>
		<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[Leaflet]]></category>
		<category><![CDATA[maps]]></category>
		<category><![CDATA[OpenLayers]]></category>
		<category><![CDATA[services]]></category>
		<category><![CDATA[webworks]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=12521</guid>
		<description><![CDATA[Forget everything you know about working with maps and BlackBerry WebWorks. Mapping just got real, real easy! We heard you ask for an easy way to integrate mapping services with your BlackBerry WebWorks applications, and today I’m happy to announce that on BlackBerry 10, the process has become much simpler. We&#8217;ve put together a straight-forward sample [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=12521&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-12522" alt="TITLE_IMAGE" src="http://rimdevblog.files.wordpress.com/2012/12/webworks-maps.jpg?w=600&#038;h=364" height="364" width="600" /></p>
<p>Forget everything you know about working with maps and BlackBerry WebWorks. Mapping just got real, real easy!</p>
<p>We heard you ask for an easy way to integrate mapping services with your BlackBerry WebWorks applications, and today I’m happy to announce that on BlackBerry 10, the process has become much simpler.</p>
<p>We&#8217;ve put together a straight-forward sample application that will show you how to integrate with a few of the services out there:  Google Maps, Bing, Leaflet, and OpenLayers.</p>
<p>If you&#8217;ve been following the progression of the BlackBerry WebWorks framework, you&#8217;ve probably noticed an awesome amount of transparency. Open web standards are lovingly embraced and adopted here at RIM. Even the framework itself is staged publicly on GitHub.  Continuing this theme of openness and following web standards, the maps samples we&#8217;ve released are not platform specific.  Whether you’re writing an exclusive BlackBerry app, or planning on targeting multiple platforms using Cordova (previously known as PhoneGap), these samples are most definitely for you!</p>
<p><span id="more-12521"></span></p>
<p>For each service, you’ll be able to learn how to:</p>
<p>-          Setup a mapping service to use to in your app</p>
<p>-          Find the users location with HTML5 Geolocation</p>
<p>-          Perform a search for nearby points of interest</p>
<p>-          Display push-pins on the map, showing the search results.</p>
<p>The goal of this sample is to show you how you can quickly integrate maps into your app and have it perform great in WebWorks for BlackBerry 10.</p>
<p>When it comes down to picking which service is right for your app, it’s completely up to you.  One of my teammates, Jim Ing, wrote a really in-depth article on maps, comparing services and much more.  I strongly recommend checking it out “<a href="http://devblog.blackberry.com/2012/05/lightweight-maps-for-mobile-part-1/" target="_blank">Lightweight Maps For Mobile</a>”.</p>
<p><b>Check out the sample, in action!</b></p>
<span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='640' height='390' src='http://www.youtube.com/embed/lSn3rex7PCI?version=3&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' frameborder='0'></iframe></span>
<p><b>Download the source code.</b></p>
<p>Ready to add some maps to your app? Download the source code from <a href="https://github.com/blackberry/BB10-WebWorks-Samples/tree/master/Maps" target="_blank">our GitHub repository</a>!</p>
<p><b>Calling all Native developers!</b></p>
<p>Have you been yearning to contribute to the BlackBerry 10 cause but weren’t sure how?  Why not take this WebWorks sample, and build a Native version?!  If you’re interested, get in touch with Shadid Haque (<a href="http://twitter.com/ShadidHaque" target="_blank">@ShadidHaque</a>) on Twitter.</p>
<p>If you&#8217;ve got a success story, have a question, or just want to chat about apps, hit me up on Twitter <a href="http://www.twitter.com/chadtatro" target="_blank">@chadtatro</a>!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/12521/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/12521/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=12521&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2012/12/blackberry-webworks-maps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0fb86e7b2b71616806266b535686102c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ctetreault1980</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2012/12/webworks-maps.jpg" medium="image">
			<media:title type="html">TITLE_IMAGE</media:title>
		</media:content>
	</item>
		<item>
		<title>Lightweight Maps for Mobile, Part 1: Introduction to Map APIs and Libraries</title>
		<link>http://devblog.blackberry.com/2012/05/lightweight-maps-for-mobile-part-1/</link>
		<comments>http://devblog.blackberry.com/2012/05/lightweight-maps-for-mobile-part-1/#comments</comments>
		<pubDate>Tue, 08 May 2012 13:18:17 +0000</pubDate>
		<dc:creator>Jim Ing</dc:creator>
				<category><![CDATA[How-to]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[apis]]></category>
		<category><![CDATA[Bing]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Libraries]]></category>
		<category><![CDATA[MapQuest]]></category>
		<category><![CDATA[maps]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[mobile web apps]]></category>
		<category><![CDATA[tile naming conventions]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=9328</guid>
		<description><![CDATA[Discussing the creation of lightweight maps for mobile web apps.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=9328&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>When it comes to building interactive maps for desktop web, most of us are quite comfortable using APIs like Google Maps or Bing Maps. But when we need to port or build something for mobile, it often feels like we&#8217;re crumpling a clean sheet of paper into a paper ball. Certainly, dealing with a smaller screen size, slower processor, and less memory can feel like a frustrating step backwards. But if you consider that mobile devices have touch screens, cameras, microphones, accelerometers, wireless and GPS capabilities on top of being portable, mobile devices are in a way better place than desktop PCs. So if we take the time to understand their limitations and features, we can build lightweight applications that are more like origami — compact, elegant, and functional — instead of like a crumpled paper ball that you&#8217;re ready to throw in the trash can.</p>
<table style="border:1px solid #DDD;border-radius:10px;">
<tbody>
<tr>
<td style="padding:10px;text-align:center;font-weight:bold;">Desktop web development is like this&#8230;</td>
<td style="padding:10px;text-align:center;font-weight:bold;">Mobile web can feel like this&#8230;</td>
<td style="padding:10px;text-align:center;font-weight:bold;">But mobile should and can be like this&#8230;</td>
</tr>
<tr>
<td style="padding:10px;text-align:center;"><a href="http://rimdevblog.files.wordpress.com/2012/05/sheet_sm.png"><img class="aligncenter size-full wp-image-9341" title="sheet_sm" src="http://rimdevblog.files.wordpress.com/2012/05/sheet_sm.png?w=140&#038;h=151" alt="" width="140" height="151" /></a></td>
<td style="padding:10px;text-align:center;"><a href="http://rimdevblog.files.wordpress.com/2012/05/crumpled_sm.png"><img class="aligncenter size-full wp-image-9342" title="crumpled_sm" src="http://rimdevblog.files.wordpress.com/2012/05/crumpled_sm.png?w=90&#038;h=90" alt="" width="90" height="90" /></a></td>
<td style="padding:10px;text-align:center;"><a href="http://rimdevblog.files.wordpress.com/2012/05/origami_sm.png"><img class="aligncenter size-full wp-image-9343" title="origami_sm" src="http://rimdevblog.files.wordpress.com/2012/05/origami_sm.png?w=140&#038;h=80" alt="" width="140" height="80" /></a></td>
</tr>
<tr>
<td style="padding:10px;text-align:center;">fairly standard</td>
<td style="padding:10px;text-align:center;">frustrating</td>
<td style="padding:10px;text-align:center;">compact, elegant, and functional</td>
</tr>
</tbody>
</table>
<p><span id="more-9328"></span></p>
<p>So where do we start? Well, when it comes to mobile web apps, file and transfer size matters — the smaller, the better. So the first thing I wanted to do was survey the landscape and compare the size of some of the different APIs that are available. (If I missed some that are lightweight, please let me know.) Although <a href="http://maps.google.com/" target="_blank">Google Maps</a> is the most popular API out there (and deservedly so), it&#8217;s JavaScript API and tile images are quite large. In my tests below, I created basic map pages for a 1024×768 screen using each of the APIs, and I found that Google Maps transfers about <span style="background-color:#b94a48;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">950 KB</span> of data! This can be a problem for smartphones since they have limited memory. Besides causing an application to crash, a memory-intensive app can also chew up precious kilobytes from a user&#8217;s data plan, and it can drain their battery faster than they want. Thankfully, we have some choices&#8230;</p>
<table style="border:1px solid #DDD;border-radius:10px;">
<tbody>
<tr style="background-color:#000;color:#fff;">
<td style="padding:10px;text-align:center;">API Provider</td>
<td style="padding:10px;text-align:center;">Requests</td>
<td style="padding:10px;text-align:center;">Transferred<br />
(KB)</td>
<td style="padding:10px;text-align:center;">Images<br />
(KB)</td>
<td style="padding:10px;text-align:center;">Scripts<br />
(KB)</td>
</tr>
<tr>
<td style="padding:10px;"><a href="http://msdn.microsoft.com/en-us/library/bb429619.aspx" target="_blank">Bing 6.3</a></td>
<td style="padding:10px;">43</td>
<td style="padding:10px;">596.07</td>
<td style="padding:10px;">358.06 (35)</td>
<td style="padding:10px;">228.92 (4)</td>
</tr>
<tr style="background-color:#eee;">
<td style="padding:10px;"><a href="http://msdn.microsoft.com/en-us/library/ff710049.aspx" target="_blank">Bing 6.3c (Core)</a></td>
<td style="padding:10px;">43</td>
<td style="padding:10px;">423.53</td>
<td style="padding:10px;">371.28 (34)</td>
<td style="padding:10px;">46.72 (5)</td>
</tr>
<tr>
<td style="padding:10px;"><a href="http://msdn.microsoft.com/en-us/library/gg427610.aspx" target="_blank">Bing 7.0</a></td>
<td style="padding:10px;">40</td>
<td style="padding:10px;"><span style="background-color:#468847;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">431.45</span></td>
<td style="padding:10px;"><span style="background-color:#468847;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">339.49 (30)</span></td>
<td style="padding:10px;">86.67 (6)</td>
</tr>
<tr style="background-color:#eee;">
<td style="padding:10px;"><a href="https://developers.google.com/maps/documentation/javascript/tutorial" target="_blank">Google v3</a></td>
<td style="padding:10px;"><span style="background-color:#b94a48;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">66</span></td>
<td style="padding:10px;"><span style="background-color:#b94a48;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">949.65</span></td>
<td style="padding:10px;"><span style="background-color:#b94a48;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">842.93 (54)</span></td>
<td style="padding:10px;"><span style="background-color:#b94a48;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">105.88 (12)</span></td>
</tr>
<tr>
<td style="padding:10px;"><a href="http://leaflet.cloudmade.com/reference.html" target="_blank">Leaflet 0.3.1 (Cloudmade)</a></td>
<td style="padding:10px;"><span style="background-color:#468847;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">30</span></td>
<td style="padding:10px;">603.23</td>
<td style="padding:10px;">513.56 (26)</td>
<td style="padding:10px;">81.52 (1)</td>
</tr>
<tr style="background-color:#eee;">
<td style="padding:10px;"><a href="http://developer.mapquest.com/web/documentation/sdk/javascript/v7.0" target="_blank">MapQuest 7.0</a></td>
<td style="padding:10px;">60</td>
<td style="padding:10px;">900.30</td>
<td style="padding:10px;"><span style="background-color:#b94a48;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">851.82 (53)</span></td>
<td style="padding:10px;"><span style="background-color:#468847;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">46.81 (4)</span></td>
</tr>
<tr>
<td style="padding:10px;"><a href="https://github.com/stamen/modestmaps-js/wiki" target="_blank">Modest Maps 1.0.0 beta (MapBox)</a></td>
<td style="padding:10px;">38</td>
<td style="padding:10px;">901.48</td>
<td style="padding:10px;"><span style="background-color:#b94a48;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">859.96 (35)</span></td>
<td style="padding:10px;"><span style="background-color:#468847;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">39.62 (1)</span></td>
</tr>
<tr style="background-color:#eee;">
<td style="padding:10px;"><a href="http://api.maps.ovi.com/devguide/overview.html" target="_blank">Nokia Ovi</a></td>
<td style="padding:10px;">48</td>
<td style="padding:10px;">523.87</td>
<td style="padding:10px;"><span style="background-color:#468847;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">372.47 (36)</span></td>
<td style="padding:10px;"><span style="background-color:#b94a48;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">150.16 (10)</span></td>
</tr>
<tr>
<td style="padding:10px;"><a href="http://docs.openlayers.org/" target="_blank">OpenLayers 2.11 Mobile</a></td>
<td style="padding:10px;">52</td>
<td style="padding:10px;">595.28</td>
<td style="padding:10px;">508.70 (48)</td>
<td style="padding:10px;">83.35 (1)</td>
</tr>
<tr>
<td style="padding:10px;font-size:8pt;" colspan="5">* Note:</p>
<ul>
<li>These pages were tested at 1024×768.</li>
<li>The KBs for documents and stylesheets were excluded.</li>
</ul>
</td>
</tr>
</tbody>
</table>
<h2>Bing</h2>
<p>As we can see from the results, Microsoft&#8217;s <a href="http://www.bing.com/maps/" target="_blank">Bing Maps</a> is a good alternative that has improved a lot since version 6.3. In version 6.3, Bing quietly introduced a &#8220;core&#8221; version for mobile that stripped out features like drawing lines and polygons. This reduced their JavaScript library from 230 KB to 47 KB! Unfortunately, if you needed some of those features, you were out of luck. But in version 7.0, they cleaned up their API and reduced it to 87 KB (without stripping features). So when you combine that savings with Bing&#8217;s smaller tile size, the Bing test map transferred <span style="background-color:#468847;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">432 KB</span> — that&#8217;s less than half of Google Maps! So I could stop here and just tell you to use Bing instead, but (as you&#8217;ll see) it&#8217;s always good to look at other options&#8230;</p>
<h2>Modest Maps</h2>
<p>Especially if we look at the API with the smallest library, <a href="http://modestmaps.com/" target="_blank">Modest Maps</a>, is a new library that weighs in at only <span style="background-color:#468847;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">40 KB</span>! It was designed to be simple, extensible, and it even works in older browsers like IE7. However, it&#8217;s tile size was the largest at <span style="background-color:#b94a48;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">861 KB</span>!</p>
<h2>MapQuest</h2>
<p><a href="http://www.mapquest.com/" target="_blank">MapQuest</a> is a provider that has been around for a while. Their version 7.0 is the second-smallest library at only <span style="background-color:#468847;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">47 KB</span>, but their tile size is the third largest at <span style="background-color:#b94a48;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">852 KB</span>.</p>
<h2>Nokia Ovi</h2>
<p>So if we&#8217;re also looking for an API that has the smallest tile size, Bing looks like the best choice. <a href="http://maps.nokia.com/" target="_blank">Nokia&#8217;s Ovi</a> tiles are also lightweight at <span style="background-color:#468847;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">373 KB</span>, but their JavaScript library is the largest at <span style="background-color:#b94a48;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">151 KB</span>! It&#8217;s too bad we couldn&#8217;t use Modest Map&#8217;s compact library with Bing&#8217;s lightweight tiles&#8230;or can we? Well, in a way we can&#8230;</p>
<h2>OpenLayers</h2>
<p><a href="http://openlayers.org/" target="_blank">OpenLayers</a>, as the name suggests, is a completely free and Open Source library that allows you to switch between different base layers like Google Maps, Virtual Earth (Bing), Yahoo, etc. From a business model, this approach makes a lot of sense because it means you&#8217;re not tied to one mapping provider and you&#8217;re not as restricted by licensing or forced-API changes. With this approach, you can switch providers without having to completely change your code.</p>
<p>However, OpenLayers supports other maps by creating their own API layer <strong>on top</strong> of the other mapping APIs. So to use OpenLayers with Google or Bing, you&#8217;d have to include their libraries as well! This approach is fine for desktop, but it doesn&#8217;t make sense for mobile. Also, OpenLayers is not as well-documented as some of the others, and its API can be harder to learn. But, if you&#8217;re doing some serious GIS work, this is an API you&#8217;ll want to consider.</p>
<h2>Leaflet</h2>
<p>Fortunately, a new lightweight library called <a href="http://leaflet.cloudmade.com/index.html" target="_blank">Leaflet</a> has been gaining popularity because it is a modern Open Source library that uses HTML5 and CSS3. It was designed from the ground up to work in modern and mobile browsers. Since CSS3 is hardware-accelerated on many mobile devices, visuals like zooming and fading will be much faster than JavaScript-based animations.</p>
<p>Also, Leaflet has an easy-to-use API. So just how easy is it to add a map? First, we include the CSS and JavaScript:</p>
<pre class="prettyprint">                <code class="language-html"> &lt;link rel="stylesheet" href="leaflet.css"&gt; &lt;script type="text/javascript" src="leaflet.js"&gt;&lt;/script&gt; </code></pre>
<p>Then we create a new tile layer specifying the format of the tile URL with some options like maximum zoom level:</p>
<pre class="prettyprint">                <code class="language-js"> var tileUrl = "http://{s}.tile.cloudmade.com/BC9A493B41014CAABB98F0471D759707/997/256/{z}/{x}/{y}.png", tileAttr = "Map data © 2011 OpenStreetMap contributors, Imagery © 2011 CloudMade", tileLayer = new L.TileLayer(tileUrl, { maxZoom: 18, attribution: tileAttr }); </code></pre>
<p>Then we create the map and add the tile layer to it:</p>
<pre class="prettyprint">                <code class="language-js"> var map = new L.Map("map", { center: new L.LatLng(43.6425778753, -79.3870621920), // Toronto zoom: 14 }); map.addLayer(tileLayer); </code></pre>
<p>That&#8217;s it! Like OpenLayers, Leaflet allows you to easily switch between tile providers, but it does this in a much cleaner way — all you have to do is change the tile URL. So you don&#8217;t even need to include a vendor&#8217;s API to use their tiles. Of course, if you do use another tile provider, make sure you contact them about licensing and include the proper attribution.</p>
<pre class="prettyprint">                <code class="language-js"> var tileUrl = "http://{s}.googleapis.com/vt?lyrs=m@174225136&amp;src=apiv3&amp;hl=en-US&amp;x={x}&amp;y={y}&amp;z={z}&amp;s=Galile&amp;style=api%7Csmartmaps", tileAttr = "Map data © 2012 Google", tileLayer = new L.TileLayer(tileUrl, { maxZoom: 22, subdomains: ['mt0', 'mt1'], attribution: tileAttr }); </code></pre>
<p>So with this simple approach, you can change the base tile layer to almost any provider as long as they are using OpenStreetMap&#8217;s <a href="http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames" target="_blank">&#8220;Slippy&#8221;</a> tile naming convention, which is pretty much every provider, except for Bing because Microsoft uses a different <a href="http://msdn.microsoft.com/en-us/library/bb259689.aspx" target="_blank">&#8220;Quadkey&#8221;</a> convention.</p>
<h2>Tile Naming Conventions</h2>
<p>Basically, Slippy uses a straight-forward naming convention that looks like this (&#8220;mustache-style&#8221; URL template):</p>
<pre>http://<span style="background-color:#ff0;">{s}</span>.tile.cloudmade.com/YOUR-API-KEY/997/256/<span style="background-color:#ff0;">{z}</span>/<span style="background-color:#ff0;">{x}</span>/<span style="background-color:#ff0;">{y}</span>.png</pre>
<p>where,</p>
<ul>
<li>{s} = subdomain</li>
<li>{x} = x-coordinate</li>
<li>{y} = y-coordinate</li>
<li>{z} = zoom level</li>
</ul>
<p>Here&#8217;s an example of an actual tile (near the CN Tower):</p>
<pre>http://<span style="background-color:#ff0;">b</span>.tile.cloudmade.com/BC9A493B41014CAABB98F0471D759707/997/256/<span style="background-color:#ff0;">14</span>/<span style="background-color:#ff0;">4578</span>/<span style="background-color:#ff0;">5980</span>.png</pre>
<p>But if we compare Slippy to the Quadkey format, you&#8217;ll notice it&#8217;s different enough that we can&#8217;t easily use it (at least not with Leaflet — we can with Modest Maps):</p>
<pre>
http://ecn.
<span style="background-color:#ff0;">{s}</span>.tiles.virtualearth.net/tiles/<span style="background-color:#ff0;">{style}</span><span style="background-color:#ff0;">{quadkey}</span>?g=914&amp;mkt=en-us&amp;lbl=l1&amp;stl=h&amp;shading=hill&amp;n=z

http://ecn.
<span style="background-color:#ff0;">t0</span>.tiles.virtualearth.net/tiles/<span style="background-color:#ff0;">r</span><span style="background-color:#ff0;">03022313122210</span>?g=914&amp;mkt=en-us&amp;lbl=l1&amp;stl=h&amp;shading=hill&amp;n=z</pre>
<p>because the Quadkey format works like this:</p>
<ul>
<li>At zoom level 1 (of the entire world), there are only 4 tiles (or quadrants) numbered from 0 to 3. At the next zoom level, each tile is sub-divided into &#8220;quads&#8221;, and so on.</li>
<li>So the length of the quadkey represents the number of zoom levels.</li>
<li>The quadkey of any tile starts with the quadkey of its parent tile.</li>
<li>The first letter (which is not really part of the quadkey) specifies the base map style (r = Road, a = Aerial (Satellite), h = Hybrid (Aerial + Labels)</li>
</ul>
<p><a href="http://rimdevblog.files.wordpress.com/2012/05/ic962381.jpg"><img class="aligncenter size-full wp-image-9345" title="IC96238" src="http://rimdevblog.files.wordpress.com/2012/05/ic962381.jpg?w=623&#038;h=365" alt="TITLE_IMAGE" width="623" height="365" /></a></p>
<figure>
<figcaption><a href="http://msdn.microsoft.com/en-us/library/bb259689.aspx" target="_blank">&#8220;Bing Maps Tile System&#8221;</a></figcaption>
</figure>
<p>Although it might be tempting to complain about Microsoft being different, from a database perspective, quadkeys makes indexing and storage really efficient.</p>
<h2>Hybrid Approach</h2>
<p>Hopefully, that gives you a better understanding of tile structures. Do you see the possibilities? This is AWESOME! This means we can easily interchange libraries and tiles to suit our needs. Essentially, we can build our own &#8220;hybrid&#8221; API or &#8220;mashup&#8221; from the best pieces available. So now we can have an API that uses Bing&#8217;s tiles, but is even <strong>lighter</strong> than Bing itself (which was already light to begin with at 432 KB)!</p>
<p>Here are some other combinations that are under 450 KB that you may want to consider:</p>
<table style="border:1px solid #DDD;border-radius:10px;">
<tbody>
<tr style="background-color:#000;color:#fff;">
<td style="padding:10px;text-align:center;">API Provider</td>
<td style="padding:10px;text-align:center;">Requests</td>
<td style="padding:10px;text-align:center;">Transferred<br />
(KB)</td>
<td style="padding:10px;text-align:center;">Images<br />
(KB)</td>
<td style="padding:10px;text-align:center;">Scripts<br />
(KB)</td>
</tr>
<tr>
<td style="padding:10px;">Modest Maps 1.0.0 beta + Bing Tiles</td>
<td style="padding:10px;">38</td>
<td style="padding:10px;"><span style="background-color:#468847;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">380.51</span></td>
<td style="padding:10px;">338.97 (35)</td>
<td style="padding:10px;">39.62 (1)</td>
</tr>
<tr style="background-color:#eee;">
<td style="padding:10px;">Modest Maps 1.0.0 beta + Nokia Tiles</td>
<td style="padding:10px;">38</td>
<td style="padding:10px;"><span style="background-color:#468847;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">412.41</span></td>
<td style="padding:10px;">370.93 (35)</td>
<td style="padding:10px;">39.62 (1)</td>
</tr>
<tr>
<td style="padding:10px;">Leaflet 0.3.1 + Nokia Tiles</td>
<td style="padding:10px;">30</td>
<td style="padding:10px;"><span style="background-color:#468847;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">431.78</span></td>
<td style="padding:10px;">342.09 (26)</td>
<td style="padding:10px;">81.52 (1)</td>
</tr>
</tbody>
</table>
<p>Since we were able to make Bing lighter, I was curious to see if we could do the same with Google, and the result really surprised me! As you may recall, Google Maps transferred <strong>950 KB</strong>, but when I combined Leaflet with Google&#8217;s tiles, it only transferred <strong>498 KB</strong>! That&#8217;s half the size, which is great! But why such a difference?! Well, if we look at the number of requests, it gives us a big clue — Google&#8217;s API is loading <strong>twice</strong> the number of tiles!</p>
<table style="border:1px solid #DDD;border-radius:10px;">
<tbody>
<tr style="background-color:#000;color:#fff;">
<td style="padding:10px;text-align:center;">API Provider</td>
<td style="padding:10px;text-align:center;">Requests</td>
<td style="padding:10px;text-align:center;">Transferred<br />
(KB)</td>
<td style="padding:10px;text-align:center;">Images<br />
(KB)</td>
<td style="padding:10px;text-align:center;">Scripts<br />
(KB)</td>
</tr>
<tr>
<td style="padding:10px;">Google v3</td>
<td style="padding:10px;">66</td>
<td style="padding:10px;">949.65</td>
<td style="padding:10px;">842.93 (54)</td>
<td style="padding:10px;">105.88 (12)</td>
</tr>
<tr style="background-color:#eee;">
<td style="padding:10px;">Leaflet 0.3.1 + Google Tiles</td>
<td style="padding:10px;">30</td>
<td style="padding:10px;">497.71</td>
<td style="padding:10px;">408.01 (26)</td>
<td style="padding:10px;">81.52 (1)</td>
</tr>
<tr>
<td style="padding:10px;"><strong>Difference:</strong></td>
<td style="border-top:2px solid #000;"><span style="background-color:#b94a48;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">36</span></td>
<td style="border-top:2px solid #000;"><span style="background-color:#b94a48;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">451.94</span></td>
<td style="border-top:2px solid #000;"><span style="background-color:#b94a48;color:#fff;font-weight:bold;padding-left:10px;padding-right:10px;border-radius:15px;">434.92</span></td>
<td style="border-top:2px solid #000;">24.36</td>
</tr>
</tbody>
</table>
<p>At first, I thought it might be pre-fetching or &#8220;lazy loading&#8221; tiles for areas outside the bounding box in case a user pans or zooms. But when I inspected the extra tiles, I found it&#8217;s actually loading another set of tiles for the <strong>same area</strong>, which I haven&#8217;t been able to figure out why — the extra tiles don&#8217;t seem to be displayed anywhere. It&#8217;s still a map view tile, but it has slightly different labels. Notice the one on the right has &#8220;Corktown&#8221; and the other one doesn&#8217;t?</p>
<table style="border:1px solid #DDD;border-radius:10px;">
<tbody>
<tr>
<td style="padding:10px;text-align:center;font-weight:bold;">Tile Set 1 (displayed)</td>
<td style="padding:10px;text-align:center;font-weight:bold;">Tile Set 2 (not displayed)</td>
</tr>
<tr>
<td style="padding:10px;font-size:8pt;"><span style="background-color:#ff0;"><a href="http://rimdevblog.files.wordpress.com/2012/05/vt_dvp_gardiner1_circle.png"><img class="aligncenter size-full wp-image-9347" title="vt_dvp_gardiner1_circle" src="http://rimdevblog.files.wordpress.com/2012/05/vt_dvp_gardiner1_circle.png?w=256&#038;h=256" alt="" width="256" height="256" /></a>m@174232040</span>&amp;src=apiv3&amp;hl=en-US&amp;x=4580&amp;y=5979</p>
<p>&amp;z=14</p>
<p>&amp;s=Galileo</p>
<p>&amp;style=api%7Csmartmaps</td>
<td style="padding:10px;font-size:8pt;"><span style="background-color:#ff0;"><a href="http://rimdevblog.files.wordpress.com/2012/05/vt_dvp_gardiner2_circle.png"><img class="aligncenter size-full wp-image-9348" title="vt_dvp_gardiner2_circle" src="http://rimdevblog.files.wordpress.com/2012/05/vt_dvp_gardiner2_circle.png?w=256&#038;h=256" alt="" width="256" height="256" /></a>m@174000000</span>&amp;src=apiv3&amp;hl=en-US&amp;x=4580&amp;y=5979</p>
<p>&amp;z=14</p>
<p>&amp;s=Galileo</p>
<p>&amp;style=api%7Csmartmaps</td>
</tr>
</tbody>
</table>
<p>I&#8217;m sure there&#8217;s a good reason for this, but I&#8217;d be curious if there&#8217;s an option to disable that? Either way, the good news is Google&#8217;s tiles are not as heavy as I first thought so we can use them with Modest Maps or Leaflet to build familiar-looking mapping applications that will be more lightweight especially for mobile.</p>
<p>Besides being able to switch between providers, this hybrid approach has other advantages:</p>
<ol>
<li>For packaged applications like <a href="https://bdsc.webapps.blackberry.com/html5/" target="_blank">BlackBerry® WebWorks™</a>, you can locally include the required API files (JavaScript, CSS, and images) with your application so you don&#8217;t need to fetch them from a remote server. This makes loading an app faster and reduces bandwidth charges.</li>
<li>Another advantage of having local files is you don&#8217;t have to worry as much about a provider forcing an API change that can break your customizations. Although, you can usually reference an older API, sometimes a provider will force an upgrade even if you try to reference an older version.</li>
<li>In the case of Yahoo! Maps, which discontinued its map service in September 2011, a local version means your app can still work. For example, Leaflet provides a layer control so you can select from different base layers.</li>
</ol>
<p>These advantages are important especially for enterprise or mission-critical applications that need to minimize risk and downtime. So in the next post, I&#8217;ll cover some techniques for adding offline capabilities to your map. Hopefully, with this &#8220;best of breed&#8221; approach, you&#8217;ll be ready to build a map-based app that will feel more like a paper airplane than a paper ball.</p>
<div style="text-align:center;"><a href="http://rimdevblog.files.wordpress.com/2012/05/origami_sm1.png"><img class="aligncenter size-full wp-image-9349" title="origami_sm" src="http://rimdevblog.files.wordpress.com/2012/05/origami_sm1.png?w=140&#038;h=80" alt="" width="140" height="80" /></a></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/9328/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/9328/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=9328&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2012/05/lightweight-maps-for-mobile-part-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/01266d01d1ae9a95d889f5143acd2a49?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">myjing</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2012/05/sheet_sm.png" medium="image">
			<media:title type="html">sheet_sm</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2012/05/crumpled_sm.png" medium="image">
			<media:title type="html">crumpled_sm</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2012/05/origami_sm.png" medium="image">
			<media:title type="html">origami_sm</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2012/05/ic962381.jpg" medium="image">
			<media:title type="html">IC96238</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2012/05/vt_dvp_gardiner1_circle.png" medium="image">
			<media:title type="html">vt_dvp_gardiner1_circle</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2012/05/vt_dvp_gardiner2_circle.png" medium="image">
			<media:title type="html">vt_dvp_gardiner2_circle</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2012/05/origami_sm1.png" medium="image">
			<media:title type="html">origami_sm</media:title>
		</media:content>
	</item>
		<item>
		<title>BlackBerry Maps Revamped</title>
		<link>http://devblog.blackberry.com/2010/11/blackberry-maps-revamped/</link>
		<comments>http://devblog.blackberry.com/2010/11/blackberry-maps-revamped/#comments</comments>
		<pubDate>Mon, 22 Nov 2010 22:01:03 +0000</pubDate>
		<dc:creator>Shadid</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Platform Services]]></category>
		<category><![CDATA[blackberry maps]]></category>
		<category><![CDATA[developer groups]]></category>
		<category><![CDATA[developers]]></category>
		<category><![CDATA[maps]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=2723</guid>
		<description><![CDATA[BlackBerry® Maps has been updated with some great new features for BlackBerry developers.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=2723&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-2724" title="BlackBerry Maps" src="http://rimdevblog.files.wordpress.com/2010/11/blackberry-maps-11.jpg?w=600&#038;h=398" alt="" width="600" height="398" /></p>
<p>Hello developers – I have great news! As part of our continuous effort to improve our map client and the data services behind it, we have added some really exciting features to our BlackBerry® Maps offering. Whether your application uses an embedded MapField or simply invokes BlackBerry Maps to render map data, you can start taking advantage of these new features today!</p>
<p>First, the data coverage has been extended by adding 34 new countries, including Australia, Brazil, Argentina, Uruguay, New Zealand, The Philippines and Taiwan. I have no doubt that the addition of these new countries in our database will open up a lot of opportunities for app developers in those regions. The figure above shows the current coverage of the BlackBerry Maps service.</p>
<p><span id="more-2723"></span></p>
<p>After carefully listening to your comments and feedback, we have also spent a significant amount of our efforts to optimize the visual appearance of the maps with a stronger rendering engine as well as with a new color scheme. New POI databases for hospitals, universities/colleges, police stations, train/subway stations, shopping centers, parking, parks and airports were also added wherever available, in order to make the maps as meaningful as possible to the end user. The screenshots below highlight a few of the many visual changes that went in as part of this update.</p>
<p><img class="aligncenter size-full wp-image-2726" title="BlackBerry Maps" src="http://rimdevblog.files.wordpress.com/2010/11/blackberry-maps-21.jpg?w=599&#038;h=264" alt="" width="599" height="264" /></p>
<p><img class="aligncenter size-full wp-image-2728" src="http://rimdevblog.files.wordpress.com/2010/11/blackberry-maps-31.jpg?w=392&#038;h=80" alt="" width="392" height="80" /></p>
<p><img class="aligncenter size-full wp-image-2729" title="BlackBerry Maps" src="http://rimdevblog.files.wordpress.com/2010/11/blackberry-maps-41.jpg?w=599&#038;h=264" alt="" width="599" height="264" /></p>
<p>Please note that, in order to enable the extended coverage and visual optimization, you will first need to update your device as instructed below:</p>
<p><strong><span style="text-decoration:underline;">Updating BlackBerry Maps with BlackBerry® Device Software 4.7 or Lower</span></strong></p>
<ol>
<li>From the home screen, go to <strong>Maps</strong>.</li>
<li>Press the [Menu] key and select <strong>Options</strong>.</li>
<li>Press the [Menu] key and select <strong>Clear Cache</strong>.</li>
<li>Select <strong>Delete</strong> when prompted to delete cached entries.</li>
</ol>
<p><strong><span style="text-decoration:underline;">Updating BlackBerry Maps with BlackBerry Device Software 5.0 before Bundle 1057</span></strong></p>
<p>Update your BlackBerry Device Software to the latest version, available <a href="http://na.blackberry.com/eng/update/" target="_new">here</a>. If you do not wish to update your software, you can follow the instructions below (for the BlackBerry Device Software 5.0 after Bundle 1057) to receive the additional map coverage and new map design. However, the new POI icons will not be available.</p>
<p><strong><span style="text-decoration:underline;">Updating BlackBerry Maps with BlackBerry Device Software 5.0 after Bundle 1057</span></strong></p>
<p>1.	From the home screen, go to <strong>Maps</strong>.</p>
<p><img class="aligncenter size-full wp-image-2730" title="BlackBerry Maps" src="http://rimdevblog.files.wordpress.com/2010/11/blackberry-maps-51.jpg?w=480&#038;h=360" alt="" width="480" height="360" /></p>
<p>2.	Press the [Menu] key and select <strong>Options</strong>.</p>
<p><img class="aligncenter size-full wp-image-2731" title="BlackBerry Maps" src="http://rimdevblog.files.wordpress.com/2010/11/blackberry-maps-61.jpg?w=480&#038;h=360" alt="" width="480" height="360" /></p>
<p>3.	Press the [Menu] key and select <strong>Clear Cache</strong>.</p>
<p><img class="aligncenter size-full wp-image-2732" title="BlackBerry Maps" src="http://rimdevblog.files.wordpress.com/2010/11/blackberry-maps-71.jpg?w=480&#038;h=360" alt="" width="480" height="360" /></p>
<p>4.	Select <strong>Delete</strong> when prompted to delete cached entries.</p>
<p><img class="aligncenter size-full wp-image-2733" title="BlackBerry Maps" src="http://rimdevblog.files.wordpress.com/2010/11/blackberry-maps-81.jpg?w=480&#038;h=360" alt="" width="480" height="360" /></p>
<p><strong><span style="text-decoration:underline;">Updating BlackBerry Maps with BlackBerry Device Software 6.0</span></strong></p>
<p>1.	From the home screen, go to <strong>Maps</strong>.</p>
<p><img class="aligncenter size-full wp-image-2734" title="BlackBerry Maps" src="http://rimdevblog.files.wordpress.com/2010/11/blackberry-maps-91.jpg?w=360&#038;h=480" alt="" width="360" height="480" /></p>
<p>2.	Press the [Menu] key and select <strong>Options</strong>.</p>
<p><img class="aligncenter size-full wp-image-2735" title="BlackBerry Maps" src="http://rimdevblog.files.wordpress.com/2010/11/blackberry-maps-101.jpg?w=360&#038;h=480" alt="" width="360" height="480" /></p>
<p>3.	Press <strong>Global Map Options</strong>.</p>
<p><img class="aligncenter size-full wp-image-2736" title="BlackBerry Maps" src="http://rimdevblog.files.wordpress.com/2010/11/blackberry-maps-112.jpg?w=360&#038;h=480" alt="" width="360" height="480" /></p>
<p>4.	Press the [Menu] key and select <strong>Clear Cache</strong>.</p>
<p><img class="aligncenter size-full wp-image-2727" title="BlackBerry Maps" src="http://rimdevblog.files.wordpress.com/2010/11/blackberry-maps-121.jpg?w=360&#038;h=480" alt="" width="360" height="480" /></p>
<p>While we try our best to support new features on all OS versions, it is important to note that some of these features are not available on legacy OS versions. Please use the table below to determine which features are available for the OS version you have.</p>
<table border="1" cellpadding="5" width="100%">
<tbody>
<tr>
<td width="30%"><strong>Feature</strong></td>
<td width="70%"><strong>BlackBerry Device Software Version</strong></td>
</tr>
</tbody>
</table>
<table border="1" cellpadding="5" width="100%">
<tbody>
<tr>
<td width="30%"></td>
<td><strong>4.2</strong></td>
<td><strong>4.5</strong></td>
<td><strong>4.6</strong></td>
<td><strong>4.6.1</strong></td>
<td><strong>4.7</strong></td>
<td><strong> </strong><strong>5.0</strong><br />
<em>Before Bundle 1057</em></td>
<td><strong> </strong><strong>5.0</strong><br />
<em>After Bundle 1057</em></td>
<td><strong>6.0</strong></td>
</tr>
<tr>
<td width="30%">New map coverage</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td width="30%">New map design</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td width="30%">Parking icons</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td width="30%">Hospital icons</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td width="30%">University/College icons</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td width="30%">Shopping center icons</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td width="30%">Police station icons</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td width="30%">Metro station icons</td>
<td>No</td>
<td>No</td>
<td>Yes</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td width="30%">Train station icons</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td width="30%">City park labels</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td width="30%">National park labels</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td width="30%">Airport icons</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td width="30%">Other landmarks</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>No</td>
<td>Yes</td>
<td>Yes</td>
</tr>
</tbody>
</table>
<p>I am very excited about these new features and am really looking forward to any comments you may have!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/2723/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/2723/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=2723&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2010/11/blackberry-maps-revamped/feed/</wfw:commentRss>
		<slash:comments>30</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/25ee80c29143f159bad70d24df820bc1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">shadidhaque</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2010/11/blackberry-maps-11.jpg" medium="image">
			<media:title type="html">BlackBerry Maps</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2010/11/blackberry-maps-21.jpg" medium="image">
			<media:title type="html">BlackBerry Maps</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2010/11/blackberry-maps-31.jpg" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2010/11/blackberry-maps-41.jpg" medium="image">
			<media:title type="html">BlackBerry Maps</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2010/11/blackberry-maps-51.jpg" medium="image">
			<media:title type="html">BlackBerry Maps</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2010/11/blackberry-maps-61.jpg" medium="image">
			<media:title type="html">BlackBerry Maps</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2010/11/blackberry-maps-71.jpg" medium="image">
			<media:title type="html">BlackBerry Maps</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2010/11/blackberry-maps-81.jpg" medium="image">
			<media:title type="html">BlackBerry Maps</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2010/11/blackberry-maps-91.jpg" medium="image">
			<media:title type="html">BlackBerry Maps</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2010/11/blackberry-maps-101.jpg" medium="image">
			<media:title type="html">BlackBerry Maps</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2010/11/blackberry-maps-112.jpg" medium="image">
			<media:title type="html">BlackBerry Maps</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2010/11/blackberry-maps-121.jpg" medium="image">
			<media:title type="html">BlackBerry Maps</media:title>
		</media:content>
	</item>
		<item>
		<title>Locate Service Update Provides GPS-Free Location Queries</title>
		<link>http://devblog.blackberry.com/2010/07/blackberry-geolocation-service/</link>
		<comments>http://devblog.blackberry.com/2010/07/blackberry-geolocation-service/#comments</comments>
		<pubDate>Mon, 19 Jul 2010 15:30:43 +0000</pubDate>
		<dc:creator>Shadid</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Platform Services]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[developers]]></category>
		<category><![CDATA[geolocation]]></category>
		<category><![CDATA[LBS]]></category>
		<category><![CDATA[locate service]]></category>
		<category><![CDATA[maps]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=1900</guid>
		<description><![CDATA[Introducing Geolocation service for BlackBerry® developers. Part of the Locate Service.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=1900&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><img src="http://rimdevblog.files.wordpress.com/2010/07/locations.jpg?w=320&#038;h=240" alt="" title="Geolocation service" width="320" height="240" class="aligncenter size-full wp-image-1898" /></p>
<p>Ever wondered how to query for location without being dependent on GPS?  Well, look no more: we’ve introduced a brand-new feature that is capable of getting you a location fix in seconds using nearby cell tower information. The new Geolocation service is now part of the <a href="http://na.blackberry.com/eng/developers/platform/locateservice/">Locate Service</a>. The best part? It’s free to developers!</p>
<p>Users can be indoors with no GPS coverage, but your app will still be able to guide them to restaurants or points of interest (POI) around them. Although the accuracy of the fixes obtained from the Geolocation service may not always be as high as with GPS, it has use cases for apps that require highly accurate GPS fixes as well as apps that do not. Apps that require high accuracy can use this service to quickly show the user an approximate location while it waits for a more accurate location fix using GPS. This can offer a huge user experience improvement. For applications that do not require high accuracy, this service can be leveraged as a simple yet effective mechanism to provide location information.</p>
<p><span id="more-1900"></span></p>
<p>To take advantage of the Geolocation service, you simply need to ask for a location fix via your LocationProvider or BlackBerryLocationProvider using the appropriate Criteria, or BlackBerryCriteria for the Cellsite mode. It is important to note that this service requires <a href="http://na.blackberry.com/eng/developers/platform/">BlackBerry® Application Platform v5.0</a> or higher and users must be signed up with a carrier that has enabled these capabilities. </p>
<p>You can also consider combining the Locate Service with the BlackBerry® Maps Service to offer a variety of features from navigation directions to POIs. The BlackBerry Maps Service complements the Locate Service by providing map displays that can be invoked or embedded to indicate a user’s location. Please refer to net.rim.device.api.lbs.MapField class and the net.rim.blackberry.api.invoke package for details on APIs related to Map Service.</p>
<p>In BlackBerry Device Software, we’ve also enhanced the existing Geocoding functionality provided by the Locate Service. Using the net.rim.device.api.lbs.Locator class, you can now ask for reverse geocoding in addition to the geocoding functionality we already offered.  Reverse geocoding is capable of converting latitude and longitude to a meaningful address.  One of my favorite features of the new reverse geocoding functionality is that you can ask for contextual location information at a variety of levels from the street address to the state depending on the granularity required by your application. As a developer, you are able to take advantage of this service with a single method call while we do all the heavy lifting behind the scene.</p>
<p>These new features and capabilities are a great extension of all the work we did within the last year on our location-based services environment. In BlackBerry Application Platform v5.0, we introduced an extension API to the standard Location API (JSR 179). This extension API is much easier to work with and creates new opportunities for all application developers to leverage location within their apps. Please refer to the net.rim.device.api.gps package in the API documentation. </p>
<p>In addition to the extension API, we introduced a set of flexible Location Picker UI components that integrate seamlessly with the BlackBerry Maps and Contacts applications as well as with the GPS capabilities of the device. Check out the net.rim.device.api.lbs.picker package in the API documentation for more information.</p>
<p>The combination of the Locate and Maps Services opens the door to contextualized and location-aware applications that go above and beyond what is available today. We are very excited to hear your feedback on these new capabilities and how you plan on using them within your application.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/1900/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/1900/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=1900&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2010/07/blackberry-geolocation-service/feed/</wfw:commentRss>
		<slash:comments>87</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/25ee80c29143f159bad70d24df820bc1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">shadidhaque</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2010/07/locations.jpg" medium="image">
			<media:title type="html">Geolocation service</media:title>
		</media:content>
	</item>
	</channel>
</rss>
