从数据库中绘制图标

时间:2014-09-09 08:16:04

标签: java android eclipse

好吧我尝试在地图中从数据库中绘制图标...但我有空指针异常..

我这样做..

public enum icon { lake }

[...]      公共类POI实现Serializable      {      private static final long serialVersionUID = -8618762943599351669L;

private long id;
private String name;
private double longitude;
private double latitude;
private boolean visible = true;
public static  String icon;
private String info;

public POI(long id, String name, double longitude, double latitude, boolean visible, String icon, String info)
{
    this(id, name, longitude, latitude, visible, icon, info, true);
}

public POI(long id, String name, double longitude, double latitude, boolean visible, String icon, String info, boolean b)
{
    this.id = id;
    this.name = name;
    this.longitude = longitude;
    this.latitude = latitude;
    this.visible = visible;
    POI.icon = icon;
    this.info = info;
}

void initOverlays()
{
    Map<icon, Bitmap> markersIcons = new HashMap<icon, Bitmap>();
    Bitmap posMarker = BitmapFactory.decodeResource(getResources(), R.drawable.marker);
    Bitmap pathMarker = BitmapFactory.decodeResource(getResources(), R.drawable.dest);
    Bitmap church = BitmapFactory.decodeResource(getResources(), R.drawable.church); 
    TilesManager tilesManager = mapView.getTilesManager();



    tracksOverlay = new TracksOverlay(this, tilesManager);
    positionMarkerOverlay = new PositionMarkerOverlay(tilesManager, posMarker);
    markersIcons.put(icon.church, church); 
    poiOverlay = new POIOverlay(tilesManager, this,  markersIcons);


    pathOverlay = new PathOverlay(tilesManager, pathMarker);

    mapView.addOverlay(tracksOverlay);
    mapView.addOverlay(poiOverlay);
    mapView.addOverlay(positionMarkerOverlay);
    mapView.addOverlay(pathOverlay);

    StateManager.restoreTracksOverlayState(this, tracksOverlay);
    StateManager.restorePOIOverlayState(this, poiOverlay);
    StateManager.restorePathOverlayState(this, pathOverlay);
}

在我从数据库中绘制图标后,我进入&#34;湖&#34;在图标的柱子..

public POIOverlay(TilesManager tilesManager, Context context,Map<icon, Bitmap> poiMarker)
{
    super(tilesManager);

    this.context = context;

 this.setPoiMarker(poiMarker);
    textPaint.setColor(Color.BLACK);
    textPaint.setTextSize(15);
}

@Override
protected void drawOverlay(Canvas canvas, int x, int y)
{
    for (POI poi : points)
    {
        if (!poi.isVisible()) continue;

        Point poiPos = tilesManager.lonLatToPixelXY(poi.getLongitude(), poi.getLatitude());
        int finalX = poiPos.x + x;
        int finalY = poiPos.y + y;
        Bitmap marker = markersIcons.get(POI.icon);


        canvas.drawBitmap(marker, finalX - marker.getWidth() / 2, finalY - marker.getHeight() / 2, bitmapPaint); 
        canvas.drawText(poi.getName(), finalX - marker.getWidth() / 2, finalY, textPaint);
    }
}

但我有来自POI.icon的空指针我做断点调试和poi.icon是null无法从数据库读取字符串...为什么????需要帮助!!

0 个答案:

没有答案