【问题标题】:android: not getting info on marker clickandroid:没有获得关于标记点击的信息
【发布时间】:2020-11-10 12:27:01
【问题描述】:

我在数据库中有四个条目,我正在使用改造来获取所有数据。 API 工作正常我正在获取所有必要的数据。我想在标记点击时显示用户姓名、地址、号码和技能(来自数据库)并将它们设置在自定义警报对话框中。

问题

当我点击任何标记时,我只会得到最后一个条目。每个标记上的平均值infoWindowClickListener 我每次只得到相同的姓名、地址、号码和技能。 我也使用标记保存索引,但我不知道如何使用该索引。

我想要什么?

每个标记都应该显示自己的信息。 任何人都可以帮助我在 onInfoWindowClickListener 方法中应该做什么来获取与每个标记相关的确切信息。 有什么不明白的欢迎随时提问。

MapFragment.java:

 public void onMapReady(final GoogleMap mMap) {
        mGoogleMap = mMap;
        mLocationRequest = new LocationRequest();
        mLocationRequest.setInterval(0);
        mLocationRequest.setFastestInterval(0);
        mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
        fetchLastLocation();
        mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
        ApiInterface apiInterface2 = ApiClient.getClient().create(ApiInterface.class);
        Call<AllDataResponse> call2 = apiInterface2.allLabours("showAds");
        call2.enqueue(new Callback<AllDataResponse>() {
            @Override
            public void onResponse(Call<AllDataResponse> call, Response<AllDataResponse> response) {
                if (response.body() != null) {

                    if (response.body().isError_bol()) {
                        String errosr = response.body().getError_message();
                        Toast.makeText(getActivity(), errosr, Toast.LENGTH_SHORT).show();
                    } else {
                        labourDataAlls = response.body().getAll_labours();

                        if (labourDataAlls != null) {
                            latLngData.addAll(labourDataAlls);
                            Log.v("TAaG", "LOGS" + latLngData.size());

                            for (int i = 0; i < latLngData.size(); i++) {
                                double lat = Double.parseDouble(latLngData.get(i).getLb_latitude());
                                double lng = Double.parseDouble(latLngData.get(i).getLb_longitude());
                                Str_lb_name = latLngData.get(i).getLb_name();
                                Str_lb_phone = latLngData.get(i).getLb_phone();
                                Str_lb_address = latLngData.get(i).getLb_address();
                                Str_lb_skill = latLngData.get(i).getLb_skills();
                               drawMarker(new LatLng(lat, lng), i);
  }

                            Log.d("setr", String.valueOf(list));
                            Toast.makeText(getActivity(), "No Error", Toast.LENGTH_SHORT).show();
                        } else {
                            Toast.makeText(getActivity(), "Unknown Error Occurs", Toast.LENGTH_SHORT).show();
                        }

                    }

                }
            }

            @Override
            public void onFailure(Call<AllDataResponse> call, Throwable t) {
                Toast.makeText(getContext(), "" + t.toString(), Toast.LENGTH_SHORT).show();
            }
        });
        mMap.setOnInfoWindowClickListener(this);
        mMap.setMyLocationEnabled(true);
    }
    
        private void drawMarker(final LatLng point , final int index){
            MarkerOptions markerOptions = new MarkerOptions();
            markerOptions.position(point).title(labourDataAlls.get(index).getLb_name()+index);
            mGoogleMap.addMarker(markerOptions);
        }

@Override
    public void onInfoWindowClick(Marker marker) {

}

【问题讨论】:

    标签: java android google-maps google-maps-markers


    【解决方案1】:

    setTag(index) 同时向 googleMap 添加标记

    private void drawMarker(final LatLng point , final int index){
        private Marker marker;
        marker = mGoogleMap.addMarker(new MarkerOptions()
                .position(point)
                .title(labourDataAlls.get(index).getLb_name()+index);
        marker.setTag(index);
    }
    
    @Override
    public void onInfoWindowClick(Marker marker) {
        int index = (int)(marker.getTag());
        //Use index get Value from labourDataAlls
    }
    

    参考https://stackoverflow.com/a/40962580/12676247

    【讨论】:

    • 可以根据这个指标在toast中显示labour_skill吗?在 OnWindowInfoClickListener 中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    相关资源
    最近更新 更多