Get route points on Android using mapquest - java

I'm using mapquest java library for Android. Actualy I have simple android application with map and I can determine route between two locations. The thing I need to do is to get geopoints of this route. The code below is from samples of mapquest.
routeManager.setRouteCallback(new RouteManager.RouteCallback() {
public void onSuccess(RouteResponse routeResponse) {
clearButton.setVisibility(View.VISIBLE);
if (showItineraryButton.getVisibility() == View.GONE &&
showMapButton.getVisibility() == View.GONE) {
showItineraryButton.setVisibility(View.VISIBLE);
}
createRouteButton.setEnabled(true);
}
});
The routeResponse object has a serviceResponse field of jsonObject type. One of the elements of this jsonObject is field called "shapePoints". The documentation of the RouteResponse sais that routeResponse field should have an array of geopoints pairs. I'm not getting this array, but some kind of hashed string :/ :
"shapePoints":"gvxpjAfxthgEkF?cQ]yQ?umA?qMOog#Oej#?u|Ak#qv#OcLOoHiBcGwD_IoHiCkAoCOmFN_DjAyBhBaBhC}JpR??gToS_b#}_#oIaHee#{`#k_#c[eo#se#ce#q\\iHsEgh#q\\}m#__#_i#uY_IeEyWgNav#}_#cjAum#s~#sf#{[eOc[kLiMeE{JwCgTsFmd#oIuwAkVwiHqoAux#wNgh#oIuYuEqMiBuJ{AyLyB}JyB_SeEmPeEuSsFka#{Lse#wMsPeFcLwCqjAm^ey#mUuiD{_Akp#aReTaGoSuE{[sGm_#uDku#sFyL}#eJ{#eJkAgJkA{J{BwIgCyGyBoNcGaNaHkd#iWgT{KyQ}JmUkKwX{KmqBcp#a_B}h#cVaIab#wMiRcGgc#uNa`Ae[_d#uNu^{L}JwCsZ}JyRaGwXsGe^oHgc#qHuaC{`#{nAmT}w#wMykAaSchBiWoqAqQq`AwNqv#{KyyA_Tia#cGiMgCmF}#mE{#kPiCmUuE}c#kKeo#ePmn#uO{OgDcQwC{QiCqQiBe`#wCsZ{Awr#}#}TMm_#Ogr#N_]O{`#]se#O{y#]yH?sKL_NzAmPxC{JhB}OhBmP|#wNl#{O\\ka#xBiRjA}^hCmd#xBoXz#wb#?uhA]iW{#qRiCiWcGcVoH}EkBeTaHeJyBaNkA{Jm#aS{#_S?iWl#cQxAaXfEuY|Ic[hMsP~HgO~IiWnRmd#~^yLlIi\\zVir#ng#{TfOiR|J{Q`GiMvDsPfCoIlA}JjA??_I]kK\\mOhBuOhCyg#fNc`#lUcQzJkP`I{j#bZ_hAhl#y`#nSwc#jVmYhMyWhMyLpGab#|ToqArp#ip#p[ej#r[}^lTuOlKqMjKeOfNiMlK_DtDyLtOoIzLuPdYaQtYee#hv#cQdZuT`]yQlUmUxV_InI_s#fw#_XfYeEtEag#xk#kFrF}OpQmUvYmOzT}i#~|#cQlUw]fc#}T|T_XxViRvNkFdE{GdE{J`IaIrF_IrEoN`Is_#pQiR~Hwr#~SwNfDo{Az`#et#pQcLtEc[pGob#pHw]hBiRzAaX?_X{#oXgDmKkAsKyBeTuF}OeEcVoI??cVoSoIsFcGeE_SyLuUoIkPsFcL{AcQuDwSyByf#oJwSsE}OqH{O{KoNwNgJ_IsFeEiMcGkKkA_N]??cLeEqCwD{#_Il#ku#z#ofANag#Tud#Ns[|#ux#pAikAbB}}#NiLhBkiA?m~#?mhA?cp#?ag#?mJ?kiA?cQ?iM?iM?sZ?ee#Nia#?}gA?afATud#?kV?wM?qoANoqAe#qR}#}JeE{K_IkKiCeF_DaGsAgEe#eEOgD?gD?iBNyB|#wCxBcGjAwD~CsFxGoHbByCzEwMd#cG?cP?gc#?yk#{#kLcBcGVkK?kK?{`#??kB?"
Please help me with the funny shapePoints string, to get geopoints of the route. Maybe there is a different way to get those points. I was trying to google it for few days but without any bigger results ;/

