我可以从 Google 地图上的不同标记启动另一项活动吗?

Can I launch other activites from different markers on Google Maps?

我有一个主 activity,上面有一些标记(太多了,无法一一初始化) 当我点击 infowidow 时,我想打开一个带有特定标记的片段。 目前我有这样的东西

  for( i = 0; i<j; i++)
            {
                hely = helyek.get(i);
                if(hely.getStars()>=2){
                    hely.getHelyId();
                    Marker marker = mMap.addMarker(new MarkerOptions().position(new LatLng(hely.getLat(),hely.getLng()))
                            .title(hely.getHelynev())
                            .snippet(hely.getHelycim())
                            .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN)));
                    markers.add(marker);

这会将标记添加到地图。

    public void onMapReady(GoogleMap googleMap) {
    int j;
    int i=0;
    List<Marker> markers = new ArrayList<Marker>();
    mMap = googleMap;        
    mMap.getUiSettings().setMyLocationButtonEnabled(true);
    mMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
        @Override
        public void onInfoWindowClick(Marker marker) {
            Intent intent = new Intent(getApplicationContext(), HelyDetailActivity.class);
            intent.putExtra(ListActivity.HELY_NEV_EXTRA, hely.getHelynev());
            intent.putExtra(ListActivity.HELY_CIM_EXTRA, hely.getHelycim());
            intent.putExtra(ListActivity.HELY_JOVALASZOK, hely.getJovalaszok());
            intent.putExtra(ListActivity.HELY_OSSZKERDES, hely.getOsszkerdes());
            intent.putExtra(ListActivity.HELY_ID_EXTRA, hely.getHelyId());
            intent.putExtra(ListActivity.HELY_LAT,hely.getLat());
            intent.putExtra(ListActivity.HELY_LONG, hely.getLng());
            startActivity(intent);
        }
    });
    mMap.setMyLocationEnabled(true);
}

这会打开 activity 门课程,但每次都是一样的。我如何定义我点击了哪个标记?

您可以尝试声明一个新的 HashMap 数据结构。当您将标记添加到地图时,您可以像这样将 Hely 对象放入地图:

HashMap<String, Hely> helyMap = new HashMap<>(); //... code to create the marker ...// markers.add(marker); helyMap.put(marker.getId(), hely);

然后,在 onInfoWindowClick(Marker marker) 方法中,根据被点击的标记检索 Hely 对象,如下所示:

Hely hely = helyMap.get(marker.getId()); Intent intent = new Intent(getApplicationContext(), HelyDetailActivity.class); intent.putExtra(ListActivity.HELY_NEV_EXTRA, hely.getHelynev()); // ... other intent code ... // startActivity(intent);