2017-07-17 8 views
1

Je développe une application Geo Escrime pour Android, sur l'application je sauve la clôture qui vient d'être créé par l'utilisateur parAndroid mutiple marqueurs non tracé sur la carte

SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE); 
     SharedPreferences.Editor editor = sharedPref.edit(); 

     editor.putLong("key_lat", Double.doubleToRawLongBits(marker1.getPosition().latitude)); 
     editor.putLong("key_lon", Double.doubleToRawLongBits(marker1.getPosition().longitude)); 

     editor.putLong("lock_lat", Double.doubleToRawLongBits(marker2.getPosition().latitude)); 
     editor.putLong("lock_lon", Double.doubleToRawLongBits(marker2.getPosition().latitude)); 

     editor.apply(); 

où marker1 est le cercle de clôture center et marker2 représentent la limite extérieure. chaque fois que le dos de connexion utilisateur à l'application, s'il y a un service de clôture en cours d'exécution en arrière-plan la clôture précédente doit montre-à-dire, à la fois les co clôture ordonnées dans la carte, mais seulement le premier marqueur est montré

@Override 
    public void onConnected(@Nullable Bundle bundle) { 
     Toast.makeText(getApplicationContext(),"GoogleApi Connection Success..",Toast.LENGTH_SHORT).show(); 
     getCurrentLocation(); 
     if (isMyServiceRunning(GpsReadingService.class)){ 
      recoverGeofenceMarker(); 
     }}} 



// Recovering last Geofence marker 
    private void recoverGeofenceMarker() { 
     Log.d(TAG, "recoverGeofenceMarker"); 
     SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE); 


     if (sharedPref.contains("key_lat") && sharedPref.contains("key_lon")&& sharedPref.contains("lock_lat")&&sharedPref.contains("lock_lon")) { 
      double alat = Double.longBitsToDouble(sharedPref.getLong("key_lat", -1)); 
      double alon = Double.longBitsToDouble(sharedPref.getLong("key_lon", -1)); 
      LatLng slatLng = new LatLng(alat, alon); 

      double blat = Double.longBitsToDouble(sharedPref.getLong("lock_lat", -1)); 
      double blon = Double.longBitsToDouble(sharedPref.getLong("lock_lon", -1)); 
      LatLng elatLng=new LatLng(blat,blon); 

      double area_cov=Double.parseDouble(pref.getString("area_cov","350.012")); 

      System.out.println("Saved Latlong values are---------------------------------->"+alat+","+alon+"\t"+area_cov); 

      latlngs.add(slatLng);latlngs.add(elatLng); 

      for (LatLng point : latlngs) { 
       options.position(point); 
       options.title("someTitle"); 
       options.snippet("someDesc"); 
       mMap.addMarker(options); 
      } 

      CircleOptions circleOptions = new CircleOptions() 
        .center(slatLng) 
        .strokeColor(Color.argb(100, 150,150,150)) 
        .fillColor(Color.argb(50, 70,70,70)) 
        .radius(area_cov); 
      geoFenceLimits = mMap.addCircle(circleOptions); 



     } 
    } 

Pouvez-vous guyzs aide plse .. Je l'ai déjà essayé ce lien, Link 1 mais seul le premier marqueur est montré

Répondre

0

Je suis si paresseux, enfin j'ai découvert quel était le problème que j'ai codé ce

editor.putLong("lock_lat", Double.doubleToRawLongBits(marker2.getPosition().latitude)); 
     editor.putLong("lock_lon", Double.doubleToRawLongBits(marker2.getPosition().latitude)); 

au lieu de f this

editor.putLong("lock_lat", Double.doubleToRawLongBits(marker2.getPosition().latitude)); 
editor.putLong("lock_lon", Double.doubleToRawLongBits(marker2.getPosition().longitude)); 

Maintenant, il montre les deux marqueurs .. !! Merci à tous les téléspectateurs ..