android中的MapActivity类?

时间:2010-02-17 16:44:35

标签: android android-emulator

当我扩展MapActivity类时,它显示错误。

错误是: 无法解析数据类型。为什么呢?

如何在我的项目中添加maps.jar?

感谢。

3 个答案:

答案 0 :(得分:9)

您可能没有完成设置地图项目所需的步骤,如Maps External API Overview中所述。没有要添加的maps.jar。阅读我链接到的文档,您应该已经完成​​所有设置。

答案 1 :(得分:0)

谷歌地图视图: Creating a Map Activity

答案 2 :(得分:-1)

这是我的代码:

    import java.io.IOException;
    import java.util.List;
    import java.util.Locale;

    import android.content.Context;
    import android.graphics.Canvas;
    import android.location.Address;
    import android.location.Geocoder;
    import android.location.Location;
    import android.location.LocationListener;
    import android.location.LocationManager;
    import android.os.Bundle;
    import android.widget.Toast;

    import com.google.android.maps.GeoPoint;
    import com.google.android.maps.MapActivity;
    import com.google.android.maps.MapController;
    import com.google.android.maps.MapView;
    import com.google.android.maps.Overlay;

    public class MyMapsActivity extends MapActivity 
    {    

            MapView mapView;
        MapController mapController;
        LocationManager locationManager;
        LocationListener locationListener;
            /** 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);
                    // enable Street view by default
                    mapView.setStreetView(true);

                    // enable to show Satellite view
                   // mapView.setSatellite(true);

                  // enable to show Traffic on map
                   // mapView.setTraffic(true);

                    mapView.setBuiltInZoomControls(true);

                    mapController = mapView.getController();
                    mapController.setZoom(5); 


       locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);  

       locationListener = new GPSLocationListener();

       locationManager.requestLocationUpdates(
      LocationManager.GPS_PROVIDER, 
      0, 
      0, 
      locationListener);

    Touchy t = new Touchy();
    List<Overlay> overlayList = mapView.getOverlays();
    overlayList.add(t);

}
@Override
protected boolean isRouteDisplayed() {
    // TODO Auto-generated method stub
    return false;
}


class Touchy extends Overlay
{
 public boolean onTap(GeoPoint point, MapView mapView) 
     {
       Context contexto = mapView.getContext();
       String msg = "Latitude : " + point.getLatitudeE6()/1E6 + " - " + 
                    "Longitude : " + point.getLongitudeE6()/1E6;

      Toast toast = Toast.makeText(contexto, msg, Toast.LENGTH_SHORT);
     toast.show();

      return true;
     }
  }


   private class GPSLocationListener implements LocationListener 
   {
    public void onLocationChanged(Location location)
    {
    if (location != null)
    {
      GeoPoint point = new GeoPoint(
          (int) (location.getLatitude() * 1E6), 
          (int) (location.getLongitude() * 1E6));

      Toast.makeText(getBaseContext(), 
          "Latitude: " + location.getLatitude() + 
          " Longitude: " + location.getLongitude(), 
          Toast.LENGTH_SHORT).show();

      mapController.animateTo(point);
      mapController.setZoom(5);
      mapView.invalidate();
    }

      if (location != null)
      {
          GeoPoint point=null;
          String address = ConvertPointToLocation(point);
          Toast.makeText(getBaseContext(), address, Toast.LENGTH_SHORT).show();

       }


    }

  public String ConvertPointToLocation(GeoPoint point) {   
        String address = "";
        Geocoder geoCoder = new Geocoder(
            getBaseContext(), Locale.getDefault());
        try {
          List<Address> addresses = geoCoder.getFromLocation(
            point.getLatitudeE6()  / 1E6, 
            point.getLongitudeE6() / 1E6, 1);

          if (addresses.size() > 0) {
            for (int index = 0; 
        index < addresses.get(0).getMaxAddressLineIndex(); index++)
              address += addresses.get(0).getAddressLine(index) + " ";
          }
        }
        catch (IOException e) {        
          e.printStackTrace();
        }   

        return address;
      }

public void onProviderDisabled(String provider) {
    // TODO Auto-generated method stub

}

public void onProviderEnabled(String provider) {
    // TODO Auto-generated method stub

}

public void onStatusChanged(String provider, int status, Bundle extras) {
    // TODO Auto-generated method stub

} 
  }

public void onProviderDisabled(String provider) {
    // TODO Auto-generated method stub

}

public void onProviderEnabled(String provider) {
    // TODO Auto-generated method stub

}

public void onStatusChanged(String provider, int status, Bundle extras) {
    // TODO Auto-generated method stub

}
}

布局编码:

   <?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="Your MAP API Key"

    />

   <LinearLayout android:id="@+id/zoom" 
                 android:layout_width="wrap_content" 
                 android:layout_height="wrap_content" 
                 android:layout_alignParentBottom="true" 
                 android:layout_centerHorizontal="true" 
    />

    </RelativeLayout>

获取自己的API密钥流程的链接:

http://sanathnandasiri.blogspot.in/2011/04/obtaining-google-maps-api-key-for.html