0

This URLandroidを呼び出して、Googleマップのピン画像を使用して場所を表示しています

この URL は、地図をズームインまたはズームアウトすると常に更新されます。
このコードを使用して、As-の読み込みでマップ呼び出し URL にピンを設定しdoInbackgroundています。onPostExcutionAsyncTask

if(!valueoftotal.equalsIgnoreCase("") && !valueoftotal.equalsIgnoreCase(null))
{
    if(Integer.parseInt(valueoftotal) > 0 && Integer.parseInt(valueoftotal) <= 100)
    {
        OverlayItem oi;
        if(myHandler.getParsedData()!=null)
        {
            arrayList = myHandler.getParsedData();      
        }

        linearbottom2.setClickable(true);
        mapOverlays.clear();
        //OverlayItem overlayItem,overlayItem1;
        overlay.removeAll();

        lineartabbar.setBackgroundResource(R.drawable.mapbar);

        if( arrayList.size()!=0 && arrayList.size()>1 )
        {
            for(int i = 0; i < arrayList.size(); i++)
            {
                String latvalue = arrayList.get(i).getLatitude().toString();
                String lonvalue = arrayList.get(i).getLongitude().toString();
                GeoPoint point = null;

                try
                {
                    point = new GeoPoint((int)(Double.parseDouble(latvalue)*1E6),(int)(Double.parseDouble(lonvalue)*1E6));
                }
                catch (NumberFormatException e) 
                {
                    // TODO: handle exception
                }

                if(point != null)
                {

                    if(arrayList.get(i).getUnitstotal().equalsIgnoreCase("1"))
                    {  
                        oi = overlay.createItem(i);
                        System.out.println("overlayyyyyyyyyyyyy" + overlay + "\toiiiiiiiiii"+oi);
                        if(overlay!=null)
                        {
                            overlay.addItem(oi);
                        }
                     }
                     else if(!arrayList.get(i).getUnitstotal().equalsIgnoreCase("1"))
                     {
                         oi = overlay.createItem(i);
                         if(overlay!=null)
                         {
                             System.out.println("2overlayyyyyyyyyyyyy" + overlay + "\toiiiiiiiiii" + oi);
                             overlay.addItem(oi);
                         }
                     }
                 }
             }
             mapOverlays.add(overlay);
             mapView.invalidate();
         }
         else if( arrayList.size()!=0 && arrayList.size()==1 )
         {
             for(int i = 0; i < arrayList.size(); i++)
             {
                 String latvalue = arrayList.get(i).getLatitude().toString();
                 String lonvalue = arrayList.get(i).getLongitude().toString();
                 GeoPoint point = null;
                 try
                 {
                     point = new GeoPoint((int)(Double.parseDouble(latvalue)*1E6),(int)(Double.parseDouble(lonvalue)*1E6));
                 }
                 catch (NumberFormatException e)
                 {
                     // TODO: handle exception
                 }

                 if(point != null)
                 {
                     if(arrayList.get(i).getUnitstotal().equalsIgnoreCase("1"))
                     {
                         oi = overlay.createItem(i);
                         System.out.println("listing when 1 value is  "+arrayList.get(i).getUnitstotal());
                         overlay.addItem(oi);
                         mc.animateTo(point);
                     }
                     else if(!arrayList.get(i).getUnitstotal().equalsIgnoreCase("1"))
                     {
                         oi = overlay.createItem(i);
                         System.out.println("listing when more value is  "+ arrayList.get(i).getUnitstotal());
                         overlay.addItem(oi);
                         mc.animateTo(point);
                         mc.setCenter(point);
                         mc.setZoom(18);
                     }
                 }
             }

             mapOverlays.add(overlay);
             mapView.invalidate();
             MapController mcontrller =mapView.getController();

しかし問題は、マップをすぐにタッチすると、すべてのピンが削除され、新しい位置のロードが開始されることです。スムーズにロードしたいのですが、最初にすべての位置を取得してから削除します。

誰か助けてくださいASAP、私の説明で申し訳ありません。

4

1 に答える 1

2
public class HelloAndroidGpsActivity extends Activity implements OnClickListener, android.content.DialogInterface.OnClickListener 
{
     private EditText editTextShowLocation;
     private Button buttonGetLocation;
     private ProgressBar progress;

     private LocationManager locManager;
     private LocationListener locListener = new MyLocationListener();

     private boolean gps_enabled = false;
     private boolean network_enabled = false;

     /** Called when the activity is first created. */
     @Override
     public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.main);
          editTextShowLocation = (EditText) findViewById(R.id.editTextShowLocation);
          progress = (ProgressBar) findViewById(R.id.progressBar1);
          progress.setVisibility(View.GONE);
          buttonGetLocation = (Button) findViewById(R.id.buttonGetLocation);
          buttonGetLocation.setOnClickListener(this);
          locManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
     }

     @Override
     public void onClick(View v) {
          progress.setVisibility(View.VISIBLE);
          // exceptions will be thrown if provider is not permitted.
          try {
               gps_enabled = locManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
          } catch (Exception ex) {

          }
          try {
               network_enabled = locManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
          } catch (Exception ex) {

          }

          // don't start listeners if no provider is enabled
          if (!gps_enabled && !network_enabled) {
                AlertDialog.Builder builder = new Builder(this);
                builder.setTitle("Attention!");
                builder.setMessage("Sorry, location is not determined. Please enable location providers");
                builder.setPositiveButton("OK", this);
                builder.setNeutralButton("Cancel", this);
                builder.create().show();
                progress.setVisibility(View.GONE);
          }

          if (gps_enabled) {
                locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locListener);
          }
          if (network_enabled) {
                locManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locListener);
          }
      }

class MyLocationListener implements LocationListener {
    @Override
    public void onLocationChanged(Location location) {
        if (location != null) {
            // This needs to stop getting the location data and save the battery power.
            locManager.removeUpdates(locListener); 

            String londitude = "Londitude: " + location.getLongitude();
            String latitude = "Latitude: " + location.getLatitude();
            String altitiude = "Altitiude: " + location.getAltitude();
            String accuracy = "Accuracy: " + location.getAccuracy();
            String time = "Time: " + location.getTime();

            editTextShowLocation.setText(londitude + "\n" + latitude + "\n" + altitiude + "\n" + accuracy + "\n" + time);
            progress.setVisibility(View.GONE);
        } 
    }

    @Override
    public void onProviderDisabled(String provider) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onProviderEnabled(String provider) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
        // TODO Auto-generated method stub

    }
}

@Override
public void onClick(DialogInterface dialog, int which) {
    if(which == DialogInterface.BUTTON_NEUTRAL){
        editTextShowLocation.setText("Sorry, location is not determined. To fix this please enable location providers");
    }else if (which == DialogInterface.BUTTON_POSITIVE) {
        startActivity(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS));
    }
}

}
于 2012-06-21T04:52:01.050 に答える