Open source map - gis

anyone can suggest what program / approach I should use?
I need to have a map like google map where I can display map, add marker polygon etc.
But I cannot rely on such online services as client is afraid that such service die off and there goes our system...

Have a look at lots of resources pointed in answers to these questions on GIS.SE:
GIS for the web
Steps to Start Web Mapping
You might want to look at Google Fusion Tables, or solutions like MapBox or CartoDB for quick, hosted solutions.
Willing to invest more time (and depending on your skills and language preferences) you could delve into PostGIS & GeoServer / Mapserver with a frontend of OpenLayers / Leaflet (or any other libraries). OSGeo-Live DVD might come handy for a quick and dirty review of most of these options.

Here are pure open source based web map and geo-location database resources. Google map or Bing map is wonderful, but they require business contract for commercial use. It is said that Foursquare recently switched their map tool from Google map to open source based Leaflet API which looks like the picture below. This map tools is quite great and recommendable.
web API for map : http://leafletjs.com/
Good place to start. Two resources below are not really used for developers, cause those are already included in leaflet javascript API.
Map style : http://cloudmade.com/
Map data : http://www.openstreetmap.org/
Geo location based on ip address : http://dev.maxmind.com/geoip/geolite
Can download free ip address & city mapping file, which can be used for custom mapping code.

I recommend http://mapserver.org/
You can create map files into you server...and you can connect to open source databases like PostGIS

Related

How to track multiple vehicles with Maps API

I'm working on new application in my workplace as described below:
We have tens trucks working for us. I've installed a GPS module on each of them to track their position and store their coordinates in a database.
I need to see their movements in real time on a map (Google Maps, or Bing Maps) but I don't know how to do this.
I don't want code or snippets, I prefer Guidelines and API Docs or framework to build it!
If you have any question ask without problem! Thanks guys
Since you have the data in a database, the first step would be to expose that data to your app. There are a couple of different ways to do this depending on the type of app you want to create, however the most universal solution would be to create a web service that any of your apps can connect to. Here are a couple of good blog post on how to create spatial web services.
http://blogs.bing.com/maps/2013/07/31/how-to-create-a-spatial-web-service-that-connects-a-database-to-bing-maps-using-ef5
http://blogs.bing.com/maps/2013/08/05/advance-spatial-queries-using-entity-framework-5
Once you have a web service you can then create the app that will display the truck locations. You have a lot of options here; web, mobile, desktop (WPF, Windows app), cross platform. Web apps tend to be the most common as they can be accessed from the most locations. Connecting to a REST service from JavaScript is fairly easy. There is a number of different ways to load in real time data. The easiest is to use a timer that calls your web service regularly and grabs all truck locations. A slightly more complex option, but more efficient is to timestamp the last update of each location and then keep track of the last timestamp used to request an update. By doing this you can limit your request to only retrieve updates that have occurred since the last request. This would significantly reduce your bandwidth and make your app faster. Displaying the actual truck location on a map is easy. Your web service will return the location information, likely as either two number properties (i.e. latitude/longitude) or as a well known text string (simply parse this as shown in the previous blog posts). If using Bing Maps and you have two number properties, you can create a pushpin and add it to the map like this:
var loc = new Microsoft.Maps.Location(latitude,longitude);
var pin = new Microsoft.Maps.Pushpin(loc);
map.entities.push(loc);
Here are some useful resources around developing with Bing Maps:
https://www.bingmapsportal.com/ISDK/AjaxV7
https://msdn.microsoft.com/en-us/library/dd877180.aspx
Note, if you use Bing or Google maps (or just about any other major mapping platform), they require all asset tracking applications to have a license to use the maps. If you use Bing Maps, you can find details on licensing here: https://www.microsoft.com/maps/licensing/licensing.aspx#mainTab4

Esri Feature Services and Google Maps API v3

