使用微调器过滤地图标记

时间:2013-10-17 17:08:47

标签: java android json google-maps

我有一个微调器允许我选择公司类型:汽车中心与卡车中心。

我从JSON中提取地址并在AsyncTask中使用地图标记显示它们。当我使用下面的代码时没有做,而地图显示所有标记,无论公司类型如何。因此,当JSON中的公司是“汽车中心”时,我决定包含一个do while循环来添加地图对象。我也会用“卡车中心”做同样的事。

我的问题是do while循环根本没有标记显示在地图上,但没有do while循环显示所有标记。

do {  
    data1 = new LocationData(lati, longi, nameFirst1 + " " + nameLast1,otherinfo); 
   }
while (company1.equals("Car Center"));

locationList.add(data1);

if (str.equals("Car Center")) {  
    publishProgress(data1);
}else {}                         
}


public   LocationData onProgressUpdate(LocationData data1 ) {

return data1; 

}
protected void onPostExecute(Long result) {
for(LocationData data1 : locationList){
    mMap.addMarker(new MarkerOptions()
     .position(new LatLng(data1.getLat(), data1.getLongitude()))
     .title(data1.getName())
     .snippet(data1.getOther()));   
}


@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {   
str =(String)arg0.getSelectedItem();                 
Log.d("Spinner choice", str);           
} 

1 个答案:

答案 0 :(得分:1)

由于您尚未发布所有AsyncTask,因此要判断出错是不容易的。例如:

  • 如何 company1 获取和撰写
  • 何时 str 撰写

如果您在处理过程中会发生什么? 假设在JSON

中为所有获取的公司重写了company1
if (company1.equals("Car Center")) {{  
    locationList.add(new LocationData(lati, longi, nameFirst1 + " " + nameLast1,otherinfo));
    publishProgress(data1);
}

否则,用伪代码编写:

fetch all companies

int totalCompanies = companies.size();
int progress = 0;

for all companies {
    progress++;
    if company equals("Car Center") {  
        locationList.add(new LocationData(lati, longi, nameFirst1 + " " + nameLast1,otherinfo));

        // you do not have to use publishProgress
        // but if you do I though giving a percentage of progress instead of data1 makes sense
        publishProgress((progress/totalCompanies)*100); 
    }
}

我怀疑通过使用while循环你根本得不到任何标记,可能是因为第一个元素不等于Car Center,这使得while循环停止。

我仍然对你的代码感到困惑,因为好像你为每个公司使用一个新的AsyncTask,只有一个元素,然后你抛出一个while循环。很可能是我错过了一些东西,如果以上内容没有帮助,我们会很乐意提出更多建议。

然后我只需要你发布完整的代码,以便我理解它背后的逻辑。