Topographical or relief data in Map APIs - google-maps

I was wondering if anyone knew of any map APIs that offer topographical or relief data? I've had a quick look at Google and Bing APIs, but could find nothing there.
Google allow you to view a map as TERRAIN, which means you can see the topography of a map, but I want to be able to get at that data - i.e. if I were to draw a line between 2 points on Google Maps, I want to know how high above see level points along that line are.
Is this possible with any map APIs out there?
Thanks for your time!

Here's a simple example of height along a route.
I use USGS to obtain the elevation data, Google Maps API to plot the route and Google Charts to draw the elevation profile.
Full details in the associated tutorial.

Here are a few web services that provide elevation data:
USGS Elevation Query Web Service
EarthTools
GeoNames
Also, this site can search each of them

Related

Google Autocomplete Polygon as GeoJson

I'm trying to find in the Google Maps documentation a way to search for a place and get it's GeoJson polygon but I got no luck finding something like that.
My goal is to create a search bar to search places and then send the geojson polygon to our back-end. I don't want to draw it on a map or anything front-related.
Nominatim is doing exactly what I want but Nominatim policy is very restricted so before I go for an alternative, I wanted to check if Google Maps could provide the same (especially since searching for a country on Google Maps retrieve the polygon and draw it on the map).
Thanks for your help !
Unfortunately Google Maps APIs don't expose any polygons data of geographic features. You can see very old feature request in the Google issue tracker to add this functionality, however it looks like Google didn't set high priority on this task:
https://issuetracker.google.com/issues/35816953
Feel free to star the public feature request to express your interest and subscribe to further updates from Google.
You should get polygons from other sources.

Better result in Google map using beacons in Indoor search

Would it be possible make Google maps aware of our beacons via their registry or api or something, so that google map can accurately give indoor direction to users in a facility that is under our control(where we can deploy beacons)?
Example: In a mall we own, can we place beacons and submit them to Google Maps so it can give better results?
Some links I found, but can't figure out an answer:
https://developers.google.com/beacons/
https://developers.google.com/beacons/proximity/guides
https://www.google.co.in/maps/about/partners/indoormaps/
https://play.google.com/store/apps/details?id=com.google.android.apps.insight.surveyor
Google used to develop this beacon-based location service call Google Here but it was scrapped due to the reasons of privacy, but then you can do the following to get your beacons locationing up.
Let say you have multiple beacons in one mall.To make this explanation simple, just treat the indoor maps and normal maps as the same thing, and those beacons you going to add are like the places in the Google Maps.
First of all you need to make your building floor plan available on the Google Maps. You can do so by using the following steps to submit your beacons location with the floor maps of the building, so that your beacons location can be automatically align with your stores/building.
https://support.google.com/maps/answer/2803784?co=GENIE.Platform%3DDesktop&hl=en
After your floor plans appear on Google Maps, you can submit your beacons location using the Map Marker tool (Retired March 2017, moved to Google Maps after that).
You can then use the Google Maps API's Map Object to work with your indoor map, including getting location of all your beacons.
https://developers.google.com/maps/documentation/android-api/map#indoor_maps
The IndoorBuilding Object allows you to get the active level that you are accessing. You can use the function getLevels() to get all the levels in the building, and then use getActiveLevelIndex() to get active level you are working on.
After getting to the right floor, what is left is the interaction between Google Beacon API with the maps you created.
latLng and indoorLevel in the Proximity Beacon API would then return the exact location and detail level that your beacons located.
You can use this link to upload indoor map of a building.
https://maps.google.com/floorplans/find
Submit the details of floor and everything.
Hope it will help.
I believe there are no current plans to use registered beacons for directions indoors, or even for lat/long type location (more for semantic place inference), but I feel it is a very good FR so I went ahead and added it to the Android issue tracker:
Including support for BLE beacons in FusedLocationProvider.
Please star it to get updates.
As you can read in the other reply beacons can be used currently to improve indoor location accuracy for 3rd party apps, but it requires a lot of work by the developer and it is not supported by the Google Maps Mobile.

Google Maps API v3 pathing with location service

I'm using Google Maps for my campus map and I already have all the overlays for the buildings done along with javascript to open windows when clicked on the overlay, etc. The next problem I'm trying to tackle is how to get directions from point A to point B (using point A as geolocation). On my campus there is about 2.5 miles+ of sidewalks but they aren't defined paths in google maps, so i cannot use the built in directions which Google maps offers.
Is there any way i can make it so it displays directions from point A to point B while making it so it displays a path along a sidewalk?
Thanks in advance.
EDIT: I already have the geolocation working also.
If Google doesn't know about the sidewalks, you will have to do the drawing yourself. You will need to store information about the sidewalks in a database, then come up with a routing algorithm, then draw a line (using the Polyline class).
For routing algorithms, you might be able to get away with using Dijkstra's algorithm
http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm
or you could try A*
http://en.wikipedia.org/wiki/A*_search_algorithm
or one of the other algorithms you can find in the Wikipedia sidebar on the Dijkstra and A* pages.
Polyline documentation:
https://developers.google.com/maps/documentation/javascript/overlays#Polylines

Get type of terrain by coordinate

I'm looking for a solution to be able determine landscape type by a given coordinate, for example check if current position is water/forest/town/road and so on. I found google.maps.MapTypeStyleElementType object specification in the Google Maps specification, but not sure if it could help me or not.
Probably, there are some another Maps API with such functioality? Or maybe I should refer to the different types of offline maps?
Nope, the link you send is just for styling the proper features, not to tell which feature is at a given coordinate. If you are interested in landscape, then Corine Land Cover is the thing you are looking for. It describes the types of biotops like forest, water, but also land use - meadow, field, buildings etc. However, I don't know if there is such an online service where you could query particular coordinates. Other solution for you would be to import these GIS layers (they are freely available) to your own gis map server. Maybe this is partially solved as there are e.g. projects how to incorporate these into openstreetmap.
Well not quite, but you could get close to what you're looking for by using the Google Reverse Geocoder and the Google Places API
Google Reverse Geocoding
http://code.google.com/apis/maps/documentation/geocoding/#ReverseGeocoding
If you send the service a geocode it will send back an address type and/or one of several adress components http://code.google.com/apis/maps/documentation/geocoding/#Types
Google Places API
http://code.google.com/apis/maps/documentation/places/
You could use the Google places API to search for for what's near. If the geocode is in the middle of the lake, the Places API may return something like "Lake Michigan" and then you'd know the terrain obviously.

How to find a closest street

I'm reading through Google Maps API documentation and I wonder if such a think is possible:
I specify the point (by coords)
I search for all roads, and junctions around the node (say in 1km radius)
I get parameters for the streets around (polyline coords)
Is it reachable, or google do not share that data?
Thanks in advance
Rafal
I can image writing up a little script that generates a bunch of random points within a 1km radius and then performs directions services via Google Maps API to obtain all possible routes and thus streets within a 1km radius. However, this is problematic since it is kinda against the Google Maps TOS of displaying this information only on a map within a website and not extracting data for you personal use as this would be.
A better approach would be looking into utilizing Open Street Map data where you can download street data from a specific viewport. If buying street network data is an option, you can go to a commercial outlet such as NAVTEQ or PTV which post-processes NAVTEQ data to a format for use in the transport modeling software package you mention on your blog.