【问题标题】:MapView cannot be resolved or is not a fieldMapView 无法解析或不是字段
【发布时间】:2012-05-19 17:46:23
【问题描述】:

您好,我是 Android 编程和 Eclipse 的新手。我在以下程序中遇到错误“无法解析 MapView 或不是字段”:

   import java.util.List;

   import android.app.AlertDialog;
   import android.content.DialogInterface;
   import android.content.Intent;
   import android.graphics.Canvas;
   import android.graphics.Paint;
   import android.graphics.Point;
   import android.graphics.RectF;
   import android.location.Location;
   import android.os.Bundle;
   import android.view.MotionEvent;


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

public class Map extends MapActivity {

MapView map;
long start;
long stop;
private final int mRadius = 5;

public void onCreate(Bundle SavedInstanceState) {
    super.onCreate(SavedInstanceState);
    setContentView(R.layout.mapview);
    map = (MapView)findViewById(R.id.mvMapview);
    map.setBuiltInZoomControls(true);
    map.displayZoomControls(true);
    map.setSatellite(true);
    map.setStreetView(true);
    Touchy t = new Touchy();
    List<Overlay> overlaylist = map.getOverlays();
    overlaylist.add(t);

    }
    public void draw(Canvas canvas, MapView mapView, boolean shadow){
    Projection projection = mapView.getProjection();

    if (shadow == false) {
        Bundle extras = getIntent().getExtras();{
            if(extras!=null){
                String longitude =extras.getString("Longitude");
                String latitude =extras.getString("Latitude");
            }
        }

        double latitude;
        double longitude; 
        GeoPoint geoPoint;
        geoPoint = new GeoPoint((int) ( latitude *1E6), (int) (longitude * 1E6));

        Point point = new Point();
        projection.toPixels(geoPoint, point);
        RectF oval = new RectF(point.x - mRadius, point.y - mRadius, point.x + mRadius, point.y + mRadius);

        Paint paint = new Paint();
        paint.setARGB(250, 255, 255, 255);
        paint.setAntiAlias(true);
        paint.setFakeBoldText(true);

        Paint backPaint = new Paint();
        backPaint.setARGB(175, 50, 50, 50);
        backPaint.setAntiAlias(true);
        RectF backRect = new RectF(point.x + 2 + mRadius, point.y - 3*mRadius, point.x + 65, point.y + mRadius);

        canvas.drawOval(oval, paint);
        canvas.drawRoundRect(backRect, 5, 5, backPaint);
        canvas.drawText("This is it", point.x + 2*mRadius, point.y,paint);
}
    super.draw(canvas.MapView.shadow);      
}

我不知道为什么会弹出这个错误。 我已经尝试修复它,但地图视图错误总是存在

【问题讨论】:

  • 您是在模拟器中运行它吗?您是使用 Google API 创建的吗?
  • 获得了我的 google API...模拟器也运行良好...
  • draw 方法是你自己的还是你试图覆盖 onDraw 方法?
  • draw方法是我自己的。我将draw方法添加到Overlay中

标签: android android-sdk-2.3


【解决方案1】:

从 Eclipse 主菜单中选择项目 > 属性。在“属性”窗口中,单击左侧类别列表中的 Android。然后,在右侧的清单中选择包含 Google API 的构建目标。单击“确定”关闭窗口。

【讨论】:

  • 然后将 canvas.MapView.shadow 修复为正确的,因为该语法可能不正确。我怀疑您在有句点的地方需要逗号。
  • Ya...TQ 我认为它应该是逗号...但是现在出现另一个错误...它说“方法 draw(Canvas, MapView, boolean) 未定义 MapActivity 类型"... 我知道方法 draw 来自 Overlay 类型...
  • @SimonCheah:“有没有办法解决这个问题?” --您声称您将“绘制方法添加到叠加层中”,但您的代码中没有Overlay。有对Touchy 的引用,可能是Overlay,但我不知道是不是。也许你的draw() 实现应该在Touchy,而不是Map
  • 我的意思是,如果我将 (public class Map extends MapActivity) 更改为 (public class Map extends Overlay),错误就消失了,但编程的其他部分需要扩展 MapActivity...
  • @SimonCheah:编程新手在尝试进入 Android 开发之前应该学习 Java。
猜你喜欢
  • 2022-01-09
  • 2014-03-27
  • 2014-01-05
  • 2016-05-20
  • 2016-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多