Does google maps API provide elevation details for buildings? - google-maps

I am a final year Computer Science undergraduate student from India. I want to create a WPF application that displays 3D buildings like in the latest Google maps 5 for android. This will be the basis of my final year project. I have some questions before i start working on this.
Should I make it desktop or web based, or should I use the web to store some metadata and render the data in the desktop software?
For 3D display of buildings in a map area, is WPF enough or will I need knowledge of XNA and Direct X too?
Will this violate Google Maps TOS if I use Google Maps API? (I want to do something Google Maps does not provide in India) Is using Bing Maps a better option?
Is it feasible to read building elevations and rendering them using the above mentioned Maps APIs? Is it that the elevation data available through Google Maps API is only for the terrain and not for individual buildings?
I have three months to complete this project and have given details of the technologies I intend to work with.
Will I need in-depth knowledge of any more technologies for this?
Excuse me if I missed some detail. I am posting this from my cellphone using opera mobile. It's time we have an android client for stackoverflow.

1) That is entirely up to you. As you don't specify your target user then it is hard to say what the best way to deliver the application is. For example, if you want to be able to widely distribute it and have a high compatibility then perhaps a web-based application would be best. Conversley, if you require high performance and are targeting a specific os, chip-set, etc then a stand-alone application may be better.
2) Again, it is hard to say. WPF can certainly render 3d objects and may provide you with everything you require. If again you require more complex rendering you may also want to look at later versions of Direct3D, which can help a lot with things like HDR textures, Multi-threading, etc.
3) I am not a lawyer so I can't say for sure - even if I If I were it would still depend on the specifics of your implementation. That said, the bing maps section 2 (i) seems pretty good for you - Academic use seems pretty open as long as you make the application available publicly without restriction. The Google TOS seems more restrictive to me at least.
4) To me that would be a breech of the Google Maps/Earth TOS - The section on Restrictions on use seems pretty clear...But again, I am not a lawyer so I can't say for sure...

Related

google earth vs. google map api: For a specific environment

I am about to start a new project which will be used about 80% through non-mobile devices like desktops and laptops and 20% through mobile devices. And yes, I want to use KML capabilities too, use JQuery for all my JS work and do not want users to download any plugin separately.
I have implemented two projects already using Google Maps API blissfully unaware of Google Earth API. Now I started reading about the two and nothing is clear about what is the right choice. I even referred to posts on this site so please do not mark this as a duplicate.
Google's documentation on Google Earth API states:
Welcome to the developer documentation for the Google Earth API. The Google Earth Plugin and its JavaScript API let you embed the full power of Google Earth and its 3D rendering capabilities into your web pages. Just like in the Google Maps API, you can draw markers and lines—but in 3D!
Well, with that statement from the horse's mouth, it confused me even more. Why would anyone use Maps API then. Can someone with experience in both these tools, give some definite statements for the specific environment I have described? The earlier posts do not give convincing answers.
I believe when I last looked Google Earth support in the browser is implemented through the use of Web GL which will severely limit your browser support and I think eliminate mobile devices.
While Earth may be prettier Maps is more performant and arguably stable and I would think it would be the logical choice for you in this case.
This page contradicts some of this but requires the use of a plugin which you specify you do not want.
For information on using KML layers with the Maps API see here.
Here is how I understand the situation.
There were two similar but different products co-existing for a long time:
2D Maps born on web
3D Earth born on desktop and brought to the web as plugin.
This caused a lot of confusion.
It would be beneficial to unite the two, but that only became possible recently with WebGL.
Last week Google released new Maps having Earth integrated.
Unfortunately, I was not able to find any documentation about this integration yet.
But, still, my answer is: use Maps and eventually you'll get Earth for free.

developing location/map based web site

