JavaME: Google Static Maps API
When writing this post, I realized there is some license restrictions in the use of Google Static Maps API in mobile Apps… I am posting it anyway just for research purposes, but I must warn you about this restriction:
http://code.google.com/intl/en/apis/maps/faq.html#mapsformobile
Google Static Maps API Quick Review
This API lets you get an Image based on a URL and several parameters you can pass in to obtain a personalized map. You can play with the zoom, type of map, size of the image (width, height), markers at locations of the map, etc. There is a limit you have to keep in mind, the use of the API is subject to a query limit of 1000 unique (different) image requests per viewer per day, which is a lot of images… but if you need more, there is also a Premium license. For more information:
http://code.google.com/intl/en/apis/maps/documentation/staticmaps/
OK, what we do is the following:
- Create a method that receives a latitude and longitude point and the size of the image as parameters.
- Request the map image using the URL: http://maps.googleapis.com/maps/api/staticmap, and adding some parameters.
- Create an Image object and return it, so we can show it on screen.
Hands on Lab
Following is the method we were talking about. It has parameters for the latitude and longitude, and also for the width and height of the image we are requesting. The latitude and longitude can be retrieved using Location API, and the width and height can be retrieved using the Canvas class.
public Image getMap(double lat, double lon, int width, int height) throws IOException { String url = "http://maps.google.com/maps/api/staticmap"; url += "?zoom=15&size=" + width + "x" + height; url += "&maptype=roadmap"; url += "&markers=color:red|label:A|" + lat + "," + lon; url += "&sensor=true"; HttpConnection http = (HttpConnection) Connector.open(url); InputStream in = null; byte[] imgBytes = null; try { http.setRequestMethod(HttpConnection.GET); in = http.openInputStream(); ByteArrayOutputStream bos = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int n = 0; while ((n = in.read(buffer)) != -1) { bos.write(buffer, 0, n); } imgBytes = bos.toByteArray(); } finally { if (in != null) { in.close(); } http.close(); } Image img = Image.createImage(imgBytes, 0, imgBytes.length); return img; }
As you may see, it is pretty simple to get the image of the map. The retrieving is pure HTTP request.
Next you can find an image retrieved by Google Static Maps from a location in my home town.
OK, you just saw how simply it would be if no restriction exists… What do you think about that restriction? It’s kind of confusing, isn’t it?
Anyway, we are going to need to find another way to show maps on our mobile apps.
Reference: Google Static Maps API and JavaME from our JCG partner Alexis Lopez at the Java and ME blog.
how to use google map in java SE as this example
plz..help mee
luckyash.madu@gmail.com