当前位置: 首页 > 知识库问答 >
问题:

谷歌地图android sdk标记点击监听器

吴松
2023-03-14

我想使用自定义图标和c标记的地方

重写markerclick函数,并尝试获取该标记的标记,因为我存储在该标记中,在此之前,我使用了.equal方法来测试该标记是否等于该事件标记

override fun onMarkerClick(marker: Marker): Boolean {

        // Retrieve the data from the marker.
        var clickCount = marker.tag as Int?

        // Check if a click count was set, then display the click count.
        if (clickCount != null) {
            clickCount = clickCount!! + 1
            marker.tag = clickCount
            Toast.makeText(
                this,
                marker.title +
                        " has been clicked " + clickCount + " times.",
                Toast.LENGTH_SHORT
            ).show()
        }

        // Return false to indicate that we have not consumed the event and that we wish
        // for the default behavior to occur (which is for the camera to move such that the
        // marker is centered and for the marker's info window to open, if it has one).
        return false
    }


    mMap = googleMap
            val streetRight = mMap.addMarker(
                MarkerOptions().position(
                    LatLng(
                        -xx.xxxxx,
                        xxx.xxxxxx
                    )
                ).icon(BitmapDescriptorFactory.fromResource(R.mipmap.ic_street_view_person))
            )
            val streeTop = mMap.addMarker(
                MarkerOptions().position(
                    LatLng(
                        -xx.xxxxx,
                        xxx.xxxxxx
                    )
                ).icon(BitmapDescriptorFactory.fromResource(R.mipmap.ic_street_view_person))
            )
    streeTop.tag = 1
            streetRight.tag = 2

我希望当我点击标记应该商店

共有1个答案

杨飞飙
2023-03-14

我能够让您的代码正常工作,但是我将侦听器添加到了onMapReady:

   override fun onMapReady(gMap: GoogleMap?) {
        gMap?.let {
             it.setOnMarkerClickListener {
                var clickCount = it.tag as Int?

                // Check if a click count was set, then display the click count.
                if (clickCount != null) {
                    clickCount = clickCount!! + 1
                    it.tag = clickCount
                    Toast.makeText(
                        this@MapFragment.context,
                        it.title +
                                " has been clicked " + clickCount + " times.",
                        Toast.LENGTH_SHORT
                    ).show()
                }

                // Return false to indicate that we have not consumed the event and that we wish
                // for the default behavior to occur (which is for the camera to move such that the
                // marker is centered and for the marker's info window to open, if it has one).
                false
            }
        }
    }

在调用.getMapAsync()后,将调用此函数

 类似资料:
  • 我想将事件侦听器添加到所有标记中,我正在使用GoogleMapsforRailsGem。这是我的密码 我试图将事件侦听器添加到所有标记中,但它没有发出任何警报。如何在google maps for rails中添加事件侦听器 我有一个数据数组,每个数据包含id,lat,lng

  • 我需要一些帮助来绘制我正在绘制的地图。地图并不特别复杂,因为我是一个初学者,我有一堆带有信息窗口的标记(完成后还会有更多标记),单击标记或选择页面HTML端下拉菜单的相应项时可以打开这些标记。 当信息窗口打开时(在HTML菜单中单击或选择),我想做但自己找不到的是在地图上自动居中标记。我假设有某种函数可以分配给click或infowindow打开事件,但无法确定是哪种函数以及如何实现它。 我的代码

  • 当我点击地图上的某个地方,应用程序绘制当前位置和目的地之间的折线(点击)。我希望目标标记是点击自己所有的时间(每几秒钟),所以在用户移动新的折线是绘制(更新最后一个)。

  • 我有一张地图,上面有很多自定义的大标记。现在,我希望允许用户在地图上创建路径(显示为折线,稍后保存为地理坐标对列表)。 如果用户单击地图,我可以使用地图的setOnMapClickedListener方法收集这些位置。但是如果用户点击一个标记(setOnMarkerClickedListener),我只能检索标记的位置(通常是标记的ancor的位置)。

  • 使用google maps API,我有一个带有一些自定义图标的近距离标记的地图。每个标记是41px×50px,但每个标记的可点击区域是200px×200px。带标记的地图截图及其可点击区域 有什么办法可以缩小可点击区域的大小吗?

  • 如何使Android Google Maps API v2中的标记变得可点击,以便它们要么打开一个带有选项的菜单,要么开始一个新的活动?我相信我在我的应用程序中的标记目前在一个“newb”方法。我没有为它们分配一个名称或方法,以便能够将其与所需代码的其余部分链接在一起。 如果你回答这个问题,请包括一个标记被引入一个独特的名称,然后被设置为可点击打开一个新活动的示例代码。