osmdroid 的 CopyrightOverlay.setCopyrightNotice() 是如何工作的?

How does osmdroid's CopyrightOverlay.setCopyrightNotice() work?

我像这样在我的地图中添加了版权声明:

/* add copyright overlay */
val copyrightOverlay = CopyrightOverlay(this)
copyrightOverlay.setCopyrightNotice("This doesn't do anything :(")
mapView.overlays.add(copyrightOverlay)

documentation 没有提到 setCopyrightNotice(String pCopyrightNotice) 应该做什么。

我希望它能以某种方式改变版权覆盖的文本。但如下图所示,叠加层仍然显示 © OpenStreetMap contributors

有谁知道这个方法应该怎么用?我错过了什么吗?

(我试图编辑该通知的原因是想找到一种向 OSM 捐款的方式,类似于 openstreetmap.org

上的覆盖图

您可以查看 source code :因为它是开源的。

我们可以看到setter应该设置文本:

public void setCopyrightNotice(final String pCopyrightNotice) {
        mCopyrightNotice = pCopyrightNotice;
}

但是我们也可以看到draw方法从tile source获取了版权声明:

@Override
public void draw(Canvas canvas, MapView map, boolean shadow) {
    setCopyrightNotice(map.getTileProvider().getTileSource().getCopyrightNotice());  
    draw(canvas, map.getProjection());
}

这实际上会覆盖您在每次绘制叠加层时设置的值。

我有点认为这是API中的一个错误。 setCopyrightNotice 方法不应该是 public,这只会造成混淆。

我建议全面实施您自己的版权声明 - 您可以保留原始来源并完全按照您想要的方式重现代码。