当前位置: 代码迷 >> Android >> android使用google 地图 api详解
  详细解决方案

android使用google 地图 api详解

热度:58   发布时间:2016-05-01 16:48:34.0
android使用google map api详解

To use the Google Maps in your Android application, you need to modify your?AndroidManifest.xml?file by adding the<uses-library>?element together with the?INTERNET?permission:

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"      package="net.learn2develop.GoogleMaps"      android:versionCode="1"      android:versionName="1.0.0">    <application android:icon="@drawable/icon" android:label="@string/app_name">?    <uses-library android:name="com.google.android.maps" />  ?        <activity android:name=".MapsActivity"                  android:label="@string/app_name">            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>    </application>?    <uses-permission android:name="android.permission.INTERNET" />?</manifest></xml>

?

Displaying the Map

To display the Google Maps in your Android application, modify the?main.xml?file located in the?res/layout?folder. You shall use the?<com.google.android.maps.MapView>?element to display the Google Maps in your activity. In addition, let's use the?<RelativeLayout>?element to position the map within the activity:

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_width="fill_parent"     android:layout_height="fill_parent">?    <com.google.android.maps.MapView         android:id="@+id/mapView"        android:layout_width="fill_parent"        android:layout_height="fill_parent"        android:enabled="true"        android:clickable="true"        android:apiKey="0l4sCTTyRmXTNo7k8DREHvEaLar2UmHGwnhZVHQ"        />?</RelativeLayout>

?

Notice from above that I have used the Google Maps key that I obtained earlier and put it into the?apiKey?attribute.

In the?MapsActivity.java?file, modify the class to extend from the?MapActivity?class, instead of the normal?Activityclass:

package net.learn2develop.GoogleMaps;?import com.google.android.maps.MapActivity;import com.google.android.maps.MapView;import android.os.Bundle;?public class MapsActivity extends MapActivity {        /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState)    {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);    }?    @Override    protected boolean isRouteDisplayed() {        return false;    }}

?

Observe that if your class extends the?MapActivity?class, you need to override the?isRouteDisplayed()?method. You can simply do so by setting the method to return false.

That's it! That's all you need to do to display the Google Maps in your application. Press?F11?in Eclipse to deploy the application onto an Android emulator. Figure 3 shows the Google map in all its glory.


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?AndroidManifest.xml?file:

    <uses-library android:name="com.google.android.maps" />

?

If your application manages to load but you cannot see the map (all you see is a grid), then it is very likely you do not have a valid Map key, or that you did not specify the?INTERNET?permission:

    <uses-permission android:name="android.permission.INTERNET" />

?

Displaying the Zoom View

The previous section showed how you can display the Google Maps in your Android device. You can drag the map to any desired location and it will be updated on the fly. However, observe that there is no way to zoom in or out from a particular location. Thus, in this section, you will learn how you can let users zoom into or out of the map.

First, add a?<LinearLayout>?element to the?main.xml?file as shown below:

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_width="fill_parent"     android:layout_height="fill_parent">?    <com.google.android.maps.MapView         android:id="@+id/mapView"        android:layout_width="fill_parent"        android:layout_height="fill_parent"        android:enabled="true"        android:clickable="true"        android:apiKey="0l4sCTTyRmXTNo7k8DREHvEaLar2UmHGwnhZVHQ"        />?    <LinearLayout android:id="@+id/zoom"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:layout_alignParentBottom="true"         android:layout_centerHorizontal="true"         /> ?</RelativeLayout>

?

You will use the?<LinearLayout>?element to hold the two zoom controls in Google Maps (you will see this shortly).

In the?MapsActivity.java?file, add the following imports:

import com.google.android.maps.MapView.LayoutParams;  import android.view.View;import android.widget.LinearLayout;

and add the following code after the line?setContentView(R.layout.main);

        mapView = (MapView) findViewById(R.id.mapView);        LinearLayout zoomLayout = (LinearLayout)findViewById(R.id.zoom);          View zoomView = mapView.getZoomControls(); ?        zoomLayout.addView(zoomView,             new LinearLayout.LayoutParams(                LayoutParams.WRAP_CONTENT,                 LayoutParams.WRAP_CONTENT));         mapView.displayZoomControls(true);

The complete?MapsActivity.java?file is given below:

package net.learn2develop.GoogleMaps;?import com.google.android.maps.MapActivity;import com.google.android.maps.MapView;import com.google.android.maps.MapView.LayoutParams;  ?import android.os.Bundle;import android.view.View;import android.widget.LinearLayout;?public class MapsActivity extends MapActivity {        MapView mapView; ?    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState)     {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);??        mapView = (MapView) findViewById(R.id.mapView);        LinearLayout zoomLayout = (LinearLayout)findViewById(R.id.zoom);          
  相关解决方案