安卓谷歌地图V2 - 点击标记信息窗口时启动活动

18

我注意到人们在这个具体的任务中遇到了很多困难,我自己也需要帮助。

我已经成功地使用Google提供的默认代码在地图上创建了标记。但现在我想要点击 "InfoWindow" 来打开一个新的活动,以便我可以添加更多信息。

有没有人知道最好的方法?

如果你能回答这个问题,请提供一些代码或示例。非常感谢您的帮助!


https://developers.google.com/maps/documentation/android/marker - Raghunandan
1
你知道有没有Raghunandan的示例代码吗?谢谢。 - user1977908
示例。在信息窗口单击时显示一个toast,通过修改相同的内容,在信息窗口单击时执行所需操作。 - Raghunandan
所以这只是创建了一个提示框,而不是一个新的空白页面。 - user1977908
1
你可以实现自己所需的操作,而不是显示 toast。具体要做什么由你决定。 - Raghunandan
2个回答

55

将此添加到您的代码中

 Mymap.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {
            @Override
            public void onInfoWindowClick(Marker marker) {
               Intent intent = new Intent(MapActivity.this,OtherActivity.class);
               startActivity(intent);


            }
        });

谢谢,它起作用了!我会为其他用户发布一些示例代码! - user1977908
什么是Mymap?我的代码无法解析符号'setOnInfoWindowClickListener',因为Mymap对于我的代码不正确...它是GoogleMap类的实例吗?还是Activity的类?或者它是从GoogleMap类继承的新的单独类? - Pat Myron
@AlexVPerl 你好,这可能有点奇怪,但我使用带有JSON字符串的标题。然后,您需要使用自定义信息窗口适配器来正确显示您的内容。类似于{"title":"Your Title","param1":"yourParam}。 - user5156016

1
This method works even well with multiple markers. get the title of the marker using marker.getTitle() and Starts the activity based on which marker you clicked. 

public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;
        // Add a marker in Sydney and move the camera
        LatLng chennai = new LatLng(12.9671, 80.2593);
        mMap.addMarker(new MarkerOptions().position(chennai).title("Chennai"));

        LatLng perungudi = new LatLng(12.97, 80.25);
        mMap.addMarker(new MarkerOptions().position(perungudi).title("Perungudi"));

        LatLng pallikarnai = new LatLng(12.9377, 80.2154);
        mMap.addMarker(new MarkerOptions().position(pallikarnai).title("Pallikarnai"));

        mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(chennai,12));
        mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
            @Override
            public boolean onMarkerClick(Marker marker) {
                if (marker.getTitle().equals("Chennai")){
                    Toast.makeText(MapsActivity.this, "Clicked"+marker.getTitle(), Toast.LENGTH_SHORT).show();
                }
                return false;
            }
        });

    }

我认为从标签而不是标题识别标记是一个更好的想法。可以像这样设置:marker.setTag(theID); - AlvaroSantisteban

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接