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.
Related
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
This is my first time using stackoverflow because I am really desperate to solve this issue.
I am developing an app that contains information about bus stops in my country (Google maps does not work if I try to go from X to Y on a bus) so I decided to do it myself. I already tracked every stop of many buses.
I show each bus stop as overlays in my osmdroid map view, I get this information from a internal database that as I said I collected the information and is not online.
What I want to do now, is to get the user's location (lat, long) and tell him/her the closets bus stops to him/her location. I already looked at Osmdroid bonuspack and the POI feature, but what I understood is that these places (restaurants, bus stops, hospitals, etc) are already on a server.
How can I implement a POI function on my application with local information. I would appreciate any help, this is something I want to do for my community.
Thank you everyone and sorry for my poor English. I am doing my best.
You already have the coordinates of bus stops in your database, and they are displayed in an overlay. You can also get the current users location. What you want to achieve is a matter of calculating the geographical distance between two points (the user's location and a bus stop).
You don't have to implement a suitable formula yourself, e.g. have a look at the GeoPoint class. There's a distanceTo(final IGeoPoint other) method. You can instantiate a GeoPoint with known coordinates or simply use Overlay methods.
You could also achieve the same thing by querying only the bus stops that are within a certain radius of the user's location (maybe have a look at the BoundingBox)
If you want to use libraries like the BonusPack, look at the provider implementations. You could simply write your own provider for your bus stops. Have a look at e.g. this one.
> How can I implement a POI function on my
> application with local information
I assume that your question is about "how to render busstops on local device" and not "how to query my local database" and not "how to do some server-side support."
If you want to render the busstops on you local android device you can use osmbonuspack
which contain an example app that shows how to render interactive poi-s.
Unfortunately currently there is no precompiled osmbonuspack aar at jcenter/mavencentral so you have to include the sources as a local subdirectory of your project.
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
According to this solution
Why retrieving Google Directions for Android using KML data is not working anymore?
I've got the question what is the shortest way to draw the route through the waypoints.
Implement itemizedRouteOverlay to store routes route from
start point->waypoint1, waypoint1->waypoint2, waypoint2->destination
Merge route objects and draw it as routeOverlay
Route1=start->waypoint1, route2=waypoint1->waypoint2 etc..
Add implementation of waypoints in parser
Any other, better way?
Any hints will be appreciated.
The fastest way I found is to:
add parameter waypoint with via: prefix for each waypoint to JSON URL string, so it doesn't create more than one leg in JSON (crucial part because there is only one leg support in GoogleParser provided with that example). Google offers only 8 waypoints support for non buisnes customers, so that was another problem. I've managed to bypass it by spliting route to sub-routes, where ending point of one route, was begining point of another route. Each route was stored in list as different routeOverlay object, and then one-by-one added to mapView in the loop .
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!