The shapePoints string that you are seeing is actually a compressed format, so it is showing the shapePoints, but just not in a regular, readable raw format. The Android Maps API uses the MapQuest Directions Web Service for routing functions. The default routeResponse format in the Android API is cmp6, which is the compressed format that you are seeing, because it is generally more efficient to use the compressed format in an application.
You can tell the Directions Web Service to send the response back in a raw format by setting the shapeFormat parameter, which is included in the Directions Web Service documentation under the Advanced Routing Options section. Check out the Android Maps API Reference Guide for more specific information about setting the route options from within the Android Maps API -- look for the setOptions method on this page.
Also, just want to add that there is a Android Maps API forum on the MapQuest Developer Network and it is also a good resource to check when you have questions about the Android or other MapQuest APIs, like Flash, iOS, etc.
Please don't hesitate to ask if you need more assistance!

Related

String Translation from API call

I have a found a free API to get some data I need for my app. The thing is the values that I get are in English.
I wanted to know if there is some way to translate this strings in my language before showing them to the users.
You can translate text but it will require another API call. Not only that, but you will have to create an appropriate request object and parse a response object from your chosen API.
You have various API providers to choose from, the top Google hits being:
Google: https://cloud.google.com/translate/
Yandex: https://tech.yandex.com/translate/
But beware! Machine translation is patchy at best. The likelihood of getting odd sounding or outright wrong results, particularly for anything other than simple text, is very high.

How do I pass and extract data in googlemaps api in my android app using java?

I am new to android development but familiar with java. I want to send a request (containing coordinates of locations) to google maps api for distance matrix and later calculate the sum of distances for each point. The response from api is either in javascript or xml (i dont really know which one). How do i send the query in java and how do i extract the distances from the response?
Try using seperate classes to send and recieve data through the Google maps API. try using JSON to send aaplication data.
In order to use any thing like this (or that is owned by google etc.. ) You first need to setup a developer account at https://play.google.com/apps/publish/signup/
It does cost 25 dollars but in all honesty it's worth it as you get access to a lot of different things including the google maps api, if you're not interested in spending the $25 I would suggest looking into an alternative mapping api.
If on the other hand you will spend the money they've got some great tutorials laid out in the documentation!
A Google Maps Distance Matrix API request takes the following form:
https://maps.googleapis.com/maps/api/distancematrix/output?parameters
If you need more information, Refer to "Distance Matrix Requests".
https://developers.google.com/maps/documentation/distance-matrix/intro#DistanceMatrixRequests
You can also use the "getDistanceMatrix" that issues a distance matrix request.
https://developers.google.com/maps/documentation/javascript/3.exp/reference#DistanceMatrixService

get location based on image

I am trying to get the location (preferably city name) based on any image uploaded. I can see similar functionality used in Google image search where we drag drop an image and it gives a lot of information including location. Is there any API (or any other way) through which I can get similar sort of information? I have checked tineye but it requires commercial license so can't use that
I got a solution for this. Basically its using multiple google apis to get one result
Google Image Search API
call the JSON api https://ajax.googleapis.com/ajax/services/search/images?v=1.0&q=http://www.aparisguide.com/eiffeltower/eiffel-tower1.jpg
This will result json with information/content about image. We can use this content in step 2
Google Search api with the content or title obtained from previous search, try accessing google search api http://ajax.googleapis.com/ajax/services/search/local?v=1.0&q=Eiffel%20Towerthis will return the lat and lng for search results as JSON
Google geocode api with the available lat and lng from previous search we can call the geocode api as below http://maps.googleapis.com/maps/api/geocode/json?latlng=48.858228,2.294388&sensor=truethis will again return JSON with the list of possible address. With little processing of data it can give me the City.
Note: The results are not very consistent but it can solve the purpose to some extent

Google Maps Polyline to Postgis with Java/Hibernate

I have a page where the user enters the starting point and ending point and I show de route in the map. I would like to know how to get this polygon (polyline) and save it in Postgis through the Java / Hibernate.
Someone can help me?
Thanks.
Luciano
Usually you cannot get that polyline as vector data coordinates, because these data are provided either by Teleatlas / Tomtom (via Google service) or Microsoft Bing (Navteq data) or Nokia (Navteq data)
Such vector data are extremly expensive, and therfore you can only request that a line is drawn on the screen, but you will not get the geographical coordinates (latitude, longitude). Even Google would not have the right to give you that vector data (because they dont own that data, they only display it).
However, I remeber a post here showing how to use an unofficial Google server where you can request the route between two geo points, and get back a compressed encoded route.
But you legally cannot use that service, nor I do know if it yet exists.
An alternative would be use open source map data, like OpenStreetMap, for these services you can get the vector data for a route. For example: the ios RouteMe library provides such things via OpenStreetMap.

get Walking route - Android

I used the method used on that link to show a route between two GeoPoints :
Why retrieving Google Directions for Android using KML data is not working anymore?
I would like to know if there's a way to get a walking route instead of the driving route.
You require mode parameter value in your URL.
Check out here, different parameters which can be append to URL.
For providing Mode value in URL your have only 4 mode supported.
driving (by default)
walking
bicycling
transit
Supported mode value documented here.
Sample URL :
http://maps.googleapis.com/maps/api/directions/json?origin=Toronto&destination=Montreal&sensor=false&mode=walking

Categories

Resources