1

嗨,我正在玩一个 android 地图应用程序教程,但我遇到了很多错误,因为我似乎没有正确导入 com.google.andoid.maps 包,因为 eclipse 给我一个导入错误及其任何错误类。有什么理由让它不应该工作。

import com.google.android.maps.*;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Window;

import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;


public class ShowTheMap extends MapActivity {

    private static double lat;
    private static double lon;
    private int latE6;
    private int lonE6;
    private MapController mapControl;
    private GeoPoint gp;
    private MapView mapView;

    private Button overlayButton, accessButton;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);  // Suppress title bar for more space
        setContentView(R.layout.showthemap);

        // Add map controller with zoom controls
        mapView = (MapView) findViewById(R.id.mv);
        mapView.setSatellite(false);
        mapView.setTraffic(false);
        mapView.setBuiltInZoomControls(true);   // Set android:clickable=true in main.xml

        int maxZoom = mapView.getMaxZoomLevel();
        int initZoom = maxZoom-2;

        mapControl = mapView.getController();
        mapControl.setZoom(initZoom);
        // Convert lat/long in degrees into integers in microdegrees
        latE6 =  (int) (lat*1e6);
        lonE6 = (int) (lon*1e6);
        gp = new GeoPoint(latE6, lonE6);
        mapControl.animateTo(gp);    

        // Button to control food overlay
        overlayButton = (Button)findViewById(R.id.doOverlay);
        overlayButton.setOnClickListener(new OnClickListener(){      
            public void onClick(View v) {   

            }
        });

        // Button to control access overlay
        accessButton = (Button)findViewById(R.id.doAccess);
        accessButton.setOnClickListener(new OnClickListener(){      
            public void onClick(View v) {   

            }
        });

    }

    // Method to insert latitude and longitude in degrees
    public static void putLatLong(double latitude, double longitude){
        lat = latitude;
        lon =longitude;
    }

    // This sets the s key on the phone to toggle between satellite and map view
    // and the t key to toggle between traffic and no traffic view (traffic view
    // relevant only in urban areas where it is reported).

    public boolean onKeyDown(int keyCode, KeyEvent e){
        if(keyCode == KeyEvent.KEYCODE_S){
            mapView.setSatellite(!mapView.isSatellite());
            return true;
        } else if(keyCode == KeyEvent.KEYCODE_T){
            mapView.setTraffic(!mapView.isTraffic());
            mapControl.animateTo(gp);  // To ensure change displays immediately
        }
            return(super.onKeyDown(keyCode, e));
    }

    // Required method since class extends MapActivity
    @Override
    protected boolean isRouteDisplayed() {
            return false;  // Don't display a route
    }
}
4

2 回答 2

1

您的项目不应基于“Android 4.2”,而是基于平台 4.2 的“Google API”。

这可以在您的项目属性 - Android - 项目构建目标中更改。

于 2013-02-18T15:12:33.813 回答
0

这听起来可能只是您缺少所需的软件包。确保在 Eclipse 中使用SDK Manager下载Google API

看看这个页面了解一些细节。https://developers.google.com/android/add-ons/google-apis/installing

该页面的一个快速片段提到了这类问题

选择您要安装的 Google APIs Add-On,​​然后单击 Install Selected。插件会下载到您的计算机并安装在您的 SDK 环境中。

当您准备好针对附加组件进行开发时。设置您的应用程序的属性,以便它使用 Google APIs Add-On 作为构建目标。要运行该应用程序,请创建一个使用附加组件作为目标的 Android 虚拟设备。确保选择适合您应用的版本(按 API 级别)。

要让您的应用程序访问附加组件中包含的地图库,您需要正确配置您的开发和运行时环境。地图概述文档中描述了执行此操作的过程,您应该接下来阅读该文档。

  1. 在 Eclipse 中打开SDK 管理器
  2. 查找您的 API 版本
  3. 选中Google Inc 的 Google API复选框
  4. 点击安装#个包
  5. 重启 Eclipse

例如

在此处输入图像描述

之后您要引用这些新包,因此您需要更改您的项目构建目标

  1. 右键单击您的项目
  2. 打开属性
  3. 转到Android部分
  4. 选中您要查找的 API 版本的Google API旁边的框

例如

在此处输入图像描述

于 2013-02-18T15:08:34.600 回答