【问题标题】:Cannot access resource icons when running with osmdroid-android-3.0.7使用 osmdroid-android-3.0.7 运行时无法访问资源图标
【发布时间】:2012-02-03 20:49:34
【问题描述】:

我正在尝试启动一个简单的地图活动,该活动使用 osmdroid-android-3.0.7 库显示地图和几个标记。该代码在旧版本(1.10)下工作。我收到以下错误: 02-03 15:14:30.574:E/AndroidRuntime(10277):原因:java.lang.IllegalArgumentException:找不到资源:marker_default.png

当我解压缩 jar 文件时,我可以在顶级目录中看到一个图标列表,其中一个确实是 marker_default.png。这是代码的sn-p:

public class MapDisplay extends Activity 
{
    private MapView mapView;
    private ResourceProxy resProxy;
    private ItemizedOverlay<OverlayItem> locationOverlay;

    public void onCreate(final Bundle savedState) 
    {
        super.onCreate(savedState);

        resProxy = new DefaultResourceProxyImpl(getApplicationContext());

        final RelativeLayout rl = new RelativeLayout(this); 

        mapView = new MapView(this, 256);
        mapView.setBuiltInZoomControls(true);
        mapView.getController().setZoom(6);
             mapView.getController().setCenter(new GeoPoint(51500000, 5400000));
                  rl.addView(mapView, new RelativeLayout.LayoutParams 
                      (LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

        final ArrayList<OverlayItem> items = new ArrayList<OverlayItem>();
        OverlayItem o1 = new OverlayItem("Location 1", "Comment", 
                       new GeoPoint(51500000, 5400000));
                  o1.setMarker(getResources().getDrawable(R.drawable.icall));
        items.add(o1);
        OverlayItem o2 = new OverlayItem("Location 2", "Comment", 
                       new GeoPoint(52500000, 5500000));
                  o2.setMarker(getResources().getDrawable(R.drawable.icall));
        items.add(o2);
                  this.locationOverlay = new ItemizedIconOverlay<OverlayItem>(items,
                    new ItemizedIconOverlay.OnItemGestureListener<OverlayItem>() 
                    {
                        @Override
                        public boolean onItemSingleTapUp(final int index, 
                                      final OverlayItem item) 
                        {
                                Toast.makeText(
                                                MapDisplay.this,
                                                "Item '" + item.mTitle + "' (index=" + index
                                                                + ") got single tapped up", Toast.LENGTH_LONG).show();
                                return true; // We 'handled' this event.
                        }

                        @Override
                        public boolean onItemLongPress(final int index, 
                          final OverlayItem item) 
                        {
                                Toast.makeText(
                                                MapDisplay.this,
                                                "Item '" + item.mTitle + "' (index=" + index
                                                                + ") got long pressed", Toast.LENGTH_LONG).show();
                                return false;
                        }
                }, resProxy);
           this.mapView.getOverlays().add(this.locationOverlay);
           mapView.invalidate();
                this.setContentView(rl);
    }
}

当我尝试使用简单的覆盖并因此没有为标记设置任何图标时,我得到了相同的错误,除了它引用了 person.png(该图标也在解压缩的 jar 文件中)。 我已经通过项目属性添加了jar文件,并且可以访问api就好了。

为什么我无法访问图标?

顺便说一句,我试图将图标复制到我的项目中,但我得到了同样的错误。

谢谢,安妮娅

【问题讨论】:

    标签: android osmdroid


    【解决方案1】:

    我遇到了同样的问题 - 在最新的 jar (3.0.8) 中,问题已解决。

    【讨论】:

    • 你从哪里得到 3.0.8?本地构建说 3.0.8 不是 3.0.8
    • 这个罐子工作正常 - link
    【解决方案2】:

    错误跟踪器中有一个issue,我认为它对此有解决方案。我自己没有遇到过这个问题,我提供了我自己的位图。我确实记得所有代理的东西都令人困惑和麻烦。

    【讨论】:

    • 我报告了你提到的问题,这与这个问题完全相同,所以我想说这绝对是 osmdroid 中的一个错误 :( 解决方法是按照问题中的说明修补 osmdroid或提供你自己的图标(我相信通过实现代理的东西)。
    • 谢谢。现在我将使用早期版本。希望这些错误将很快得到修复。
    猜你喜欢
    • 2012-09-09
    • 2012-03-02
    • 2012-06-22
    • 1970-01-01
    • 2012-12-20
    • 1970-01-01
    • 2011-09-23
    • 2015-03-24
    • 1970-01-01
    相关资源
    最近更新 更多