0

我今天刚刚启动了一个非常基本的 Android 应用程序,其中包含一个简单的 Google 地图和一些添加了以下代码的标记:

Marker marker = map.addMarker(new MarkerOptions()
    .position(new LatLng(lat, lon)
    .title("Name")
    .snippet("Address")
); // end marker.

我从中注意到的是,当您单击地图上的标记时,信息窗口会自动打开。我的问题是,在打开信息窗口时我应该把代码放在哪里?理想情况下,我需要它,以便当您单击信息窗口内的按钮或其他内容以说“更多信息”时,会出现一个新屏幕,提供完整信息。

在过去和其他应用程序中,我只是为相关对象添加了一个侦听器,然后当它被点击时,相应的 onClick() 方法被调用,但由于此处自动信息窗口的性质,情况并非如此!

有人可以帮忙吗?

4

2 回答 2

1

理想情况下,我需要它,以便当您单击信息窗口内的按钮或其他内容以说“更多信息”时,会出现一个新屏幕,提供完整信息。

这是不可能的。不过,您可以响应点击整个信息窗口 ( setOnInfoWindowClickListener())。

于 2013-07-03T13:43:17.477 回答
0

您可以使用 OnMarkerClickListener 来侦听标记上的点击事件。要在地图上设置此侦听器,请调用 GoogleMap.setOnMarkerClickListener(OnMarkerClickListener)。当用户单击标记时,将调用 onMarkerClick(Marker) 并将标记作为参数传递。此方法返回一个布尔值,指示您是否已使用该事件(即,您想要抑制默认行为)。如果它返回 false,那么除了您的自定义行为之外,还将发生默认行为。标记单击事件的默认行为是显示其信息窗口(如果可用)并移动相机以使标记位于地图的中心。

您可以使用 OnInfoWindowClickListener 来监听信息窗口上的点击事件。要在地图上设置此侦听器,请调用 GoogleMap.setOnInfoWindowClickListener(OnInfoWindowClickListener)。当用户单击信息窗口时,将调用 onInfoWindowClick(Marker) 并以默认突出显示颜色突出显示信息窗口(运行 Ice Cream Sandwich 和更新版本的设备为全蓝色,早期版本的 Android 为橙色)。

如前面关于信息窗口的部分所述,信息窗口不是实时视图,而是将视图呈现为地图上的图像。因此,您在视图上设置的任何侦听器都将被忽略,并且您无法区分视图各个部分的点击事件。建议您不要在自定义信息窗口中放置交互式组件(例如按钮、复选框或文本输入)。

直接取自这里的文档:-

https://developers.google.com/maps/documentation/android/marker#marker_click_events

于 2013-07-03T13:21:54.523 回答