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

时间:2019-05-22 16:30:49

标签: android maps openstreetmap osmdroid

我在地图上添加了版权声明,如下所示:

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

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

我希望它能以某种方式更改版权叠加文字。但是,如下面的屏幕快照所示,叠加层仍显示© OpenStreetMap contributors

有人知道应该使用这种方法吗?我有想念吗?

screenshot

(我尝试编辑该通知的原因是找到一种向OSM捐款的方法,类似于openstreetmap.org上的叠加层

1 个答案:

答案 0 :(得分:0)

您可以查看源代码:https://github.com/osmdroid/osmdroid/blob/473046516b73f16b9e4709500fd2171052d7ae9e/osmdroid-android/src/main/java/org/osmdroid/views/overlay/CopyrightOverlay.java,因为它是开源的。

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

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

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

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

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

我认为这是API中的错误。 setCopyrightNotice方法不应该公开,这很令人困惑。

我建议过分实施您自己的版权声明-您可以放任原始来源,并完全按照自己的意愿复制代码。