Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.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
Android 仅显示最后一个覆盖项_Android_Android Maps_Itemizedoverlay - Fatal编程技术网

Android 仅显示最后一个覆盖项

Android 仅显示最后一个覆盖项,android,android-maps,itemizedoverlay,Android,Android Maps,Itemizedoverlay,我要做的是从一个xml文件中获取数据,然后使用一个定制的ItemizedOverlay添加这些项 public CustomItemizedOverlay callme(List<Places> result){ Drawable drawable = this.getResources().getDrawable(R.drawable.ic_launcher); latitudeE6 = result.get(i).latitude; longitud

我要做的是从一个xml文件中获取数据,然后使用一个定制的ItemizedOverlay添加这些项

public CustomItemizedOverlay callme(List<Places> result){

    Drawable drawable = this.getResources().getDrawable(R.drawable.ic_launcher);

    latitudeE6  = result.get(i).latitude;
    longitudeE6 = result.get(i).longitude;

    GeoPoint point = new GeoPoint(latitudeE6a, longitudeE6a);                               
    OverlayItem overlayitem = new OverlayItem(point, result.get(i).title, result.get(i).text);

    CustomItemizedOverlay itemizedOverlay = new CustomItemizedOverlay(drawable);

    itemizedOverlay.addOverlay(overlayitem);//add point

    i++;

    latitudeE6 =0;
    longitudeE6 =0;
    return itemizedOverlay;

}
public CustomItemizedOverlay callme(列表结果){
Drawable Drawable=this.getResources().getDrawable(R.Drawable.ic_启动器);
latitudeE6=结果。获取(i)。纬度;
longitudeE6=结果。获取(i)。经度;
地质点=新的地质点(latitudeE6a、LongtudeE6a);
OverlayItem OverlayItem=新的OverlayItem(点,结果.get(i).title,结果.get(i).text);
CustomItemizedOverlay itemizedOverlay=新的CustomItemizedOverlay(可绘制);
itemizedOverlay.addOverlay(overlayitem);//添加点
i++;
纬度6=0;
纵向6=0;
返回itemizedOverlay;
}
当我在UI线程上时,我使用While()循环打印:

int j=0;
List<Overlay> mapOverlays = mapView.getOverlays();

while( j < 5 ) {
    test1 = callme(result1);                                
    mapOverlays.add(test1);                                 

    j++;
} 

MapController mapController = mapView.getController();
mapController.setZoom(12);
intj=0;
List mapOverlays=mapView.getOverlays();
而(j<5){
test1=callme(result1);
添加(test1);
j++;
} 
MapController MapController=mapView.getController();
mapController.setZoom(12);
当j<5时,只需显示五项,循环停止。
问题是,它只显示xml数据中的最后一项。

您在
callme(List result)
方法中错过了
int i
的循环

更新:

List<Overlay> mapOverlays = mapView.getOverlays();

  for(int i=0;i<result1.size();i++)
   {
    Drawable drawable = this.getResources().getDrawable(R.drawable.ic_launcher);
    latitudeE6  = result1.get(i).latitude;
    longitudeE6 = result1.get(i).longitude;

    GeoPoint point = new GeoPoint(latitudeE6a,longitudeE6a);                                
    OverlayItem overlayitem = new OverlayItem(point, result1.get(i).title, result1.get(i).text);
    CustomItemizedOverlay itemizedOverlay = new CustomItemizedOverlay(drawable);           
    itemizedOverlay.addOverlay(overlayitem);        //add point

     mapOverlays.add(itemizedOverlay);  
    }           
    latitudeE6 =0;
    longitudeE6 =0;                     
MapController mapController = mapView.getController();
mapController.setZoom(12);
List mapOverlays=mapView.getOverlays();

对于(int i=0;i您在
callme(List result)
方法中错过了
int i
的循环

更新:

List<Overlay> mapOverlays = mapView.getOverlays();

  for(int i=0;i<result1.size();i++)
   {
    Drawable drawable = this.getResources().getDrawable(R.drawable.ic_launcher);
    latitudeE6  = result1.get(i).latitude;
    longitudeE6 = result1.get(i).longitude;

    GeoPoint point = new GeoPoint(latitudeE6a,longitudeE6a);                                
    OverlayItem overlayitem = new OverlayItem(point, result1.get(i).title, result1.get(i).text);
    CustomItemizedOverlay itemizedOverlay = new CustomItemizedOverlay(drawable);           
    itemizedOverlay.addOverlay(overlayitem);        //add point

     mapOverlays.add(itemizedOverlay);  
    }           
    latitudeE6 =0;
    longitudeE6 =0;                     
MapController mapController = mapView.getController();
mapController.setZoom(12);
List mapOverlays=mapView.getOverlays();
对于(int i=0;iStep1:
添加此java文件

public class MapItemizedOverlay extends ItemizedOverlay<OverlayItem>
{
public static boolean isRouteSelecting;
public static ArrayList<GeoPoint> geoPoints;

private GeoPoint geoPoint_;
private ArrayList<OverlayItem> overlayItems_ = new ArrayList<OverlayItem>();

public MapItemizedOverlay(Drawable defaultMarker)
{
    super(boundCenterBottom(defaultMarker));
    // TODO Auto-generated constructor stub
}

public void addOverlay(OverlayItem overlayItem)
{
    overlayItems_.add(overlayItem);
    populate();
}

@Override
protected OverlayItem createItem(int i)
{
    // TODO Auto-generated method stub
    return overlayItems_.get(i);
}

@Override
public int size()
{
    // TODO Auto-generated method stub
    return overlayItems_.size();
}
 }
公共类MapItemizeOverlay扩展了ItemizeOverlay
{
公共静态布尔路由选择;
公共静态阵列列表地质点;
私人地质点;
私有ArrayList overlayItems_u2;=新ArrayList();
public MapItemizeOverlay(可绘制的默认标记)
{
super(boundCenterBottom(defaultMarker));
//TODO自动生成的构造函数存根
}
公共void addOverlay(OverlayItem OverlayItem)
{
叠加项添加(叠加项);
填充();
}
@凌驾
受保护的OverlayItem createItem(int i)
{
//TODO自动生成的方法存根
返回覆盖项(i);
}
@凌驾
公共整数大小()
{
//TODO自动生成的方法存根
返回覆盖项的大小();
}
}
步骤2: 进入您的MapActivity…(oncreate)

mapItemizedOverlay_u=新的mapItemizedOverlay(可绘制);
对于(int i=0;i
步骤1: 添加此java文件

public class MapItemizedOverlay extends ItemizedOverlay<OverlayItem>
{
public static boolean isRouteSelecting;
public static ArrayList<GeoPoint> geoPoints;

private GeoPoint geoPoint_;
private ArrayList<OverlayItem> overlayItems_ = new ArrayList<OverlayItem>();

public MapItemizedOverlay(Drawable defaultMarker)
{
    super(boundCenterBottom(defaultMarker));
    // TODO Auto-generated constructor stub
}

public void addOverlay(OverlayItem overlayItem)
{
    overlayItems_.add(overlayItem);
    populate();
}

@Override
protected OverlayItem createItem(int i)
{
    // TODO Auto-generated method stub
    return overlayItems_.get(i);
}

@Override
public int size()
{
    // TODO Auto-generated method stub
    return overlayItems_.size();
}
 }
公共类MapItemizeOverlay扩展了ItemizeOverlay
{
公共静态布尔路由选择;
公共静态阵列列表地质点;
私人地质点;
私有ArrayList overlayItems_u2;=新ArrayList();
public MapItemizeOverlay(可绘制的默认标记)
{
super(boundCenterBottom(defaultMarker));
//TODO自动生成的构造函数存根
}
公共void addOverlay(OverlayItem OverlayItem)
{
叠加项添加(叠加项);
填充();
}
@凌驾
受保护的OverlayItem createItem(int i)
{
//TODO自动生成的方法存根
返回覆盖项(i);
}
@凌驾
公共整数大小()
{
//TODO自动生成的方法存根
返回覆盖项的大小();
}
}
步骤2: 进入您的MapActivity…(oncreate)

mapItemizedOverlay_u=新的mapItemizedOverlay(可绘制);
对于(int i=0;i
对不起,我的错误是有一个变量private int i=0;在方法之外,如您所见,我将变量i增加了一次如果您只想显示5项,则为isorry设置循环条件我的错误是有一个变量private int i=0;在方法之外,如您所见,如果您只想显示5项,我将变量i增加了一次items make loop condition for iI已经有了这个文件。我只是把它命名为CustomItemize Overlay。我已经有了这个文件。我只是把它命名为CustomItemized Overlay。错误在这里:“GeoPoint point=新的GeoPoint(latitudeE6a,Longtudee6a);”正确的变量是latitudeE6,而不是latitudeE6a。对于Longtudity,错误在这里:“地质点=新的地质点(纬度E6a,纬度E6a);”正确的变量是纬度E6,而不是纬度E6a。对于长震级也是如此。