我在我的新Android项目上使用osmdroid(因为我希望能够使用离线地图)但是我在定制分配给覆盖项目的信息气泡的外观方面遇到很多困难。
现在,我正在使用ItemizedOverlayWithFocus
叠加来显示我的项目;看着its code,我注意到整个事情是在onDrawFinished
方法中绘制的,所以我尝试创建自己的自定义叠加来覆盖此方法,但这很难得到结果。我希望得到的是这样的事情:
你们是如何设法在项目中获得自定义信息泡沫的?
我找到了一些类来为Google的MapView实现这样的东西(比如Jeff Gilfelt's MapView Balloons),但没有为osmdroid实现。
答案 0 :(得分:8)
修改强>
您可以从 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);
}
}
答案 1 :(得分:7)
你应该查看这个新的库,OSM奖励包。应该完全按照自己的意愿行事。