Форум программистов, компьютерный форум CyberForum.ru

Отображения маркера на карте при длительном нажатии osmdroid - Android

Восстановить пароль Регистрация
 
SkN[i]lpl[e][r]
3 / 3 / 0
Регистрация: 12.05.2011
Сообщений: 230
27.03.2015, 11:33     Отображения маркера на карте при длительном нажатии osmdroid #1
Здравствуйте! Я пытаюсь реализовать на карте отображение маркера при длительном нажатии на нее... Перерыл весь интернет, нашел только один пример кода. Но при вставки в проект у меня практически все подчеркивается красным... Помогите разобраться какие методы и классы тут нужно объявлять и как вообще этим пользоваться...
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
MapEventsReceiver mReceive = new MapEventsReceiver() {
 
    @Override
    public boolean singleTapUpHelper(IGeoPoint arg0) {
     Log.d("debug", "Single tap helper");
     //your onSingleTap logic here
    return false;
    }
 
    @Override
    public boolean longPressHelper(IGeoPoint arg0) {
    Log.d("debug", "LongPressHelper");
    //your onLongPress logic here
    setMarker(arg0);
    return false;
    }
};
 
//Creating a handle overlay to capture the gestures
MapEventsOverlay OverlayEventos = new MapEventsOverlay(getBaseContext(), mReceive);
map.getOverlays().add(OverlayEventos);
 
//Refreshing the map to draw the new overlay
map.invalidate();
 
 
//I use this method to set the marker on touchPoint
    protected void setMarker(IGeoPoint arg0) {
 
touchPoint = (GeoPoint) arg0;
targetPoint = touchPoint;
path.addPoint(targetPoint);
 
//Listener to handle item's(markers) events
 myOnItemGestureListener = new OnItemGestureListener<OverlayItem>() {
 
    @Override
    public boolean onItemLongPress(int arg0, OverlayItem arg1) {
    Log.d("debug", "Testing long tap on item");
    //your item onLongPress logic here
        return false;
    }
 
    @Override
    public boolean onItemSingleTapUp(int index, OverlayItem item) {
    Log.d("debug", "Testing single tap on item");
    //your item onSingleTap logic here
        return true;
    }
};
 
itemarray.add(new OverlayItem("Marker " + cnt, "Info about marker " + cnt, touchPoint));
 
ItemizedOverlayWithFocus<OverlayItem> overlayDeItems = new ItemizedOverlayWithFocus<OverlayItem>(getBaseContext(), itemarray, myOnItemGestureListener);
map.getOverlays().add(overlayDeItems);
 
overlayDeItems.setFocusItemsOnTap(true);
map.invalidate();
itemarray = new ArrayList<OverlayItem>();
   cnt++;
}
Добавлено через 17 часов 46 минут
после долгих мучений переделал этот код вот под этот:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
MapEventsReceiver mReceive = new MapEventsReceiver() {
 
 
        @Override
        public boolean singleTapConfirmedHelper(GeoPoint p) {
            Log.d("debug", "Single tap helper");
            //your onSingleTap logic here
            logUser("korotkoe nazhatie");
            return false;
        }
 
        @Override
        public boolean longPressHelper(GeoPoint p) {
            Log.d("debug", "LongPressHelper");
            //your onLongPress logic here
            logUser("Dlinnoe nazhatie");
            MapEventsOverlay OverlayEventos = new MapEventsOverlay(getBaseContext(), mReceive);
            mapView.getOverlays().add(OverlayEventos);
 
//Refreshing the map to draw the new overlay
            mapView.invalidate();
 
            return false;
        }
    };
вроде все норм, скомпилировалось, запустил на телефоне, но... на нажатие никак не реагирует, ни лога не выводит ни метку не ставит, какбудто вызова этих функций не происходит, не могу понять почему.

Добавлено через 32 минуты
даже так переделал, все равно не работает, никак не реагирует...
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
 MapEventsReceiver mReceive = new MapEventsReceiver() {
 
 
        @Override
        public boolean singleTapConfirmedHelper(GeoPoint p) {
            Log.d("debug", "Single tap helper");
            //your onSingleTap logic here
            logUser("korotkoe nazhatie");
            return false;
        }
 
        @Override
        public boolean longPressHelper(GeoPoint p) {
            Log.d("debug", "LongPressHelper");
            //your onLongPress logic here
            logUser("Dlinnoe nazhatie");
            //Creating a handle overlay to capture the gestures
            setMarker(p);
            MapEventsOverlay OverlayEventos = new MapEventsOverlay(getBaseContext(), mReceive);
            mapView.getOverlays().add(OverlayEventos);
 
//Refreshing the map to draw the new overlay
            mapView.invalidate();
 
            return false;
        }
    };
 
 
 
 
    //I use this method to set the marker on touchPoint
   protected void setMarker(IGeoPoint arg0) {
 
       GeoPoint touchPoint = (GeoPoint) arg0;
    //  GeoPoint  targetPoint = touchPoint;
 
       //mapView.getOverlays().add(targetPoint);
 
//Listener to handle item's(markers) events
     ItemizedIconOverlay.OnItemGestureListener   myOnItemGestureListener = new ItemizedIconOverlay.OnItemGestureListener<OverlayItem>() {
 
            @Override
            public boolean onItemLongPress(int arg0, OverlayItem arg1) {
                Log.d("debug", "Testing long tap on item");
                //your item onLongPress logic here
                logUser("Dlinnoe nazhatie");
                return false;
            }
 
            @Override
            public boolean onItemSingleTapUp(int index, OverlayItem item) {
                Log.d("debug", "Testing single tap on item");
                //your item onSingleTap logic here
                logUser("korotkoe nazhatie");
                return true;
            }
        };
 
       ArrayList<OverlayItem> itemarray = new ArrayList<OverlayItem>();
        itemarray.add(new OverlayItem("Marker " , "Info about marker " , touchPoint));
 
        ItemizedOverlayWithFocus<OverlayItem> overlayDeItems = new ItemizedOverlayWithFocus<OverlayItem>(getBaseContext(), itemarray, myOnItemGestureListener);
        mapView.getOverlays().add(overlayDeItems);
 
        overlayDeItems.setFocusItemsOnTap(true);
        mapView.invalidate();
      //  itemarray = new ArrayList<OverlayItem>();
        //cnt++;
    }
Добавлено через 59 секунд
вот как сделать чтоб реагировал на нажатия на карту?...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.03.2015, 11:33     Отображения маркера на карте при длительном нажатии osmdroid
Посмотрите здесь:

Android Действие при нажатии на ссылку
Android Разные drawable для маркера Google Maps
Несколько snippet для маркера Google Maps v.2 Android
Android ListView: сбивается содержимое ImageView элемента при скроллинге + как сделать выделение пункта списка при нажатии?
Android Как изменить цвет пункта ListView при нажатии на него и сохранять его цвет при проматывании списка?
Android Ошибка при запуске AsyncTask при нажатии на пункт ActionBar
Android Ошибка при нажатии
Android Разработка приложения для отображения местоположения пользователей на карте
Android Ошибка при нажатии на кнопку
Android Привязка маркера к камере в google maps
Android Что то вроде Маркера
Android Описание маркера в развернутом виде, GoogleMap API

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 09:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru