ItemizedOverlay则hitTest [英] ItemizedOverlay hitTest

查看:85
本文介绍了ItemizedOverlay则hitTest的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我用这种方法来检测是否有人点击的叠加。现在一切正常除外点击区域太小。所以,我看着里面说的API看看一个给定的命中点是项目的标记的范围内。

I'm using this method to detect whether someone clicks on an overlay. Now everything works except for that the click area is too small. So I looked at the api which said "See if a given hit point is within the bounds of an item's marker. ".

我做了我更大的范围如下:

I made my bounds bigger like this:

Log.d("debug", "Marker propertie 1: "  + marker.getBounds());   //output:Marker propertie 1: Rect(0, 0 - 0, 0)

Rect square = new Rect(0, 0, 200, 200);
marker.setBounds(square);
Log.d("debug", "Marker propertie 2: "  + marker.getBounds());   //output:Marker propertie 2: Rect(0, 0 - 200, 200)
if (hitTest(item, marker, x-p.x, y-p.y)) {
//...
}

但改变其边界不会改变的点击区域的两种方式。可有人暗示我,我怎么能提高我可绘制的clickarea?

But both ways of changing its bounds doesn't change the click-area. Can someone hint me how I can increase the clickarea of my drawables?

推荐答案

这是谷歌地图API?如果你想延长势必可以在此改变您的扩展itemizedOverlay的则hitTest到这样的事情。

This is the google maps api? If you want to extend the bound you can overide the hitTest of your extended itemizedOverlay to something like this.

@Override
protected boolean hitTest(OverlayItem overlayItem, Drawable drawable, int x, int y) {
    Rect bounds = drawable.getBounds();
    int newLeft = (int) (200 * ((double)bounds.left / (double)bounds.width())  ) ;
    int newTop = (int) (200 * ((double)bounds.top  / (double)bounds.height()) );
    Rect square = new Rect(newLeft, newTop, 200, 200);
    return square.contains(x, y);
}

地图我似乎工作就只是测试。

Just tested on a map I have seems to work.

这篇关于ItemizedOverlay则hitTest的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