4

我想 import com.google.android.maps.MapActivity; import com.google.android.maps.MapController; import com.google.android.maps.MapView; 在我的 mainactivity.java中导入这些包

但是 Eclipse 无法解析这些包,我也不知道这是什么原因。

我已经按照我在电子书上找到的所有说明一步一步地了解如何在您的应用程序中导入地图,并且没有提到这个错误。

这是我的文件:

////////// MainActivity.java //////////////////

package com.paad.whereami;

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

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

import android.app.Activity;
import android.content.Context;
import android.location.Address;
import android.location.Criteria;
import android.location.Geocoder;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;

public class MainActivity extends MapActivity {

//static final private int MENU_REFRESH = Menu.FIRST;

@Override
    protected boolean isRouteDisplayed() {
    return false;
}

private LocationManager locationManager;
private String provider;
private Location location;

private final LocationListener locationListener = new LocationListener() {
    public void onLocationChanged(Location location) {
        updateWithNewLocation(location);
    }
    public void onProviderDisabled(String provider){
        updateWithNewLocation(null);
    }
    public void onProviderEnabled(String provider){ }
    public void onStatusChanged(String provider, int status, Bundle extras){ }
};

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.map_layout);
        mapView = (MapView)findViewById(R.id.map_view);

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

        Criteria criteria = new Criteria();
        criteria.setAccuracy(Criteria.ACCURACY_FINE);
        criteria.setAltitudeRequired(false);
        criteria.setBearingRequired(false);
        criteria.setCostAllowed(true);
        criteria.setPowerRequirement(Criteria.POWER_LOW);
        provider = locationManager.getBestProvider(criteria, true);
        location = locationManager.getLastKnownLocation(provider);

    //Log.v("BEFORE", "Location is: " + location);
    updateWithNewLocation(location);
    //Log.v("AFTER", "LOCATION FOUND");
    locationManager.requestLocationUpdates(provider, 2000, 10, locationListener);
    }

    private void updateWithNewLocation(Location location){
        String latLongString;
        TextView myLocationText;
        myLocationText = (TextView)findViewById(R.id.myLocationText);

        String addressString = "No address found";

        if (location != null) {
        double lat = location.getLatitude();
        double lng = location.getLongitude();
        latLongString = "Lat:" + lat + "\nLong:" + lng;

        //double latitude = 73.147536;
        //double longitude = 0.510638;
        Geocoder gc = new Geocoder(this, Locale.getDefault());

        try {
            List<Address> addresses = gc.getFromLocation(lat, lng, 1);
            Log.v("TRY_BODY", "All addresses are: " + addresses);
            StringBuilder sb = new StringBuilder();
            if (addresses.size() > 0) {
                Log.v("IF_BODY", "All addresses are: " + addresses);
                Address address = addresses.get(0);
                for (int i = 0; i < address.getMaxAddressLineIndex(); i++){
                    sb.append(address.getAddressLine(i)).append("\n");
                    sb.append(address.getLocality()).append("\n");
                    sb.append(address.getPostalCode()).append("\n");
                    sb.append(address.getCountryName());
                }
                addressString = sb.toString();
            }
        } catch (IOException e) {}
        } 
        else {
        latLongString = "No location found";
        }

        myLocationText.setText("Current Pos:\n"+latLongString+"\n"+addressString);
    }

}

/////////// main.xml ///////////////

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
  <TextView  
    android:id="@+id/myLocationText"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"
  />

  <com.google.android.maps.MapView
android:id="@+id/myMapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:enabled="true"
android:clickable="true"
android:apiKey="@string/myMapKey"
/>

</LinearLayout>

///////////// Manifest.xml //////////////

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.paad.whereami"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="4"
        android:targetSdkVersion="15" />

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

        <application
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >

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

            <activity
                android:name=".MainActivity"
                android:label="@string/title_activity_main" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />

                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>

</manifest>

提前致谢。

4

2 回答 2

28

右键单击您的项目 ---> 属性 ---> android --> 选择目标名称 Google ApIs。并清理项目并构建项目。

于 2012-08-02T12:26:34.010 回答
3

在您的 Eclipse 项目中,检查您使用的是 google-15 而不是平台的 android-15,地图支持仅作为 google 插件包中的额外库提供。

于 2012-08-02T12:25:38.037 回答