2

J'ai problème sur la façon d'utiliser onQueryTextSubmit et onQueryTextChange ce que je veux est d'avoir un numéro de plaque consultable en utilisant l'extrait sur mon addMarker. Mon problème en ce moment est que je suis une valeur incorrecte sensible à la casse sous mon onQueryTextSubmit. J'ai ajouté mon marqueur sur une liste cependant, I am getting always the last value not all values. Pls. aiderne peut pas obtenir la liste de recherche d'extrait sur addMarker dans Android Google Map

Marker

 public void vehicleRequest_validate() { 

     HttpLoggingInterceptor logging = new HttpLoggingInterceptor(); 

     logging.setLevel(HttpLoggingInterceptor.Level.BODY); 
     OkHttpClient.Builder httpClient = new OkHttpClient.Builder(); 

     httpClient.addInterceptor(logging); 
     Retrofit retrofit = new Retrofit.Builder() 
       .baseUrl(baseUrl) 
       .addConverterFactory(GsonConverterFactory.create()) 
       .client(httpClient.build()) 
       .build(); 

     networkAPI = retrofit.create(NetworkAPI.class); 

     VehicleRequestPojo loginRequest = new VehicleRequestPojo(MainActivity.ucsi_num, client_table, markutype); 

     Call<JsonElement> call = networkAPI.loginRequest(loginRequest); 

     call.enqueue(new Callback<JsonElement>() { 
      @Override 
      public void onResponse(Call<JsonElement> call, Response<JsonElement> response) { 
       // success response 
       if (response.body().isJsonArray()) { 
        JsonArray objectWhichYouNeed = response.body().getAsJsonArray(); 
        System.out.println(objectWhichYouNeed + " Object"); 

        for (int i = 0; i < response.body().getAsJsonArray().size(); i++) { 
         JsonElement plate_num_array = response.body().getAsJsonArray().get(i); 
         JsonObject plate_num_obj = plate_num_array.getAsJsonObject(); 
         String plate_n = plate_num_obj.get("plate_num").toString(); 
         String plate_nString = plate_n; 
         plate_nString = plate_nString.replace("\"", ""); 
         String plate_num = String.valueOf(plate_nString); 

         JsonElement gps_num_array = response.body().getAsJsonArray().get(i); 
         JsonObject gps_num_obj = gps_num_array.getAsJsonObject(); 
         String gps_num = gps_num_obj.get("gps_num").toString(); 

         JsonElement location_array = response.body().getAsJsonArray().get(i); 
         JsonObject location_obj = location_array.getAsJsonObject(); 
         String location = location_obj.get("location").toString(); 

         JsonElement date_array = response.body().getAsJsonArray().get(i); 
         JsonObject date_obj = date_array.getAsJsonObject(); 
         String date = date_obj.get("date").toString(); 

         JsonElement time_array = response.body().getAsJsonArray().get(i); 
         JsonObject time_obj = time_array.getAsJsonObject(); 
         String time = time_obj.get("time").toString(); 

         JsonElement lat_array = response.body().getAsJsonArray().get(i); 
         JsonObject lat_obj = lat_array.getAsJsonObject(); 
         String lati = lat_obj.get("lat").toString(); 
         String latiString = lati; 
         latiString = latiString.replace("\"", ""); 
         String lat = String.valueOf(latiString); 

         JsonElement lng_array = response.body().getAsJsonArray().get(i); 
         JsonObject lng_obj = lng_array.getAsJsonObject(); 
         String longi = lng_obj.get("lng").toString(); 
         String longiString = longi; 
         longiString = longiString.replace("\"", ""); 
         String lng = String.valueOf(longiString); 

         JsonElement engine_array = response.body().getAsJsonArray().get(i); 
         JsonObject engine_obj = engine_array.getAsJsonObject(); 
         String engine = engine_obj.get("engine").toString(); 

         JsonElement remarks_array = response.body().getAsJsonArray().get(i); 
         JsonObject remarks_obj = remarks_array.getAsJsonObject(); 
         String remarks = remarks_obj.get("remarks").toString(); 

         if (lat != null && !lat.equals("null") 
           && (lng != null && !lng.equals("null") 
           || (lat != "" && lat != "") 
           && lng != "") && (lng != "")) { 

          Double d = Double.parseDouble(lat); 
          Double d2 = Double.parseDouble(lng); 
          createMarker(d, d2, plate_num); 
         } 

        } 
       } else { 
        System.out.println("Not a JSONArray."); 
       } 
      } 

      @Override 
      public void onFailure(Call<JsonElement> call, Throwable t) { 
       // failure response 
       System.out.println(call.toString()); 
      } 

     }); 
    } 

    public void createMarker(Double latitude, final Double longitude, String Plate_num) { 
     BitmapDescriptor image = BitmapDescriptorFactory.fromResource(R.drawable.bus); 

     list = new ArrayList<Marker>(); 

     Marker marker = mMapFragment.addMarker(new MarkerOptions() 
       .position(new LatLng(latitude, longitude)) 
       .title("Plate No.") 
       .snippet(Plate_num) 
       .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE))); 
     list.add(marker); 

