android:没有获得关于标记点击的信息
Posted
技术标签:
【中文标题】android:没有获得关于标记点击的信息【英文标题】:android: not getting info on marker click 【发布时间】: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)
【问题讨论】:
【参考方案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://***.com/a/40962580/12676247
【讨论】:
可以根据这个指标在toast中显示labour_skill吗?在 OnWindowInfoClickListener 中以上是关于android:没有获得关于标记点击的信息的主要内容,如果未能解决你的问题,请参考以下文章
如何在 android 中获得 ClusterManager 点击和 ClusterManager 项目点击
Android。点击标记后的Google map API工具