android - 使用 osmdroid 的覆盖项目自定义信息气泡

标签 android android-mapview osmdroid

我在我的新 Android 项目上使用 osmdroid(因为我希望能够使用离线 map )但是我在自定义分配给叠加项的信息气泡的外观时遇到了很多困难。

现在,我正在使用 ItemizedOverlayWithFocus 叠加层来显示我的项目;看着its code ,我注意到整个事情都是在 onDrawFinished 方法中绘制的,所以我尝试创建自己的自定义叠加层来覆盖此方法,但这很难获得结果。我想得到的是这样的东西:

The result

你们是如何设法在您的项目中获得自定义信息气泡的?

我找到了一些类来为 Google 的 MapView(如 Jeff Gilfelt's MapView Balloons)实现这样的东西,但没有为 osmdroid 实现。

最佳答案

编辑:

  • 此答案最适合较旧的 google map api。在谷歌地图 V2 这个 东西已经给了。

您可以从 https://github.com/galex/android-mapviewballoons 获取代码

您可以通过“BalloonItemizedOverlay.java”的方法获取选中的气球,如下所示

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 方法,如下所示:

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);
        }
}

关于android - 使用 osmdroid 的覆盖项目自定义信息气泡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9362137/

相关文章:

Android:使用多个形状作为按钮背景

Android房间类型转换器不工作

android map View 不工作

android - 谷歌地图中的 fatal error

android - 如何使用 MyLocationOverlay 在 MapView 上绘制当前 GPS 位置?

android - Android 本地存储中的 Base64 与 Jpeg

android - 保存图片到新目录

android - 使用 Open Street Map 在错误的地理点显示覆盖

android - Gradle 项目同步失败。 Osmdroid

android - OSM 中的离线路由 - android