【问题标题】:canvas draw line in android在android中画布画线
【发布时间】:2012-12-08 04:00:45
【问题描述】:

大家好,我正在尝试在地图上的两点之间绘制折线,但是当我运行我的方法时,它会给出下面列出的错误。我已将错误范围缩小到:

canvas.drawLine(p1.x, p1.y, p2.x, p2.y, mPaint);

这是我的班级正在尝试画画

package com.example.hellogooglemap;

class MyOverlay extends Overlay{
  private Projection projection;
  Paint mPaint;
  Context mContext;
  List<GeoPoint> gpList;


public MyOverlay(List<GeoPoint> geopointList, Context context) {
      super();
      mContext = context;
      gpList = geopointList;

      Paint   mPaint = new Paint();
      mPaint.setARGB(255, 10, 10, 255);
      mPaint.setAntiAlias(true);
      mPaint.setFakeBoldText(true); 

        //Toast.makeText(mContext, gpList.get(0).toString() , Toast.LENGTH_SHORT).show();
}

@Override
public void draw(Canvas canvas, MapView mapv, boolean shadow){  
    projection = mapv.getProjection();

    Point p1 = new Point();
    Point p2 = new Point();        

    projection.toPixels(gpList.get(0), p1);
    projection.toPixels(gpList.get(1), p2);

    canvas.drawLine(p1.x, p1.y, p2.x, p2.y, mPaint);        

    super.draw(canvas, mapv, shadow);
    }

}  

这里是错误

12-08 03:50:05.559: E/AndroidRuntime(1804): FATAL EXCEPTION: main
12-08 03:50:05.559: E/AndroidRuntime(1804): java.lang.NullPointerException
12-08 03:50:05.559: E/AndroidRuntime(1804):     at android.graphics.Canvas.drawLine(Canvas.java:876)
12-08 03:50:05.559: E/AndroidRuntime(1804):     at com.example.hellogooglemap.MyOverlay.draw(MyOverlay.java:56)
12-08 03:50:05.559: E/AndroidRuntime(1804):     at com.google.android.maps.Overlay.draw(Overlay.java:179)
12-08 03:50:05.559: E/AndroidRuntime(1804):     at com.google.android.maps.OverlayBundle.draw(OverlayBundle.java:42)
12-08 03:50:05.559: E/AndroidRuntime(1804):     at com.google.android.maps.MapView.onDraw(MapView.java:532)
12-08 03:50:05.559: E/AndroidRuntime(1804):     at android.view.View.draw(View.java:13707)
12-08 03:50:05.559: E/AndroidRuntime(1804):     at android.view.View.draw(View.java:13591)
12-08 03:50:05.559: E/AndroidRuntime(1804):     at android.view.ViewGroup.drawChild(ViewGroup.java:2928)
12-08 03:50:05.559: E/AndroidRuntime(1804):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2797)
12-08 03:50:05.559: E/AndroidRuntime(1804):     at android.view.View.draw(View.java:13589)
12-08 03:50:05.559: E/AndroidRuntime(1804):     at android.view.ViewGroup.drawChild(ViewGroup.java:2928)

任何帮助将不胜感激。我已经坚持了很长一段时间了。

【问题讨论】:

    标签: android google-maps android-canvas google-maps-api-2 google-polyline


    【解决方案1】:

    在这一行:

    Paint   mPaint = new Paint();
    

    您正在分配给一个局部变量,而不是一个类。只需删除领先的“油漆”

    mPaint = new Paint();
    

    【讨论】:

      【解决方案2】:

      也许你可以试试Google Maps Android API v2,因为 v1 已弃用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-24
        • 2019-06-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-24
        相关资源
        最近更新 更多