Is it possible to overlay an Esri Feature service onto a Google Map using the Google Maps API?
I am using feature services hosted on ArcGIS Online. Keep in mind these are feature services, not tiled map services.
From all that I've gathered, Google Maps only appears to only support tiled map rest services. Is this correct? Has anyone had success overlaying feature services?
If you've made it this far I'll give you a little background. Our systems developer has produced numerous applications using the Google Maps API, so it would be a burden at this point to rewrite everything in OpenLayers, ESRI API, Leaflet, etc. He wants to be able to consume our ArcGIS Online mapping services, which we store as features, aka. WFS. We really do not want to go the route of having to upkeep additional versions (tiles, KML, geoJSON, etc) of the same layers. I've been experimenting with on-the-fly Esri JSON to GeoJSON conversions, but I haven't had success. I'm about ready to call it and rebuild everything with the Esri API, but I figured I'd ask first. Our staff is really in love with Google Maps so it's going to be a hard sell.
Thanks
Yes, it's possible with ArcGIS Server Link for Google Maps JavaScript API V3
https://github.com/googlemaps/v3-utility-library/tree/master/arcgislink
You can retrieve both geometries and attributes from AGS through the REST API, using the Feature Class.
Alternatively, you can implement a Geometry Service on the server side and access it through GeometryService Class.
Check arcgislink documentation:
https://htmlpreview.github.io/?https://github.com/googlemaps/v3-utility-library/blob/master/arcgislink/docs/reference.html
It is viable, but it may have performance issue.
You can make a call to the feature service endpoint and get all the features back as JSON response. As Esri GeoJSON is different from the common one, you need to translate the JSON response to the standard GeoJSON format, and then add to the feature collection in google maps Data Layer and apply styles.
This works if you have simple datasets. However if it is complex large polygon datasets, it will be causing network traffic when making the call. Also Google maps data layer always have performance issue when dealing with large dataset.
I recommend to use dojo/esri js API to develop the app if the data is hosted with ArcGIS server. It just doesn't make sense to buy both licenses for visualization.
Another option is to enable your ArcGIS online data to serve WMS layer too. Through that way your developer can use google maps overlay layer to overlay tiles from ArcGIS online. You can also make standard XMl request to the WMS service to get feature information.
Ok. You can convert to GeoJSON, but you're right, there's some big performance issues.
I found the easiest solution to the problem was to rewrite all our Google Maps API using ESRI Leaflet.
https://esri.github.io/esri-leaflet/
Leaflet is much easier to implement than the standard ESRI API. Didn't take long to rewrite and have the same functionality.

Best opensource maps solution for java dynamic application similar to bing maps

I would like to use maps in my web application to plot various points.
Which one should i use google maps or bing or some other?
Using bing maps is free??
I expect a free solution.
Is there any that i can use?
Thanks.
The only one that I know of that's actually Open Source as specified is Open Street Map: http://www.openstreetmap.org/. The map tiles are generated in a crowd sourced manner, and the entire dataset is free to download/play with.
You'll need a seperate data interaction layer (unlike Google Maps or Bing), the best I know of is OpenLayers: http://openlayers.org/ again, open source and free to use/fiddle with as you will.

Stored Map Like Google Maps or OpenLayers

Is Their anything like stored maps from where I can get Latitude/Longitude from address and vice versa. Like a database file or something else other than web based services so that I will not have to be connected over Internet while calculating address from Latitude/Longitude and Counter-wise.
Thank You
EDIT : Just to be clear. We use Google API's to find out Routes between two Geo-Locations I need the Same Feature.
Nominatim ? [1] It’s one of the source for the OSM home page.
Source code is on github [2].
1: http://wiki.openstreetmap.org/wiki/Nominatim
2: https://github.com/twain47/Nominatim
EDIT: I didn’t understand correctly. You can checkout OSRM : http://project-osrm.org/
Maybe you can check out Navit it is an open source offline routing and navigation application. They have a wiki over here which also explains a bit about routing.
I have not tried the application, but one of the features mentioned in the wiki is "adress and POI search".
There are several means of contact mentioned in their wiki as well, if you want to ask them about how they did.
You might also want to check out this list to find other interesting apps that provide offline map storage, routing and/or offline address search http://wiki.openstreetmap.org/wiki/Software/Desktop
This looks interesting as well: OSM Automated Navigation Directions.

How do I use my own maps instead of google maps?

Is it possible to use my own map instead of google maps for my app. How can I do that...Where should I look?
I think you need Open Street Maps (OSM). I have a little GPS app (Maverick Pro) on my Droid, and it can use 3 types of maps: google, bing, and "OSM". The latter seems to be what you need:
http://wiki.openstreetmap.org/wiki/Main_Page
You would need a few things:
A source for data about your geography, in the US see the TIGER Line data published by the Census Bureau.
Software to render the geo data into maps that are visually meaningful, for example Mapnik. Use something like OpenLayers to generate the
movability and nice user features people expect.
Software to deliver the rendered maps efficiently to your users, ie TileCache.
There is a nice summary of this FOSS approach here: http://m.alistapart.com/articles/takecontrolofyourmaps
You may want to check out MapTiler, an open source map tiling tool for Google Maps (and other mapping systems) which runs on Windows and Mac OS X.
MapTiler will automate the tiling process for you through a simple GUI wizard, and in addition, once the tiling process is finished, it will also generate a simple HTML viewer where you can see the results immediately.
Custom Map Tile Overlays are quite an advanced topic in the Google Maps API (even the documentation will warn you in red about this). However, I am sure you will be able to use and understand the HTML viewer of MapTiler.
PostGIS, Geoserver, GeoWebCache, OpenLayers, + GeoEXT gets you all the software you need.
Data is up to you and some of the examples above are good ideas.