2

Ich habe ein Problem, wie man onQueryTextSubmit und onQueryTextChange verwenden, was ich will ist eine durchsuchbare Plate Nr. Mit dem Schnipsel auf meinem addMarker. Mein Problem ist jetzt, ich bin ein falscher falscher Wert unter meinem onQueryTextSubmit. Ich habe jedoch meinen Marker auf einer Liste hinzugefügt, I am getting always the last value not all values. Pls. Hilfekann nicht die Suchliste von Snippet auf addMarker in 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(); 
    } 

Hier habe ich den Wert der Suche title = "Platte Nein" übergeben wollen Breite und Länge zum LatLng-Wert.

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; 
} 

Antwort

0

Ich erhalte immer den letzten Wert nicht alle Werte.

Sie erhalten nur einen Wert (... wahrscheinlich), weil Sie eine brandneue Liste jeden Methodenaufruf 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! 
machen
Verwandte Themen