Добавление ItemizedOverlay к моему просмотру карты

Я занимаюсь разработкой картографического приложения с помощью osm. я хочу создать маркер на моем mapview. я использую следующий код:

<code>this.mMyLocationOverlay = new ItemizedOverlay<OverlayItem>(this, items,
                new ItemizedOverlay.OnItemGestureListener<OverlayItem>() {
                    @Override
                    public boolean onItemSingleTapUp(final int index, final OverlayItem item) {
                        Toast.makeText(
                                SampleWithMinimapItemizedoverlay.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(
                                SampleWithMinimapItemizedoverlay.this,
                                "Item '" + item.mTitle + "' (index=" + index
                                        + ") got long pressed", Toast.LENGTH_LONG).show();
                        return false;
                    }
                }, mResourceProxy);
</code>

...

но в строке 2 под "новым ItemizedOverlay.OnItemGestureListener" я получаю красную линию и ошибку, которая говорит об исправлении настройки проекта. Я очень смущен. почему я получаю эту ошибку в затмении? Помогите мне, пожалуйст

Ответы на вопрос(2)

Инструменты Android -> Исправить проект (или что-то в этом роде). Также попробуйте очистить свой проект.

 aTa13 мая 2012 г., 19:47
ообщение об ошибке @redline: ItemizedOverlay.OnItemGestureListener не может быть преобразован в тип
 aTa13 мая 2012 г., 19:13
tnx oyashino, но я сделал это, и это мне не помогло
 Oyashiro13 мая 2012 г., 19:14
Logcat / Console говорит что-то еще? Можете ли вы опубликовать всю строку ошибки?
Решение Вопроса

Ты можешь использовать что-то подобное. - расширить ItemizedOverlay

package dispatch.driver.osmMaps;

import java.util.ArrayList;

import org.osmdroid.ResourceProxy;
import org.osmdroid.api.IMapView;
import org.osmdroid.views.overlay.ItemizedIconOverlay;
import org.osmdroid.views.overlay.OverlayItem;

import android.graphics.Point;

public class OsmMapsItemizedOverlay extends ItemizedIconOverlay<OverlayItem>
{
    private ArrayList<OverlayItem> mItemList = new ArrayList<OverlayItem>();

    public OsmMapsItemizedOverlay(ArrayList<OverlayItem> pList,
            ItemizedIconOverlay.OnItemGestureListener<OverlayItem> pOnItemGestureListener, ResourceProxy pResourceProxy)
    {
        super(pList, pOnItemGestureListener, pResourceProxy);
        mItemList = pList;
        // TODO Auto-generated constructor stub
    }

    public void addOverlay(OverlayItem aOverlayItem)
    {
        mItemList.add(aOverlayItem);
        populate();
    }

    public void removeOverlay(OverlayItem aOverlayItem)
    {
        mItemList.remove(aOverlayItem);
        populate();
    }

    @Override
    protected OverlayItem createItem(int i)
    {
        return mItemList.get(i);
    }

    @Override
    public int size()
    {
        if (mItemList != null)
            return mItemList.size();
        else
            return 0;
    }

    @Override
    public boolean onSnapToItem(int arg0, int arg1, Point arg2, IMapView arg3)
    {
        // TODO Auto-generated method stub
        return false;
    }

}

А в классе своей деятельности звони

private void PrepareItemizedOverlay()
    {
        /* itemized overlay */
        mItemizedOverlay = new OsmMapsItemizedOverlay(mItems,
                new ItemizedIconOverlay.OnItemGestureListener<OverlayItem>()
                {
                    @Override
                    public boolean onItemSingleTapUp(final int index, final OverlayItem item)
                    {

                        Toast.makeText(OsmMapsActivity.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(OsmMapsActivity.this,
                                "Item '" + item.mTitle + "' (index=" + index + ") got long pressed", Toast.LENGTH_LONG)
                                .show();

                        return true;
                    }
                }, mResourceProxy);
    }

чтобы добавить новый оверлей, вы можете использовать что-то вроде этого:

{    OverlayItem overlayItem;


            overlayItem = new OverlayItem("Center", "Center", (GeoPoint) aPoint);



            mItemizedOverlay.addOverlay(overlayItem);

            mMapView.getOverlays().clear();
            mMapView.getOverlays().add(mItemizedOverlay);
            mMapView.getController().animateTo(aPoint);
}
 aTa15 мая 2012 г., 07:18
Большое спасибо, Айли. спасибо уууууууууууууууу
 Ahyle Blue15 мая 2012 г., 08:46
Нет проблем. Удачи

Ваш ответ на вопрос