所以我知道我的问题有点奇怪,但我会解释我的意思:所以我有一个customInfoWindow和大约20个标记。我已经成功添加了0错误的onclick侦听器。问题是,我想以某种方式使该侦听器针对一个custominfwindow标记,而对于另一个custominfowindow标记具有不同的事件。例如,如果您单击悉尼的custominfowindow,则会显示一个吐司;如果您单击India的custominfowindow,则会打开一个布局。 。我不知道如何添加代码。有人可以帮我解决这个问题。我是这种编程的新手,所以我很不了解四分之一的事情,因此请帮助我。以防万一,MapsActivity中onclick列表器的代码:
import androidx.fragment.app.FragmentActivity;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Handler;
import android.text.method.LinkMovementMethod;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.BitmapDescriptor;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;
import java.util.Map;
//Class starts;
public class MapsActivity extends FragmentActivity implements GoogleMap.OnInfoWindowClickListener,OnMapReadyCallback {
private GoogleMap mMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
mMap.setOnInfoWindowClickListener(this);
@Override
public void onInfoWindowClick(Marker marker) {
openIndia();
}
public void openIndia(){
Intent intent = new Intent(this,India.class);
startActivity(intent);
}
}
我的代码也更长一些,但是为了节省回答者,而我的时间我只给出了必须更改或有用的代码。除此之外,我认为不需要任何其他代码。万一有需要,请通知我。
一种方法是标记标记:
Marker indiaMarker = mMap.addMarker(new MarkerOptions().position(....).title("India").snippet());
indiaMarker.setTag("India"); // the tag could be anything, an id maybe ?
Marker sydneyMarker = mMap.addMarker(new MarkerOptions().position(....).title("Sydney").snippet());
sydneyMarker.setTag("Sydney");
...
public void onInfoWindowClick(Marker marker) {
if("India".equals(marker.getTag())) {
Intent intent = new Intent(this,India.class);
startActivity(intent);
} else if("Sydney".equals(marker.getTag())) {
// showToast() or whatever you want to
}
}