I wanna start developing a map-based web site.
At first I ordered a regulat Gps device just to test the site, later on I would like to use Iphone's gps and other cell devices.
So I need something pretty generic.
I searched the web for map-based development framework and come up with too many of them :
Geo server, Map server, Open layers, Geoext , Google maps's api , and more.
I'm not a seasoned web developr (more of a c++ kind of guy) so I need something pretty straightforward , though robust at the same time.
Moreover, I need one which is free, and won't have licensing problem down the road.
At first I just need basic capabilities as displaying the gps data on my web site in real-time.
Can someone experienced recommend one ?
Thanks
Client
I'd go with OpenLayers - this is an opensource JavaScript client library, similar to the Google Maps API, or Bing API. However OpenLayers will free you of any licensing worries, or changing APIs as the source is available and can be modified - this is not the case with the Google/Bing/Yahoo APIs. You can however use the data from these services as layers in OpenLayers and drop them if they suddenly become filled with adverts or have commercial restrictions.
Have a look at examples to see if there is one you can use to make your first test application - http://openlayers.org/dev/examples/
GeoExtJS is a collection of extra tools and widgets that work with OpenLayers, built on top of another JavaScript framework ExtJS - also open source. ExtJS is mainly used for building user interfaces - data entry forms, grids etc. using JavaScript, to display in the browser.
If you are looking for tree structures to switch layers on and off and other more advanced UI widgets then GeoExtJS is worth looking into.
Server
If you are only displaying points then you can create dynamic KML or GeoJSON on your web server and reference this in OpenLayers. There are libraries in all languages that you can build on. Python has become a key languages in geospatial technologies, and has GeoJSON libraries you could script with.
GeoServer and MapServer are both server-side programs that allow you to serve out spatial data from databases with symbology, labelling etc. If you are having lots of different datasets then its worth spending time setting this up.
MapServer is written in C++ so it is probably easier for you to try this - however you may be able to get away without needing any specialist server side software, especially if your data consists of X,Y / Lon,Lat values that can be easily plotted as points.
For the beginning (you said that you need to show gps position in a real time) I think that Google Maps are good option here. This solution has very simple API and community support is also an advantage here (I've never compared with something else but I have good experince with GMaps and its tutorials/resources). This is for the client side, for server side any web framework should do the work (I use Django and it also have dupport for some geo things - mentioned later in this answer).
You need probably to build application that follows this rules:
Your GPS device sends data to your server(web application) periodically, data is stored in a db.
Users use browser to display data with map (eg. Google Map) which updates position periodicaly on some scheduled interval (eg. ajax calls to the server for the most current position). Each time response is recieved map need to be updated.
I don't know if there are more specialized solutions for this case.
If you need to improve your application and add some features you need to consider some more sophisticated geo frameworks. I have heard some positive opinions on GeoDjango, mainly because it can be easily incorporated with Django(which is very easy web framework to learn and it has a lot of capabilities).
All technologies I mentioned here are free.
I can recommend using the Google Maps API to render your maps in a browser. You can find my reasons in this answer.
The current version of the API has support for getting geo-location information for mobile devices.
I use Bing Maps for mobile. Mainly because its fast, and provides much better looking maps, 3d models, and satellite views for the UK than Google maps does.
I have also had issues with Google changing their service to provide some enhancements and it breaking my app, where at least with the Bing API theres a bit more compatability considered for existing apps. Not that I dont like the Google maps, I do. Its a backup service for me..
I generate maps from both providers, Bing as the primary, Goole secondary... this means that if ones offline of not working, which happens, my users still get to use my app.
Heres a link to Bing Maps Dev on a WIndows Phone for example
I'd take a look at Cloudmade. They have a number of API's, free options, paid options and use OpenStreetMap which for many places is one of the most accurate mapping solutions out there.
free , open source:
www.openstreetmap.org,
u can build ur own server as well using the same technolgogy:
http://weait.com/content/build-your-own-openstreetmap-server
API: http://wiki.openstreetmap.org/wiki/OpenLayers
Although its still in draft form, HTML5 will be supporting Geolocation API. Most major browsers and hand held devices should be supporting it in the near future and should make life a lot easier for developers who want a service independent solution. You would however still need a mapping service like google maps if you need to display locations.
function showMap(position) {
// Show a map centered at (position.coords.latitude, position.coords.longitude)
}
// One-shot position request.
navigator.geolocation.getCurrentPosition(showMap);
EDIT:
Its already supported in several major browsers:
Mozilla Firefox: supported in Firefox
3.5 and later versions.
Chrome: Supports thru Google Gears
Geolocation API
Opera: Supported in
nightly builds
Safari: Support is
coming soon in the IPhone’s Safari
browser.
Internet Explorer:
experimental support available from
IE8.

Mapping API for Flex/Actionscript application?

I'm working on an application in Flex will utilize mapping features. I have experience with the Google Maps API in Flex, but it seems sort of limited to me (as compared to other APIs and the Javascript API). In particular, I'm interested in developing some clustering (grouping places together to prevent too many points from being on the map at once, slowing rendering). I'm wondering if anyone has any recommendations on which API to use/look into, and perhaps which APIs have features unique to them. I think visually some of the other providers have "nicer looking" maps as well. What I'm checking now:
Google Maps API
Have a lot of familiarity, but might be missing some key features.
Yahoo Maps API
Don't know a lot about it. Seems to handle a lot of markers very well. Looks really nice visually. 50K requests per day for free is less than google.
ArcGIS SAMPLES
I've had my eye on this for awhile. Seems really robust. Great samples index. Also seems to autoscale markers based on the zoom depth. They also seems to have a lot of data-based maps you can access.
MapQuest API
Looks to have great docs and features. Noteable are the "decluttering" and I think it has clustering.
Going through this awesome list right now, but I'd love to know if any of you Flex (or other lang!) devs have any experience with mapping and would like to give some advice.
We are using Flex Maps by Igor Costa. It lets you use Nokia Here Maps or Bing Maps.
It is based on ModestMaps AS3 and you can personalize your markers or polygon overlays.
It also works on mobile devices using Adobe AIR SDK.
I hope this component will be added to the Apache Flex SDK as a map component.
There is also good Flash API UMapper. Look at their site
http://www.umapper.com/pages/products/#umap
They allows you to use many map providers, like MS, Yahoo, Google, Cloudmade, OpenStreetMap, ESRI, Digital Globe.

Google Map API vs MS virtual Earth API

I thought of using map in my blog. So which api will suit for me??
I am expecting that map should have more features. I dont know how to use it.. Sorry if my question is silly.
I need docs of both. Please let me know??
Both mapping API's are well documented by the respective parties, just google it and you'll find what you need. The MS Api is a little more restrictive but then the MS maps have better support for bringing up nice looking pop-up boxes etc.
The only real considerations after working with both are design and whether you need https support or not because Google maps will give IE users on https a nasty security dialogue pop-up that won't go away unless you pay Google $10,000 (but being for your blog I wouldn't imagine your fussed about that)
They are both pretty similar. I have used Google Maps API and it is very easy to get up and running and does everything I need. It also has street view which is a nice extra.
You should provide us more details in order to get a better answer but I will give you my thoughts anyway:
I have used the virtual earth API in a project I did in 2007. By that time we decided to go for the MS version as it had a better documentation and would fit better with our technology set i.e. MS SQL, .NET etc .... and best of all: it was for free!
Google at that time was offering a nicer UI for maps and stuff but after a certain number of requests you would start getting charged....
If you are developing in .NET I would certainly go for Virtual Earth now as Microsoft has shipped the official virtual earth sever side control ....
Some links:
http://dev.live.com/Virtualearth/sdk/
http://code.google.com/apis/maps/
Personally I think Virtual Earth is an inferior product compared to Google Maps with Street View. I haven't looked at either API but my experience with using other web based APIs from Google and Microsoft is that Google exposes a lot more functionality. The web is their bread and butter. It's a defensive action from MS. I love MS btw, so this isn't a hater ranting...
Pretty sure that MS Virtual Earth will require your users to download a viewer specific to actually see and interact with the map. The Google API will work directly with the browser. Really it comes down to what sort of functionality are you looking to include? if you just want to display various places on a map then GoogleAPI will work fine for you, if you want to be able to do an exploded view of a location from 3 miles away and then zoom in on it like you would if you approached it in a fast moving plane then MS Earth.
Google Maps API or MS Earth Developers

