【问题标题】:OSMdroid add custom icons to ItemizedOverlayOSMdroid 添加自定义图标到 ItemizedOverlay
【发布时间】:2012-05-18 23:17:50
【问题描述】:

我正在使用 ItemizedIconOverlay 类,我目前正在地图上显示事件以及具有相同默认图标的用户位置。

如何更改每个叠加层的图标集?

是否有类似于 google.maps 示例的内容:

    drawable = getResources().getDrawable(R.drawable.marker);
    drawable3 = getResources().getDrawable(R.drawable.disruption);
    drawable2 = getResources().getDrawable(R.drawable.marker_me);

    itemizedOverlay = new MyItemizedOverlay(drawable, mapView);
    itemizedOverlay2 = new MyItemizedOverlay(drawable2, mapView);
    itemizedOverlay3 = new MyItemizedOverlay(drawable3, mapView);

我让每个 itemizedOverlay 都有自己的标记...

如何使用 Open Street Maps 做到这一点?

mResourceProxy = new DefaultResourceProxyImpl(getApplicationContext());
this.mMyLocationOverlay = new ItemizedIconOverlay<OverlayItem>(mItems, new Glistener(), mResourceProxy);

感谢您的帮助,遗憾的是,这个开源项目没有太多在线支持......

【问题讨论】:

    标签: android itemizedoverlay osmdroid


    【解决方案1】:

    大概你的 mItems 是一个 OverlayItems 的 ArrayList,创建如下:

    mItems = new ArrayList<OverlayItem>();
    

    您将在此列表中添加单独的 OveralyItems,因此当您创建每个项目时,您可以这样做,在将其添加到列表之前设置标记:

    OverlayItem olItem = new OverlayItem("Here", "SampleDescription", point);
    Drawable newMarker = this.getResources().getDrawable(R.drawable.mymarker);
    olItem.setMarker(newMarker);
    mItems.add(olItem);
    

    其中 mymarker 是您的 drawables 文件夹中的 .png。

    更新 - 为整个叠加层设置默认标记,更改

    this.mMyLocationOverlay = new ItemizedIconOverlay<OverlayItem>(mItems, new Glistener(), mResourceProxy);
    

    this.mMyLocationOverlay = new ItemizedIconOverlay<OverlayItem>(mItems, newMarker, new Glistener(), mResourceProxy);
    

    newMarker 和以前一样

    【讨论】:

    • 但是我可以为整个叠加层添加一个默认标记吗?像 itemizedOverlay = new MyItemizedOverlay(drawable, mapView);然后添加到该叠加层的每个项目都会获得特定的标记。
    • 是的,似乎还有另一个可用的构造函数也采用默认标记。我将通过更新编辑我的答案
    • 我遇到的问题是我的自定义标记看起来非常大:/
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-22
    • 1970-01-01
    相关资源
    最近更新 更多