2010-02-17 27 views
4

當我擴展MapActivity類時,它顯示一個錯誤。android中的MapActivity類?

錯誤是: 無法解析數據類型。爲什麼?

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

謝謝。

回答

9

您可能還沒有按照Maps External API Overview中所述完成設置Google地圖項目所需的步驟。沒有maps.jar來添加。閱讀我鏈接到的文檔,你應該全部設置。

-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

+0

除了使用'MapActivity'類之外,這與這個問題有何關係? – BoltClock 2012-09-26 10:26:40

+0

@Praveen想創建地圖活動,我提供完整的源代碼。現在只需忽略所有錯誤。 – 2012-09-26 11:13:54

+1

你不應該在答案中提供完整的源代碼。這並不能回答這個問題。 – BoltClock 2012-09-26 11:15:00