我想设置不同标记的OnMarkerClickListener。在这里,我想打印 i循环的变量值,只要点击相应的标记。所以我按照以下方式做了..但它不起作用,它在Snackbar上显示相同的最后一个值 170 在每个不同的标记点击..但我想得到0,10,20, 30 .... 170分别在快餐栏上点击不同的标记。
请帮忙......
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
// SETTING MARKER
for(int i=0;i<180;i=i+10) {
LatLng sydney = new LatLng(i, i);
mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Position"+i));
//ON MARKER CLICK
final int finalI = i;
mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
Snackbar.make((View) findViewById(R.id.map),""+finalI,Snackbar.LENGTH_LONG).show();
return true;
}
});
}
}
这是由循环创建的标记 但是我得到相同的价值到170
答案 0 :(得分:1)
要解决您的问题,您应该有一个标记数组。
试试这个:
首先让您的应用实现GoogleMap.OnMarkerClickListener 然后创建一个Marker数组:
Marker[] marker = new Marker[20]; //change length of array according to you
然后在里面
onMapReady(){
mMap.setOnMarkerClickListener(this);
for(int i=0;i<180;i=i+10) {
LatLng sydney = new LatLng(i, i);
marker[i] = mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Position"+i));
}
}
然后终于
@Override
public boolean onMarkerClick(Marker marker) {
//you can get assests of the clicked marker
return false;
}
答案 1 :(得分:0)
我找到了一种方法......
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
// SETTING MARKER
for(int i=0;i<180;i=i+10) {
LatLng sydney = new LatLng(i, i);
mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Position"+i));
}
//ON MARKER CLICK
mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
for(int i=0;i<180;i=i+10) {
if (marker.getTitle().equals("Marker in Position" + i))
Snackbar.make((View) findViewById(R.id.map), "" + i, Snackbar.LENGTH_LONG).show();
}return true;
}
});
}