Working with Google Android’s Maps (aka Search for Pizza)
Here’s some sample code to zoom in/out, switch on traffic/satellite images. Note that the MapView stuff is not fleshed out yet!! Hence lots of undocumented stuff that is likely to change.
package org.apache.maps;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.Point;
import com.google.googlenav.Placemark;
import com.google.googlenav.Search;
import com.google.googlenav.map.Map;
import com.google.googlenav.map.MapPoint;
import com.google.googlenav.map.Zoom;
public class BrowseMap extends MapActivity {
private MapView mMapView;
private String LOG_TAG = "BrowseMap";
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
mMapView = new MapView(this);
// Use Yahoo Geo code to find the lat/long.
// Click on the Sample Request URL here for example
// http://developer.yahoo.com/maps/rest/V1/geocode.html
Point p = new Point((int) (37.416402 * 1000000), (int)
(-122.025078 * 1000000));
MapController mc = mMapView.getController();
mc.animateTo(p);
mc.zoomTo(9);
setContentView(mMapView);
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_I) {
// Zoom In
int level = mMapView.getZoomLevel();
mMapView.getController().zoomTo(level + 1);
return true;
} else if (keyCode == KeyEvent.KEYCODE_O) {
// Zoom Out
int level = mMapView.getZoomLevel();
mMapView.getController().zoomTo(level - 1);
return true;
} else if (keyCode == KeyEvent.KEYCODE_S) {
// Switch on the satellite images
mMapView.toggleSatellite();
return true;
} else if (keyCode == KeyEvent.KEYCODE_T) {
// Switch on traffic overlays
mMapView.toggleTraffic();
return true;
} else if (keyCode == KeyEvent.KEYCODE_P) {
// W00t! Search for Pizza.
// Create a MapPoint from the map's coordinates
MapPoint mapPoint = new MapPoint(mMapView.getMapCenter().getLatitudeE6(),
mMapView.getMapCenter().getLongitudeE6());
// Create a dummy Map for use in Search
Map map = new Map(getDispatcher(), null, 0, 0, 0, mapPoint,
Zoom.getZoom(mMapView.getZoomLevel()), 0);
// Search for Pizza near the specified coordinates
Search search = new Search("Pizza", map, 0);
// add the request the dispatcher
getDispatcher().addDataRequest(search);
// Wait for the search to complete, Should do this
// in another thread ideally, this is just for illustration here.
while (!search.isComplete()) {
Log.i(LOG_TAG, ".");
}
// Print the details.
Log.i(LOG_TAG, "Done - " + search.numPlacemarks());
MapPoint point = null;
for (int i = 0; i < search.numPlacemarks(); i++) {
Placemark placemark = search.getPlacemark(i);
point = placemark.getLocation();
Log.i(LOG_TAG, " - i : " + Integer.toString(i));
Log.i(LOG_TAG, "- Bubble : " + placemark.getBubbleDescriptor());
Log.i(LOG_TAG, "- Detail : " + placemark.getDetailsDescriptor());
Log.i(LOG_TAG, "- Title : " + placemark.getTitle());
Log.i(LOG_TAG, "- Location : " + placemark.getLocation().toString());
Log.i(LOG_TAG, "- routable : " + placemark.routableString());
}
// Animate to the last location.
if (point != null) {
MapController mc = mMapView.getController();
Point point1 = new Point(point.getLatitude(), point.getLongitude());
mc.animateTo(point1);
mc.zoomTo(12);
Log.i("animateTo", point1.toString());
}
return true;
}
return false;
}
}
Here’s the complete zip
http://people.apache.org/~dims/android/BrowseMap.zip
[...] [working-with-google-androids-maps-aka-search-for-pizza]-Working with Google Android’s Maps FYI, [link] [...]
[working-with-google-androids-maps-aka-search-for-pizza]-Working with Google Android’s Maps « Malnews3’s Weblog
November 16, 2007 at 3:17 am
[...] have already made sample applications. This is a good thing because early adopters make the current buzz even stronger. Now, if these [...]
that’s great… » android says, “hello world”…
November 16, 2007 at 11:20 am
Good work! Just curious, where did you get the api doc for com.google.googlenav.*? I couldnt find the javadoc on code.google.com
cheers
raja
raja
November 20, 2007 at 11:39 am
[...] http://davanum.wordpress.com/2007/11/15/ (Cet exemple ci montre comment trouver des pizza avec un GPhone
) [...]
Helyx Weblog » Blog Archive » Première contributions et démos intéressantes pour Android
November 21, 2007 at 4:15 pm
[...] the weekend, he released his BrowseMap 2.0 sample code for using Overlay to draw Starbucks locations onto a map, as an update to his earlier BrowseMap [...]
Tutorials: TwitterClient and BrowseMap 2.0 | Android Notes
November 23, 2007 at 12:38 pm
Hi, I am from Kanpur, i am behind the proxy and it will ask authentication. My port number is: 3128.
Why am tell all these things is , I can’t open map application which is given by emulator itself.
I have read one article in Google group; it says that, In India Map application will not open without proxy tunnel and proxifire. Is it true?
I set Http Proxy settings using following sqlite3 Command,
adb shell sqlite3 /data/data/com.google.android.providers.settings/databases/settings.db “\” insert into system values(99,’http_proxy’,’proxy.com:3128’);\””
I set User Name and password using following command,
adb shell sqlite3 /data/data/com.google.android.browser/databases/browser.db “\” insert into password values(99,’username’,’passwords’);\””
Can you help me solve this problem?
Regards,
Venkat.
Venkat
December 28, 2007 at 1:50 pm
Do you know how to incorporate driving directions into your program? If so, can you tell me how?
Thanx a million,
Tarek
December 30, 2007 at 5:32 pm
Search snippet shown in this sample only returns 9 results. How do I get results updated for 2nd set of 9 results? (i.e. beyond the 1st 9 results returned.)
I still can’t find any documentation on com.google.googlenav.*
Jay Kim
January 16, 2008 at 2:23 am
Davanum,
I wonder if this has been changed in latest SDK? or Android team is trying to prevent such actions.
I’ve got the latest SDK from dec 14th. and whenever i create a dummy map for the search, it always has inside MapPoint set to (36.149777,-95.993398), without considering the point that i pass in. I’ve tried your coordinates, palo alto… doesn’t work, the default map is always created with the above location.
Has anyone got it working?
Alexey
January 25, 2008 at 2:56 am
Hi,
its vey useful code give by you.
Could please provide me the API reference for com.google.googlenav as i did not find it.
Thanks in advance
Kishor
kishor
February 4, 2008 at 6:45 am
Placemark is not present in com.google.googlenav
rahul
March 9, 2008 at 12:54 pm
Hi guys,
I could not find “com.google.googlenav.Search”.
Can anyone please tell me where I can find googlenav.Search
Thanks
Chris
Chris Sammut
April 13, 2008 at 5:57 am
Hi,
Thanks a lot for the wonderful and useful information. I was trying to access the zip file but could not download the same from the site. Could you please provide me the same.
Thanks,
Sid
Sidhartha
September 16, 2008 at 12:49 am
I am finding some problems in compiling the code. What version of android SDK to be used??
Ellen
November 1, 2008 at 11:04 pm
The link to download the zip file is not working. Can anyone please send it to me at sagar AT gatech DOT edu
Thanks
Sag
November 29, 2008 at 5:57 pm