我在我的新
Android项目上使用osmdroid(因为我希望能够使用离线地图)但是我在定制分配给覆盖项目的信息气泡的外观方面遇到很多困难.
现在,我正在使用ItemizedOverlayWithFocus叠加来显示我的项目;看看its code,我注意到整个事情都是在onDrawFinished方法中绘制的,所以我尝试创建自己的自定义叠加来覆盖这个方法,但这很难得到结果.我希望得到的是这样的事情:
你们是如何设法在你的项目中获得自定义信息泡沫的?
我找到了几个类来为Google的MapView实现这样的东西(比如Jeff Gilfelt’s MapView Balloons),但是osmdroid却没有.
解决方法
编辑:
>这个答案最适合旧的谷歌地图apis.在谷歌地图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); } }