Virtual Earth or Google Maps

Simple question, the answer may not be...
I'm going to be developing a web app (ASP.NET MVC) for a client. They have asked me for an opinion on whether to use Google Maps or Virtual Earth for providing a mapping solution.
Which would you go for and why? Or are there others you can recommend?
What else do you need to know?
Street view (or equivalent) won't be
necessary in the near future, but
one day it might.
The client wants to identify certain
mappable features, and beyond that
find these features when within a
specified distance.
What else should I be considering at a high level? Or my client?
Thank you in advance.
One of your major considerations needs to be licensing if this is for a commercial web site. You'll have to contact both Google and Microsoft for exact details and pricing, but there's plenty on the web that indicates it could cost you $10k to implement these solutions in production. They get you hooked on the rapid and easy development though!
My preference is for Google Maps, it just feels a bit slicker but I have developed some pretty good prototypes with the Virtual Earth SDK before.
I don't know if Microsoft are planning an equivalent to the StreetView feature so if that is on the requirements cards in the future then stick with Google.
Either of the technologies will allow you to search for geographic features in various ways - whether via region, street address or specific latitude + longitude. They also allow you to overlay your own images or draw lines, polygons etc.
Google Maps seems to have a wider user base (even though Microsoft were technically doing this stuff before Google got into it!), so you're likely to find more help out on the intarweb when implementing your solution than for Microsoft.
More info on Google Maps for Enterprise is located here:
http://www.google.com/enterprise/maps/map_info.html
You should be asking the client for a reasonably comprehensive list of requirements for the mapping solution. You've mentioned one - these "mappable features". Are there any others?
Once you've got the list you can then see which one provides the best fit and go with that.
If Street View is definitely on the horizon then you have to go with Google - or is it something that's just come up in conversation?
Having said that, for a little bit more effort you could write an abstraction layer that sits between your application and the mapping solution so that if the one you didn't choose provides a better fit in the future it would be easier to make the change. Though this does go against the Agile methodology (YAGNI).