当前位置: 首页 > 知识库问答 >
问题:

Android:无法获得标记点击的信息

孙光临
2023-03-14

我在数据库中有四个条目,我正在使用翻新来获取所有数据。API工作得很好,我得到了所有必要的数据。我想显示用户的姓名,地址,号码和技能(来自数据库)在标记点击和设置他们在自定义警报对话框。

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) {

}

共有1个答案

宰父阳焱
2023-03-14

向googleMap添加标记时的setTag(索引)

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

 类似资料:
  • 嗨,我有问题,如何实现点击标记的信息窗口?问题是我在地图上有很多标记,如果单击信息窗口,每个标记都有另一个活动<代码>在此处输入代码 以下是示例 标记1----- 我尝试了很多代码但没有解决

  • 提前感谢!

  • 我有一张地图,上面有很多自定义的大标记。现在,我希望允许用户在地图上创建路径(显示为折线,稍后保存为地理坐标对列表)。 如果用户单击地图,我可以使用地图的setOnMapClickedListener方法收集这些位置。但是如果用户点击一个标记(setOnMarkerClickedListener),我只能检索标记的位置(通常是标记的ancor的位置)。

  • 根据《本地和远程通知编程指南》,当发送远程通知并点击SpringBoard中的应用程序图标时: 用户点击警报中的默认按钮或点击(或单击)应用程序图标。如果点击默认操作按钮(在运行iOS的设备上),系统将启动应用程序,应用程序将调用其代理的应用程序:didFinishLaunchingWithOptions:method,传入通知负载(用于远程通知)或本地通知对象(用于本地通知)。 如果通知是远程的

  • 并且Ive在我的AndroidManifest.xml中定义了新的活动,但是我不知道如何解决这个问题······ 我尝试了很多答案在Stackoverflow和其他网站上找到,但我不能解决这个问题...