【发布时间】:2021-03-16 17:18:41
【问题描述】:
我有一张我的国家分界线到旅游区的地图(PathOverlay),我希望能够在上面显示每个地区的名称,只有纯文本,没有气泡,没有任何东西。
我已经搜索过如何做到这一点,但我发现的只是 osmdroid 的 svn 主干中的ItemizedOverlayWithFocus。
有谁知道如何在地图上添加简单的文字(当然是纬度和经度)?
【问题讨论】:
标签: osmdroid
我有一张我的国家分界线到旅游区的地图(PathOverlay),我希望能够在上面显示每个地区的名称,只有纯文本,没有气泡,没有任何东西。
我已经搜索过如何做到这一点,但我发现的只是 osmdroid 的 svn 主干中的ItemizedOverlayWithFocus。
有谁知道如何在地图上添加简单的文字(当然是纬度和经度)?
【问题讨论】:
标签: osmdroid
子类覆盖(例如“SimpleTextOverlay”)。
在构造函数或设置器中,初始化您的文本、其位置 (GeoPoint) 以及要使用的 Paint。
然后这样实现draw方法:
@Override protected void draw(Canvas canvas, MapView mapView, boolean shadow) {
if (shadow) return;
//Get the screen position:
final Projection pj = mapView.getProjection();
pj.toMapPixels(geoPosition, screenPosition);
//And draw your text at screenPosition:
canvas.drawText(text, screenPosition.x, screenPosition.y, paint);
}
【讨论】:
答案在这里发布
How to add text below/above in the middle of the polyline in osmdroid
使用 Marker 覆盖类,它是在 v5.2 左右添加到 osmdroid 中的。 设置标题,然后将图标设置为空,然后将其添加到地图中(按此顺序)
【讨论】:
distanceMarker = new Marker(mapView);
distanceMarker.setIcon(null);
distanceMarker.setTextIcon(distance);
distanceMarker.setOnMarkerClickListener((marker, mapView) -> true);
GeoPoint p3 = new GeoPoint((loc.getLatitude()+poi.getLat())/2,(loc.getLongitude()+poi.getLon())/2);
distanceMarker.setPosition(p3);
mapView.getOverlayManager().add(distanceMarker);
【讨论】: