在android google-maps-api-2中为自定义标记定义可点击/可触摸区域

时间:2018-01-24 16:32:12

标签: android google-maps google-maps-markers google-maps-android-api-2 clickable

我是谷歌地图的新手,或者更确切地说是Android编程。不过我只是设法为互联网浏览器设置谷歌地图。我创建了几个自定义标记(带有我自己图标的标记),这些标记具有特定的可点击区域。

对于互联网浏览器的谷歌地图,请点击

      var shape = {
      coords: [1, 1, 1, 20, 18, 20, 18, 1],
      type: 'poly'
    };
    for (var i = 0; i < beaches.length; i++) {
      var beach = beaches[i];
      var marker = new google.maps.Marker({
        position: {lat: beach[1], lng: beach[2]},
        map: map,
        icon: image,
        shape: shape,
        title: beach[0],
        zIndex: beach[3]
      });
    }

因此,您可以定义一个形状,该形状将成为标记的可点击区域。这很有效。

现在我想为Android设备开发我的谷歌地图应用程序。我想要与谷歌地图中用于浏览器的标记图标相同。虽然这不像以前那样用JavaScript编写,但是用Java编写,我已经完成了。但是我无法找到为Android谷歌地图上的自定义标记创建可点击或可触摸区域的选项!我的自定义图标周围甚至还有一个较大的区域,我无法改变它。

所以您知道如何为Android定义谷歌地图标记的可点击/可触摸区域吗?或者它是不可能的,因为拇指不像计算机鼠标那样准确?

Screenshot of my map with the problem

亲切的问候, 任务管理器

1 个答案:

答案 0 :(得分:0)

您需要注册OnInfoWindowClickListenerCallbackGoogleMap中有一种方法:

map.setOnInfoWindowClickListener(new OnInfoWindowClickListener()
        {
            @Override
            public void onInfoWindowClick(Marker arg0) {
                //Handle your click here                
        }
        }); 

<强>更新

// Set a listener for marker click.    
mMap.setOnMarkerClickListener(this);

/** Called when the user clicks a marker. */
@Override
public boolean onMarkerClick(final Marker marker) {

    // Retrieve the data from the marker.
    Integer clickCount = (Integer) marker.getTag();

    // Check if a click count was set, then display the click count.
    if (clickCount != null) {
        clickCount = clickCount + 1;
        marker.setTag(clickCount);
        Toast.makeText(this,
                       marker.getTitle() +
                       " 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;
}

有关详细信息,请参阅Markers。还要确保用于标记的图像中没有填充。