- The Best Turn-By-Turn Navigation App for Android
- Google Maps for Android
- Features
- Where It Excels
- Apple AirPods 3
- Where It Falls Short
- The Competition
- Google Maps Intents for Android
- Overview
- Intent requests
- Kotlin
- Kotlin
- Kotlin
- URL encoded query strings
- Kotlin
- Displaying a map
- Kotlin
- Searching for a location
- Categorical search
- Kotlin
- Kotlin
- Location search
- Kotlin
- Kotlin
- Kotlin
- Kotlin
- Kotlin
- Launching turn-by-turn navigation
- Kotlin
- Kotlin
- Kotlin
- Kotlin
- Displaying a Street View panorama
- Kotlin
The Best Turn-By-Turn Navigation App for Android
Android users have the benefit of having phones that have turn-by-turn navigation and stellar maps right out of the box. Turn on your phone, and you instantly have a tool to get you anywhere in the world you need to go. There are plenty of alternatives for Android, and some of them are really good—but thanks to regular updates and tons of new features, Google deserves the crown for the best turn-by-turn navigation app available. It’s free, functional, and feature-packed.
Google Maps for Android
Platform: Android
Price: Free
Download Page
Features
- Provides voice-guided turn-by-turn driving directions, with multiple voice prompts before turns and merges
- Automatically recalculates route when you make wrong turns or change course
- Offers multiple routes to avoid traffic, highways, or tolls, and can automatically re-route on command or based on traffic conditions.
- Uses Android’s built-in voice search, so you can speak destinations to search them quickly
- Automatically saves frequently visited destinations and locations so you can easily navigate to them again, allows you to star locations you find in Google Local for quick reference, and has built-in support for Google Contacts, so the addresses of friends, family, or colleagues is a swipe away
- Offers live traffic reports on-screen, along with a dynamic ETA to your destination based on traffic conditions along your route
- Uses Google Street View to display your destination when you arrive
- Uses Google Local for detailed information on destinations and places near your route or current position, making it easy to detour for gas, food, repairs, or any other reason that might take you off of your current route.
- Supports Google Places and Zagat ratings and reviews for hours, reviews, contact information, and photos of destinations on or along your route, or at your destination
- Switches between day and night map view for easy reading
- Offers intelligent re-routing when you make a mistake or leave your current route
- Offers walking and public transit directions in addition to driving directions
Where It Excels
If you have an Android phone, you’re already familiar with Google Maps. It’s a near-flawless turn-by-turn navigation application, and if you’re running Android Ice Cream Sandwich (4.0) or Jelly Bean (4.1 or 4.2), the experience is even better. The voice is much more human, street and highway pronunciations are more accurate, and GPS-dependent tasks like location fixing and re-routing are much faster and more forgiving. Google Navigation is baked into Google Maps, a core application in Android, so you don’t have to download it on its own, and it works out of the box. Sign in to your Google account to get access to your contacts and any starred or favorite destinations you may have saved in Google Local or Places.
Google’s dynamic ETA and live traffic data on along your route are killer features in Navigation, especially for commuters who know all too well that whether they get off at the next exit will mean the difference between being home in time for dinner or slogging through hours of traffic trying to get around an accident already on the shoulder of the freeway. One tap brings up multiple routes if you want to switch among them, and Google will route you along the lowest-traffic, fastest route automatically if you let it. If you’re running low on change, you can tell it to avoid tolls, or steer clear of highways if you prefer.
Many of the quirks with Google Navigation we used to have are also gone, including old problems with its traffic data , and that’s a point we have to give to Google: They’re hard at work with Google Maps, constantly updating it and adding new features and closer integration with other useful Google services, like Google Now, your Google Contacts, and Local. We can only assume that the app is going to continue to improve, given the frequency of meaningful updates from Google.
Apple AirPods 3
A whole new look
Where It Falls Short
It’s difficult to find things not to like about Google Maps Navigation in Android. It’s functional, the voice prompts are on point, and it’s free (and already on your phone.) If there’s anything we would quibble about, it’s that some of the street and highway pronunciations could still use some work, and some of the voice prompts could come a little sooner—but those are common problems that any turn-by-turn GPS service face. It would be nice to be able to easily add a destination mid-trip, or «pause» navigation and pick up your route again later because you’re making a detour to grab a bite, but again, not many other GPS apps offer this, so it’s not Google’s fault they’re not there.
One thing we do wish Google Maps would do is allow Navigation to continue even if you’re dragged the focus of the map away from your current position. This way your passenger or another user could look further along the route to see if or where traffic conditions change, or where the next turn is, without dropping Navigation entirely. As it is, when you change focus, you’re now looking at Maps, not Navigation, and you have to tap the blue arrow on-screen to resume your course.
The Competition
Waze (Free) was our previous pick for the best turn-by-turn nav app for Android, and make no mistake, we still love it. We think it’s social features add a lot to the driving experience, whether you’re driving around trying to pick up holiday candies, earn enough points to get a newtitle, or compete with other Waze drivers. Perhaps more importantly, Waze’s social element allows its users to report construction, accidents, police activity, speed traps, and other annoyances well in advance of you actually driving into them, which is a huge benefit whether you’re commuting or you’re on a road trip.
Waze’s crowdsourced features earned it top spot up to this point, and it’s still a tough decision to bring it down to second best. It’s easy for users to report issues on the road so others (like you) are alerted to them when you approach, and the service collects information from multiple traffic sources so you have something to go on even if your road isn’t heavily traveled. We still like the fact that Waze automatically re-plots your course if your phone crashes, the app crashes, or something else happens to interrupt navigation—something Google Maps doesn’t do. Similarly, Waze makes it easy to browse your route or look around the map when you need to, and always returns to a vehicle-centric view when you’re finished—no taps required. Still, Waze has suffered from a lack of regular feature updates lately, and the latest versions of the app feel a little buggy and crashy. Some of you have reported that Waze just never seems to get your directions right, and while crowdsourced maps are great if you have all day to drive around, you’d prefer the fastest, most efficient route over wondering «where is this taking me?» Still, it’s an amazing app, it learns your preferred routes for you, and if the social features sounds interesting to you, you’ll enjoy using Waze. I keep it installed, even if it’s not necessarily my first go-to nav app.
Navigon for Android ($40 + $14 in-app purchase for live traffic) Navigon (by Garmin) is another option, and while it’s expensive and the app forces you to download your maps ahead of time (a process we suggest you do over Wi-Fi, as the files are pretty big) you do get the benefit of a «real» GPS app, where all of your maps are stored on your phone and you don’t need a constant data connection to help you find your way. If your data connection drops, or you travel through areas with little to no signal, Navigon keeps going like nothing happened. Plus, the app is snappy, the interface is well designed for in-car use, and the voice prompts are clear and loud. That said, it’s really pricey by comparison, and you have to pay again in-app to get live traffic, when other apps offer it for free. Plus, reviewers at Google Play point out that «Lifetime» map subscriptions are anything but, and you’ll quickly find yourself paying again and again for new updated maps. Navigon has a long and storied history, and it’s a great option if you need offline maps (although Google Nav also allows you to download map areas), but its really hard to get around the price.
Sygic ($42 for North American license, $32 for US only, Price varies by location, Free trial available) is another solid turn-by-turn navigation option for lovers of offline maps. Sygic leverages TomTom’s maps for driving directions, and has its signature big, bright, colorful GPS maps and on-screen UI. The screens are easy to understand, upcoming turns are shown clearly, and the full license comes with real-time traffic. The app allows you to add your own points-of-interest (POI), speaks street names and lane-change warnings, and even integrates Google search so you can search along your route. Sygic is packed with all of the features that make a GPS device useful, which means you don’t have to leave the app to search for businesses on the way, find a place to eat, see traffic conditions, and so on. It’s a great app, and many of its users are happy with it, but again, it’s difficult to recommend paying so much money for the North American maps when the 7-day free trial is over when other apps offer the same core features for free, even if many of the premium ones are missing. Plus, if you plan to travel anywhere outside of the area of the map package you paid for, get ready to buy another map pack.
MapQuest Mobile (Free) has come a good ways since it was first introduced. It used to be buggy, but it’s much smoother now, and its directions are solid. Still, the bit problem with MapQuest Mobile is the same problem that plagues MapQuest in general: It’s turn-by-turn directions still aren’t that great. I often found MapQuest trying to route me through communities and cul-de-sacs when I knew there was a faster route on a larger street just up ahead, and toggling to OSM (a nice feature), didn’t seem to help. It did re-route me if I missed a turn, and it does offer some traffic conditions, updated every five minutes from public sources, but unless you’re looking for some of the sponsored hotels and restaurants that pop up in the app’s search results, finding locations can be tricky and you may have to leave the app first. Still, MapQuest Mobile has some useful features, including voice search and support, a map toolbar that lets you search along your route without interrupting navigation, live traffic flow and incident reports, and more. If you really dislike Google or Google Maps for some reason, give it a try. It’s one of the few well-polished navigation apps centered around OpenStreetMaps, which is nice, but it still needs some work where it counts.
Источник
Google Maps Intents for Android
The Google Maps app for Android exposes several intents that you can use to launch Google Maps in display, search, navigation, or Street View modes. If you want to embed a map in your app, please refer to the Google Maps Android API Getting Started Guide.
Note: Maps URLs let you build a universal, cross-platform URL to launch Google Maps and perform searches, get directions, display map views, and display panoramic images. It is recommended that you use the cross-platform Maps URLs to launch Google Maps, since these universal URLs allow for broader handling of the maps requests no matter which platform the user is on. You should only use the Android-specific Maps Intents for features that may only be functional on a mobile platform (for example, turn-by-turn navigation).
Overview
Intents let you start an activity in another app by describing a simple action you’d like to perform (such as «display a map» or «show directions to the airport») in an Intent object. The Google Maps app for Android supports several different intents, allowing you to launch the Google Maps app and perform one of four actions:
- Display a map at a specified location and zoom level.
- Search for locations or places, and display them on a map.
- Request directions from one location to another. Directions can be returned for three modes of transportation: driving, walking, bicycling.
- Display panorama imagery in Google Street View.
This page describes the intents that you can use with Google Maps app for Android. For more information on Intents and Intent Filters, or Intents common to the Android platform, refer to the Android developer documentation.
Intent requests
In order to launch Google Maps with an intent you must first create an Intent object, specifying its action, URI and package.
- Action: All Google Maps intents are called as a View action — ACTION_VIEW .
- URI: Google Maps intents use URL encoded that specify a desired action, along with some data with which to perform the action.
- Package: Calling setPackage(«com.google.android.apps.maps») will ensure that the Google Maps app for Android handles the Intent. If the package isn’t set, the system will determine which apps can handle the Intent . If multiple apps are available, the user may be asked which app they would like to use.
After creating the Intent , you can request that the system launch the related app in a number of ways. A common method is to pass the Intent to the startActivity() method. The system will launch the necessary app — in this case Google Maps — and start the corresponding Activity .
Kotlin
If the system cannot identify an app that can respond to the intent, your app may crash. For this reason, you should first verify that a receiving application is installed before you present one of these intents to a user.
To verify that an app is available to receive the intent, call resolveActivity() on your Intent object. If the result is non-null, there is at least one app that can handle the intent and it’s safe to call startActivity() . If the result is null , you should not use the intent and, if possible, you should disable the feature that invokes the intent.
Kotlin
For example, to display a map of San Francisco, you can use the following code:
Kotlin
URL encoded query strings
All strings passed to the Google Maps Intents must be URI encoded. For example, the string «1st & Pike, Seattle» should become 1st%20%26%20Pike%2C%20Seattle . Spaces in the string can be encoded with %20 or replaced with the plus sign (+).
You can use the android.net.Uri parse() method to encode your strings. For example:
Kotlin
Displaying a map
Use the geo: intent to display a map at a specified location and zoom level.
Parameters
- latitude and longitude set the center point of the map.
- z optionally sets the initial zoom level of the map. Accepted values range from 0 (the whole world) to 21 (individual buildings). The upper limit can vary depending on the map data available at the selected location.
Examples
Kotlin
Searching for a location
Use this intent to display search queries within a specified viewport. When the query has a single result, you can use this intent to display a pin at a particular place or address, such as a landmark, business, geographic feature, or town.
Parameters
In addition to the parameters used to display a map, Search supports the following parameters:
q defines the place(s) to highlight on the map. The q parameter is required for all Search requests. It accepts a location as either a place name or address. The string should be URL-encoded, so an address such as «City Hall, New York, NY» should be converted to City+Hall,New+York,NY.
label lets you set a custom label at a place identified on the map. The label must be specified as a String.
Categorical search
If you pass a general search term, Google Maps will attempt to find a location near the lat/lng you specified that matches your criteria. If no location is specified, Google Maps will try to find nearby listings. For example:
Kotlin
You can further bias the search results by specifying a zoom parameter along with the query string. In the below example, adding a zoom of 10 will attempt to find restaurants at a city level instead of nearby.
Kotlin
Location search
Searching for a specific address will display a pin at that location.
Kotlin
The above example sets a lat/lng of 0 , 0 , but passes an address as a query string. When searching for a very specific location, the latitude and longitude are not required. However, if you do not know the exact address, you can attempt to bias the results of the search by specifying a coordinate. For example, performing an address search for ‘Main Street’ will return too many results.
Kotlin
Adding a lat/lng to the intent URI will bias the results towards a particular area:
Kotlin
When you know your search will return a single value, you may wish to pass an optional label. Labels must be specified as a String, and will appear under the map marker. Note that labels are only available when q is specified as a lat/lng coordinate.
Kotlin
As an alternative to a street address or a latitude/longitude, you can display a pin at a known location using a plus code.
Kotlin
Launching turn-by-turn navigation
Use this intent to launch Google Maps navigation with turn-by-turn directions to the address or coordinate specified. Directions are always given from the user’s current location.
Parameters
q : Sets the end point for navigation searches. This value can be latitude, longitude coordinates or a query formatted address. If it is a query string that returns more than one result, the first result will be selected.
mode sets the method of transportation. Mode is optional, and can be set to one of:
- d for driving (default)
- b for bicycling
- l for two-wheeler
- w for walking
avoid sets features the route should try to avoid. Avoid is optional and can be set to one or more of:
Examples
The below Intent will request turn-by-turn navigation to Taronga Zoo, in Sydney Australia:
Kotlin
If you prefer not to pay tolls or ride a ferry, you can request routing that tries to avoid those things.
Kotlin
If you’d prefer a bit of exercise, you can request bicycling directions instead.
Kotlin
If you’d prefer taking a motorized two-wheeler, you can request that the directions include narrow roads and trails unavailable to cars. The below intent returns a route in India.
Kotlin
Displaying a Street View panorama
Use the google.streetview intent to launch Google Street View. Google Street View provides panoramic views from designated locations throughout its coverage area. User contributed Photospheres, and Street View special collections are also available.
Parameters
All google.streetview URIs must include either a cbll or a panoid parameter.
cbll accepts a latitude and a longitude as comma-separated values ( 46.414382,10.013988 ). The app will display the panorama photographed closest to this location. Because Street View imagery is periodically refreshed, and photographs may be taken from slightly different positions each time, it’s possible that your location may snap to a different panorama when imagery is updated.
panoid is a specific panorama ID. Google Maps will use the panorama ID if both a panoid and a cbll are specified. Panorama IDs are available to an Android app from the StreetViewPanoramaLocation object.
cbp is an optional parameter that adjusts the initial orientation of the camera. The cbp parameter takes 5 comma-separated values, all of which are optional. The most significant values are the second, fourth and fifth which set the bearing, zoom and tilt respectively. The first and third values are not supported, and should be set to 0 .
- bearing : indicates the compass heading of the camera in degrees clockwise from North. True north is 0, east is 90, south is 180, west is 270. Values passed to bearing will wrap; that is, 0°, 360° and 720° all point in the same direction. Bearing is defined as the second of five comma-separated values.
- zoom : Sets the zoom level of the camera. The default zoom level is set at 0. A zoom of 1 would double the magnification. The zoom is clamped between 0 and the maximum zoom level for the current panorama. This means that any value falling outside this range will be set to the closest extreme that falls within the range. For example, a value of -1 will be set to 0. Zoom is the fourth of five comma-separated values.
- tilt : specifies the angle, up or down, of the camera. The range is -90 through 0 to 90, with 90 looking straight down, 0 centered on the horizon, and -90 looking straight up.
Examples
Below are some examples of using the Street View intent.
Kotlin
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Источник