对于同一个CustomInfoWindow,如何拥有不同的事件

问题描述 投票:0回答:1

所以我知道我的问题有点奇怪,但我会解释我的意思:所以我有一个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);
 }
}

我的代码也更长一些,但是为了节省回答者,而我的时间我只给出了必须更改或有用的代码。除此之外,我认为不需要任何其他代码。万一有需要,请通知我。

java android google-maps syntax syntax-error
1个回答
0
投票

一种方法是标记标记:

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   
        }
    }
© www.soinside.com 2019 - 2024. All rights reserved.