无法在 Android Google 地图中获取 addMarker 上的片段搜索列表

can't get the search list of snippet on addMarker in Android Google Map

我在如何使用 onQueryTextSubmitonQueryTextChange 方面遇到问题,我想要的是使用我的 addMarker 上的代码段获得可搜索的车牌号。我现在的问题是我的 onQueryTextSubmit 下是区分大小写的错误值。但是,我在列表中添加了我的标记,I am getting always the last value not all values. 请。帮助

标记

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

这里我想将search title="Plate No."经纬度的值传递给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;
}

I am getting always the last value not all values.

您只能得到 一个值(...可能),因为每次调用 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!