读书人

转载map的使用

发布时间: 2012-09-11 10:49:03 作者: rapoo

转载地图的使用



?

?http://mobiforge.com/developing/story/using-google-maps-android

Google Maps is one of the many applications bundled with the Android platform. In addition to simply using the Maps application, you can also embed it into your own applications and make it do some very cool things. In this article, I will show you how to use Google Maps in your Android applications and how to programmatically perform the following:

    Change the views of Google MapsObtain the latitude and longitude of locations in Google MapsPerform geocoding and reverse geocodingAdd markers to Google Maps

?

Creating the Project

Using Eclipse, create a new Android project and name GoogleMaps as shown in Figure 1.


?
Figure 1 Creating a new Android project using Eclipse

Obtaining a Maps API key

Beginning with the Android SDK release v1.0, you need to apply for a free Google Maps API key before you can integrate Google Maps into your Android application. To apply for a key, you need to follow the series of steps outlined below. You can also refer to Google's detailed documentation on the process at http://code.google.com/android/toolbox/apis/mapkey.html.

First, if you are testing the application on the Android emulator, locate the SDK debug certificate located in the default folder of

Issue the following command (see also Figure 2) to extract the MD5 fingerprint.

Copy the MD5 certificate fingerprint and navigate your web browser to: http://code.google.com/android/maps-api-signup.html. Follow the instructions on the page to complete the application and obtain the Google Maps key.


?
Figure 2 Obtaining the MD5 fingerprint of the debug keystore

To use the Google Maps in your Android application, you need to modify your
?
Figure 3 Google Maps in your application

At this juncture, take note of a few troubleshooting details. If your program does not run (i.e. it crashes), then it is likely you forgot to put the following statement in your
?
Figure 4 Using the zoom controls in Google Maps

Using the zoom control, you can zoom in or out of a location by simply touching the "+ or "-" buttons on the screen.

Alternatively, you can also programmatically zoom in or out of the map using the
?
Figure 5 Displaying Google Maps in satellite and street views

Displaying a Particular Location

Be default, the Google Maps displays the map of the United States when it is first loaded. However, you can also set the Google Maps to display a particular location. In this case, you can use the
?
Figure 6 Navigating to a particular location on the map

Adding Markers

Very often, you may wish to add markers to the map to indicate places of interests. Let's see how you can do this in Android. First, create a GIF image containing a pushpin (see Figure 7) and copy it into the
?
Figure 7 Adding an image to the res/drawable folder

To add a marker to the map, you first need to define a class that extends the
?
Figure 8 Adding an image to the map

To add the marker, create an instance of the
?
Figure 9 Adding a marker to the map

Getting the Location that was touched

After using Google Maps for a while, you may wish to know the latitude and longitude of a location corresponding to the position on the screen that you have just touched. Knowing this information is very useful as you can find out the address of a location, a process known as Geocoding (you will see how this is done in the next section).

If you have added an overlay to the map, you can override the onTouchEvent() method within the
?
Figure 10 Displaying the latitude and longitude of a point touched on the map

Geocoding and Reverse Geocoding

If you know the latitude and longitude of a location, you can find out its address using a process known as Geocoding. Google Maps in Android supports this via the Geocoder class. The following code shows how you can find out the address of a location you have just touched using the getFromLocation() method:

    class MapOverlay extends com.google.android.maps.Overlay    {        @Override        public boolean draw(Canvas canvas, MapView mapView,         boolean shadow, long when)         {          //...        }?        @Override        public boolean onTouchEvent(MotionEvent event, MapView mapView)         {               //---when user lifts his finger---            if (event.getAction() == 1) {                                GeoPoint p = mapView.getProjection().fromPixels(                    (int) event.getX(),                    (int) event.getY());?                Geocoder geoCoder = new Geocoder(                    getBaseContext(), Locale.getDefault());                try {                    List<Address> addresses = geoCoder.getFromLocation(                        p.getLatitudeE6()  / 1E6,                         p.getLongitudeE6() / 1E6, 1);?                    color: #aaaad    1 楼    qianlei541    2011-11-15              very good 

读书人网 >移动开发

热点推荐