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