Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我可以扩展覆盖类吗?_Java_Android_Osmdroid_Openstreetmap - Fatal编程技术网

Java 我可以扩展覆盖类吗?

Java 我可以扩展覆盖类吗?,java,android,osmdroid,openstreetmap,Java,Android,Osmdroid,Openstreetmap,我已经创建了一个类来扩展Osmdroid(CustomOverlay.java)中的Overlay类。但是,在我调用使用CustomOverlay.java的主活动上的方法createMark()后,地图上没有显示任何内容。我不想使用ItemizeOverlay类 有什么想法吗 CustomOverlay.java(扩展覆盖的类) 这是我在主活动中调用的方法: private void createMarker() { List<Overlay> mapOverlays

我已经创建了一个类来扩展Osmdroid(CustomOverlay.java)中的Overlay类。但是,在我调用使用CustomOverlay.java的主活动上的方法createMark()后,地图上没有显示任何内容。我不想使用ItemizeOverlay类

有什么想法吗

CustomOverlay.java(扩展覆盖的类)

这是我在主活动中调用的方法:

  private void createMarker() {
    List<Overlay> mapOverlays = mMapView.getOverlays();
    Overlay c = new CustomOverlay(this);
    mapOverlays.add(c);
    mMapView.invalidate();

}

以下是自定义覆盖的框架:

public class MyItemizedOverlay extends ItemizedOverlay<OverlayItem> {

  private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();

  public MyItemizedOverlay(Drawable defaultMarker) {
    super(boundCenterBottom(defaultMarker));
  }

  protected OverlayItem createItem(int i) {
    return mOverlays.get(i);
  }

  @Override
  public int size() {
    return mOverlays.size();
  }

  public void removeAllOverlay() {
    mOverlays.clear();
  }

  public void addOverlay(OverlayItem overlay) {
    mOverlays.add(overlay);
    populate();
  }
}
公共类MyItemizeOverlay扩展了ItemizeOverlay{
private ArrayList mOverlays=new ArrayList();
公共MyItemizedOverlay(可绘制的默认标记){
super(boundCenterBottom(defaultMarker));
}
受保护的OverlayItem createItem(int i){
返回mOverlays.get(i);
}
@凌驾
公共整数大小(){
返回mOverlays.size();
}
公共无效删除Alloverlay(){
mOverlays.clear();
}
公共void addOverlay(OverlayItem overlay){
添加(覆盖);
填充();
}
}
看到区别了吗?你的populate()调用在哪里? 希望这有帮助

    @Override
protected void draw(Canvas canvas, MapView mapView, boolean shadow) {

    Point screenPoint = new Point();   
    mapView.getProjection().toPixels(geoPoint, screenPoint);

    Bitmap marker= BitmapFactory.decodeResource(mapView.getResources(), R.drawable.marker);            
    canvas.drawBitmap(marker, screenPoint.x, screenPoint.y, null); 

}
public class MyItemizedOverlay extends ItemizedOverlay<OverlayItem> {

  private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();

  public MyItemizedOverlay(Drawable defaultMarker) {
    super(boundCenterBottom(defaultMarker));
  }

  protected OverlayItem createItem(int i) {
    return mOverlays.get(i);
  }

  @Override
  public int size() {
    return mOverlays.size();
  }

  public void removeAllOverlay() {
    mOverlays.clear();
  }

  public void addOverlay(OverlayItem overlay) {
    mOverlays.add(overlay);
    populate();
  }
}