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.
Related
I help develop a desktop app that displays map information with various layers on top. Now we want to add the Google Maps traffic layer. We do have a developer API key.
How can I use the Google API without a website, to generate just the data layer I need and download it in KML or GeoRSS or any other format so I can use it in the desktop app on top of my own map?
We already use the distance matrix, geocode, and directions API. Is there a traffic API as well, or are traffic data only available for embedding on a website?
Traffic data is not available as separate API. You can only use TrafficLayer of Maps JavaScript API or Android SDK.
There is a feature request in Google issue tracker to expose these data as an API:
https://issuetracker.google.com/issues/36537583
However, it looks like Google didn't set high priority on this task. Feel free to star the feature request to add your vote and subscribe to notifications from Google.
I hope my answer clarifies your doubt.
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.
I am using http url to show map in J2ME application but it takes more time as it draws image on each refresh. since internet speed is bit slow in GPRS.
Is there any core Google Map API for J2ME??
Is com.jappit.midmaps.googlemaps.GoogleMaps is Authorized Google Map Library for J2ME Application??
Waiting for your reply.
Regards,
Parmanand
No, there is not a core Google Map API for J2ME. No, the Jappit library is not an official authorised product, though it was a good attempt a mapping library based on the technology available at the time.
The reason the update of the map is so slow in the Jappit library, is that the underlying static mapping service behind it is not well suited to refreshing and updating a dynamic map.
Every time the map is shifted or updated, an image the size of the screen is downloaded leading to a large amount of data traffic. A better solution can be found in using a map tile service, implement aggressive image caching and adding overlay objects on top of it. Basically doing everything to avoid downloading more images.
So in summary use a web service like the Static Maps API, if all you need is a single map image. Use a dedicated Java ME mapping library such as the HERE Maps API for Java ME if you want a responsive dynamic map.
As a notice of affiliation, I should mention that I do work for Nokia.
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
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.