I have been tasked with building an offline web application that will display maps and also display locations and routes of objects. The requirements are that it run in a web browser, but it will run on a disconnected laptop. It will be receiving continuous, real-time map coordinates data and continuously updating the location of objects and also display historical route data. Is it possible to somehow use Google Maps for this? I know that Google recently announced support for offline maps - but I got the feeling that was specifically for the Android OS and also specifically for mobile devices. If not, Google Maps - does anyone have any suggestions for which mapping technology, API or software would be best for this type of application?
No. This is not possible. You have to load the maps dynamically from the web and you are not allowed to cache information (*you can cache a small amount of information temporarily, but you cannot do bulk or mass downloads).
See Section 10.1.3 of the terms of service:
http://goo.gl/HX3Uj
Related
If I use HERE's Android SDK and preload map data to the device storage,
do I need to reload these data every n days?
We are operating a demand responsive transport system in an area with poor cellular coverage. Having to relocate the cars periodically to some designated wifi access point would be inconvenient and integrating our vehicle dispatcher algorithm with off-the-shelve SatNavs is just not possible.
No, offline data is not expiring, nor needs to be refreshed.
If you are using also online services (and don't operate fully offline) it might happen that some online services (e.g. online routing, traffic, online search) respond with no or bad results with older mapdata (mostly something older than a year). So, if you also have online usecases, please consider a mapupdate every half a year.
Also keep in mind, that outdated mapdata might cause a bad user experience with newly build roads or changed road networks.
I've seen the videos about Azure CosmosDB scaling around the world by clicking on a map, which is neat. But in those demos, they connect directly to the database from a client.
It's my understanding that allowing a client (like wpf desktop program) to directly access a database is a bad idea. It should be behind a web api that we control access to.
So for scaling globally, I don't really need lots of areas where users are, I need the same datacenter that's hosting the api.
Is this correct?
There is an interesting article in the docs refering to Multi-master database architecture that will be useful.
Basically, if you are going to expose a Web API and clients will connect to it instead of the database, you want the Web API as closer to the database as possible (that's when global replication comes into play).
To transparently connect the client to the closest API, you can use Traffic Manager's Geographic routing.
Large quantity of GPS devices in the field with varying "heartbeats" of coordinates relayed over cellular network to dedicated SQL box with .Net frontend. Would like to utilize Google Earth within application for mapping and tracking selected units. Any suggestions on which Google product and associated API is most applicable?
try this. navigator.geolocation.getCurrentPosition will use the GPS to get current location on mobile devices.
https://developers.google.com/maps/articles/geolocation
Say, I'm developing a Windows (if OS is important) application that will be available to download for free and I would like then to collect some usage statistics. In the easiest case - count of application launches. It looks superfluous to maintain a server (e.g. VDS) just for this.
I've been thinking to use Google Analytics for this (manually send requests to GA server). This will probably work, but it is not GA designed for - the idea looks like a hack.
What are the options here?
I don't think this is a hack. It's all just data about user interaction. There is little logical difference between opening a desktop app and clicking a button vs opening a web page and following a link. Both are measurable user actions you can track, aggregate and put on graphs.
In fact, Google provides a lower level HTTP based "Measurement Protocol" that is intended for exactly that.
https://developers.google.com/analytics/devguides/collection/protocol/v1/
From the overview:
The Google Analytics Measurement Protocol allows developers to make
HTTP requests to send raw user interaction data directly to Google
Analytics servers. This allows developers to measure how users
interact with their business from almost any environment
Just put an HTTP request with the correct parameters in your application launch or button click code and it will collect the data. Any data you want to collect.
In other answers to this question there are suggestions like making web services or storing the data locally but why reinvent the wheel? Google Analytics already provides the collecting and reporting tools and it seems like a good solution.
I am writing a Flex application for use on a private intranet with no external Internet access. I want to use Google's 3D Maps Flex API, but it must be connected to the internet to download map tiles on demand.
Is there a way to locally cache the 3D map tiles and data so that I can run this app without an internet connection? And if not, is there a 3D GIS that supports Flex integration and allows for a local map cache?
Using the maps on non public facing sites is against the rules of all the map providers under their free licence other than Yahoo and openstreetmap.org. Also I think there are some limits to tile caching enforced for several of the providers, mostly which prohibit such activity. openstreetmap.org allows you to cache tiles.