使用osmdroid水龙头覆盖项目自定义信息泡沫 [英] Custom information bubble on tap for overlay items using osmdroid

查看:215
本文介绍了使用osmdroid水龙头覆盖项目自定义信息泡沫的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我用osmdroid在我的新的Andr​​oid项目(因为我希望能够使用离线地图),但我遇到很多困难定制ñ感到分配给覆盖项目的信息泡沫的样子。

I'm using osmdroid on my new Android project (since I want to be able to use offline maps) but I encounter many difficulties to customize the look 'n feel of the information bubble assigned to an overlay item.

现在,我使用的是 ItemizedOverlayWithFocus 叠加显示我的物品;看<一href="http://$c$c.google.com/p/osmdroid/source/browse/trunk/osmdroid-android/src/org/osmdroid/views/overlay/ItemizedOverlayWithFocus.java?r=802">its code ,我发现整个事情被绘制在 onDrawFinished 方法,所以我试图创建自己的自定义叠加重写此方法,但是这是pretty的很难得到一个结果。我很想得到的东西,就像这样:

Right now, I'm using an ItemizedOverlayWithFocus overlay to display my items; looking at its code, I noticed the whole thing was drawn in the onDrawFinished method so I tried to create my own custom overlay to override this method but this is pretty difficult to get a result. What I would love to get is something just like this :

如何设法得到一个自定义的信息泡沫对你的项目?

How did you guys managed to get a custom information bubble on your projects?

我找了几个类来实现对谷歌的图形页面这样的事情(如杰夫Gilfelt的图形页面气球),但没有为osmdroid。

I found a few classes to implement such a thing for Google's MapView (like Jeff Gilfelt's MapView Balloons) but nothing for osmdroid.

推荐答案

编辑:

  • 在这个答案是最适合年长谷歌地图的API。在谷歌地图V2这 已经给出的是。
  • This answer was best for older google map apis. In google Map V2 this thing is already given.

您可以从<打击> https://github.com/galex/的code Android的mapviewballoons

You can get the code from https://github.com/galex/android-mapviewballoons

您可以得到选择的气球从BalloonItemizedOverlay.java的方法如下

you can get selected balloon from the method of "BalloonItemizedOverlay.java" as follow

private void hideOtherBalloons(List<Overlay> overlays) {
        for(int i=0; i<overlays.size();i++ ){
            if (overlays.get(i) instanceof BalloonItemizedOverlay<?> && overlays.get(i) != this) {
                ((BalloonItemizedOverlay<?>) overlays.get(i)).hideBalloon();
            }else{
                BalloonOverlayView.SELECTED_BALLOON = i;
                Log.i(i+" : Baloon Open", BalloonOverlayView.SELECTED_BALLOON+"");
            }
        }
}

要设置的数据,可以使用BalloonOverlayView.java文件如下的setBalloonData方式:

To set the data you can use setBalloonData method of BalloonOverlayView.java file as follow:

protected void setBalloonData(Item item, ViewGroup parent) {
        if (item.getTitle() != null) {
            title.setVisibility(VISIBLE);
            title.setText(item.getTitle());
        } else {
            title.setText("");
            title.setVisibility(GONE);
        }
        if (item.getSnippet() != null) {
            snippet.setVisibility(VISIBLE);
            snippet.setText(item.getSnippet());
        } else {
            snippet.setText("");
            snippet.setVisibility(GONE);
        }
}

这篇关于使用osmdroid水龙头覆盖项目自定义信息泡沫的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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