Android 仅显示最后一个覆盖项
我要做的是从一个xml文件中获取数据,然后使用一个定制的ItemizedOverlay添加这些项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
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。对于长震级也是如此。