我的地图中有2个标记(openstreetmap)

时间:2012-10-23 01:11:31

标签: android osmdroid

好。 我有一个恼人的问题,我不知道如何解决它!

当我得到lat和lng形式的gps。地图显示2个标记(默认情况下为一个图标,由我自定义另一个图标)。 我需要在地图上显示costumized图标!!

pd:我已经改变了方法DRAW()

的路径

这是我的代码。

myOpenMapView = (MapView)findViewById(R.id.openmapview);
    myOpenMapView.setBuiltInZoomControls(true);
    myMapController = myOpenMapView.getController();
    myMapController.setZoom(12);

    myOpenMapView.setMultiTouchControls(true);


    ArrayList<OverlayItem> anotherOverlayItemArray;
    anotherOverlayItemArray = new ArrayList<OverlayItem>();

    GeoPoint geoPoint = new GeoPoint(Double.valueOf(lat),
                                     (Double.valueOf(lng)));


    anotherOverlayItemArray.add(new OverlayItem("US", "US", geoPoint));
    myMapController.setCenter(geoPoint);
    myMapController.animateTo(geoPoint);


    DefaultResourceProxyImpl defaultResourceProxyImpl = new DefaultResourceProxyImpl(this);
    MyItemizedIconOverlay myItemizedIconOverlay = new MyItemizedIconOverlay(anotherOverlayItemArray, null, defaultResourceProxyImpl);

    myOpenMapView.getOverlays().add(myItemizedIconOverlay);

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,我修复了删除super.draw(...)调用我自己的ItemizedIconOverlay类的draw overrided函数。

希望它有所帮助!

重要编辑:上面解释的解决方案似乎会导致标记点按操作出现问题(我们必须调用super.draw方法)。

为了解决这个问题,我留下了我的CustomItemizedOverlay类,并在每个元素上使用OverlayItem的setMarker(Drawable d)方法更改了图标,粗鲁但是完成了工作。

答案 1 :(得分:0)

Drawable newMarker = this.getResources().getDrawable(R.drawable.ic_launcher);    

mMyLocationOverlay = new ItemizedIconOverlay<OverlayItem>(anotherOverlayItemArray,
            newMarker, "listener", new DefaultResourceProxyImpl(getActivity()));

    mapView.getOverlays().add(mMyLocationOverlay);

或者myLocationOverlay.enableMyLocation(); is enabled这意味着它会在地图上显示地点的默认标记