/*  mMapFragment.addMarker(new MarkerOptions() 
       .position(new LatLng(latitude, longitude)) 
       .anchor(0.5f, 0.5f) 
       .title("Plate No.") 
       .snippet(Plate_num) 
       .icon(image));*/ 

     mMapFragment.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() { 
      @Override 
      public void onInfoWindowClick(Marker marker) { 
       marker.hideInfoWindow(); 
      } 
     }); 

     mMapFragment.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(latitude, longitude), 9.0f)); 

     mMapFragment.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() { 

      @Override 
      public boolean onMarkerClick(final Marker marker) { 
       vm = new VehicleMap(); 

       vm.setSnippet(marker.getSnippet()); 
       vm.setPlate_num(marker.getSnippet()); 

       latitudeG = marker.getPosition().latitude; 
       longitudeG = marker.getPosition().longitude; 

       marker.showInfoWindow(); 

       BottomSheetDialogFragment bottomSheetDialogFragment = new BottomSheetModalFragment(activity); 
       bottomSheetDialogFragment.show(getFragmentManager(), bottomSheetDialogFragment.getTag()); 

       return true; 
      } 
     }); 

    } 

    public void onMapReady(GoogleMap googleMap) { 
     mMapFragment = googleMap; 
/*  LatLng latlong = new LatLng(12.405888, 123.273419); 
     CameraUpdate cameraPosition = CameraUpdateFactory.newLatLngZoom(latlong, 16); 
     mMap.moveCamera(cameraPosition); 
     mMap.animateCamera(cameraPosition);*/ 

     new GetVehicles().execute(); 
     mMapFragment.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(12.405888, 123.273419), 6)); 
//  mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(12.405888, 123.273419), 13)); 

     setUpMap(); 
    } 

Ici, je veux passer la valeur de la recherche title = "Plate No." latitude et longitude à la valeur LatLng.

public boolean onQueryTextSubmit(String query) { 
    centerMarker(query); 
    for(Marker m : list) { 
     System.out.println(m.getSnippet() + m.getTitle() + m.getPosition() + " snippet"); 
     if(m.getSnippet().equals(query)) { 
      Toast.makeText(this, "You searched for: " + query , Toast.LENGTH_SHORT).show(); 
      mMapFragment.animateCamera(CameraUpdateFactory.newLatLngZoom(m.getPosition(), 9.0f)); 
      break; // stop the loop 
     } 
    } 
    return true; 
} 

@Override 
public boolean onQueryTextChange(String newText) { 
    return false; 
} 

Répondre

0

Je reçois toujours la dernière valeur toutes les valeurs.

Vous obtenez seulement une valeur (... probablement) parce que vous faites une toute nouvelle liste chaque appel de méthode pour createMarker(d, d2, plate_num)

public void createMarker(Double latitude, final Double longitude, String Plate_num) { 
     BitmapDescriptor image = BitmapDescriptorFactory.fromResource(R.drawable.bus); 

     // list = new ArrayList<Marker>(); // Stop doing this!