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

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Digetix
104 / 104 / 1
Регистрация: 09.04.2012
Сообщений: 649
#1

Разные drawable для маркера Google Maps - Программирование Android

09.02.2013, 16:14. Просмотров 855. Ответов 12
Метки нет (Все метки)

Здравствуйте. Есть код главной активити
Кликните здесь для просмотра всего текста
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
@Override
     public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main); 
       
         mapView = (MapView) findViewById(R.id.mapview);
         mapView.setBuiltInZoomControls(true);
         mapController = mapView.getController();
         mapController.setZoom(17);
         
         mapOverlays = mapView.getOverlays();
         drawable = this.getResources().getDrawable(R.drawable.red);         
         itemizedoverlay = new HelloItemizedOverlay(drawable, MainActivity.this);
                                       
         ParseQuery query = new ParseQuery("MyObject");
         query.findInBackground(new FindCallback() {
           public void done(List<ParseObject> myObject, ParseException e) {
             if (e == null) {
                  
                for ( i = 0; i < myObject.size(); i++) {
                 
                 textGet = myObject.get(i).getString("Text");
                 numbGet = myObject.get(i).getNumber("Numb");
                 geo1Dub = myObject.get(i).getParseGeoPoint("location").getLatitude();
                 geo2Dub = myObject.get(i).getParseGeoPoint("location").getLongitude();
                 geo1Int = (int) (geo1Dub*1E6);
                 geo2Int = (int) (geo2Dub*1E6);
                 pointGet = new GeoPoint(geo1Int, geo2Int);
                                                  
                 OverlayItem overlayitem = new OverlayItem(pointGet, numbGet.toString(),  textGet);
                 itemizedoverlay.addOverlay(overlayitem);
                                  
                } 
               
                mapOverlays.add(itemizedoverlay);
                mapView.postInvalidate();           
             } else {
               
                 Toast.makeText(getBaseContext(), "Не работает", Toast.LENGTH_SHORT).show();
                 
             }
           }
         });  
                                  
     }    
}


И есть класс наложения маркеров
Кликните здесь для просмотра всего текста
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
public class HelloItemizedOverlay extends ItemizedOverlay {
 
    private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
 
    Context mContext;
    Drawable drawable;
    
    public HelloItemizedOverlay(Drawable defaultMarker, Context context) {        
        super(boundCenterBottom(defaultMarker));
        
        mContext = context;        
        drawable = mContext.getResources().getDrawable(R.drawable.red);
    }
 
    public void addOverlay(OverlayItem overlay) {
        mOverlays.add(overlay);
        populate();
    }
    
    @Override
    protected OverlayItem createItem(int i) {
        return mOverlays.get(i);
        
    }
 
    @Override
    public int size() {
        return mOverlays.size();
    }
    @Override
    protected boolean onTap(int index) {
            
       OverlayItem item = mOverlays.get(index);
       AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);
       dialog.setTitle(item.getTitle());
       dialog.setMessage(item.getSnippet());
       dialog.setIcon(drawable);
       dialog.setPositiveButton("ОК", 
                new DialogInterface.OnClickListener() {                 
                       public void onClick(DialogInterface dialog, int which) {
                            }});       
       dialog.show();
       return true;
    }
}


Подскажите, пожалуйста, как использовать разный drawable для dialog.setIcon(drawable); ?
То есть в главной активити загружается число numbGet = myObject.get(i).getNumber("Numb"); и нужно сделать, чтоб если numbGet == 1, то drawable = mContext.getResources().getDrawable(R.drawable.red);, иначе drawable = mContext.getResources().getDrawable(R.drawable.green);
Пробовал делать static drawable и numbGet и делать проверки и в главной активити, и в классе, ничего не выходит, приложение вылетает с ошибкой.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.02.2013, 16:14     Разные drawable для маркера Google Maps
Посмотрите здесь:

Несколько snippet для маркера Google Maps v.2 - Программирование Android
Пользуюсь картами Google Maps v.2, там маркер добавляется вот так markerOptions = new MarkerOptions(); markerOptions.position(new...

Привязка маркера к камере в google maps - Программирование Android
Нужно сделать так что бы маркер добавленый на карту двигался вместе с камерой как вот здесь : http://jsfiddle.net/doktormolle/jcHqt/ ...

Google maps метод поиска фрагмента карт на разметке для разных версий андроид - Программирование Android
Столкнулся с такой проблемой. в андройде 6 работает один метод поиска фрагмента карт на разметке а в 5 и ранее - другой. //api 21+ ...

Разные ключи google для debug и signed приложений - Программирование Android
При компиляции с дебажным ключом в манифесте нужно указывать один API_KEY для google.maps, а для signed ключа - другой API_KEY. Значит...

Google Maps местоположение - Программирование Android
Ситуевина следующая - подключил гугл карты к своему приложению, теперь надо как-то реализовать кнопку &quot;мое местоположение&quot;.. стандартная...

Отображение на Google Maps - Программирование Android
Добрый день! Возник вопрос по GMaps. Нужно сделать, чтобы при открытии карты, она сразу центрувалась по моему местонахождению. Только...

Использование google maps - Программирование Android
Мне досталось приложение, которое использует google maps. Достаточно старый уже. Приложение есть на маркете, если скачивать от туда, то все...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
09.02.2013, 17:49     Разные drawable для маркера Google Maps #2
Java
1
2
3
4
5
if(numbGet == 1){
   dialog.setIcon(drawable1);
} else {
   dialog.setIcon(drawable2);
}
Digetix
104 / 104 / 1
Регистрация: 09.04.2012
Сообщений: 649
11.02.2013, 15:11  [ТС]     Разные drawable для маркера Google Maps #3
Цитата Сообщение от V0v1k Посмотреть сообщение
Java
1
2
3
4
5
if(numbGet == 1){
   dialog.setIcon(drawable1);
} else {
   dialog.setIcon(drawable2);
}
Я такое знаю. У меня HelloItemizedOverlay идёт отдельным файлом. В него нужно передать значение numbGet == 1
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
11.02.2013, 15:53     Разные drawable для маркера Google Maps #4
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
itemizedoverlay .setObject(myObject);
....
@Override
    protected boolean onTap(int index) {
            
       OverlayItem item = mOverlays.get(index);
       AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);
       dialog.setTitle(item.getTitle());
       dialog.setMessage(item.getSnippet());
   if(myObject.get(index).getNumber("Numb") == 1){
dialog.setIcon(drawable1);
} else {
       dialog.setIcon(drawable2);
}
       dialog.setPositiveButton("ОК", 
                new DialogInterface.OnClickListener() {                 
                       public void onClick(DialogInterface dialog, int which) {
                            }});       
       dialog.show();
       return true;
    }
Digetix
104 / 104 / 1
Регистрация: 09.04.2012
Сообщений: 649
11.02.2013, 16:48  [ТС]     Разные drawable для маркера Google Maps #5
Цитата Сообщение от V0v1k Посмотреть сообщение
Java
1
itemizedoverlay .setObject(myObject);
Эта строка ставиться в главной активити? После
Java
1
itemizedoverlay = new HelloItemizedOverlay(drawable, MainActivity.this);
И drawable указать в главной активити или в HelloItemizedOverlay ?
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
11.02.2013, 16:51     Разные drawable для маркера Google Maps #6
Цитата Сообщение от Digetix Посмотреть сообщение
Эта строка ставиться в главной активити? После
да.


Цитата Сообщение от Digetix Посмотреть сообщение
И drawable указать в главной активити или в HelloItemizedOverlay ?
лучше в активити.
Digetix
104 / 104 / 1
Регистрация: 09.04.2012
Сообщений: 649
11.02.2013, 17:43  [ТС]     Разные drawable для маркера Google Maps #7
Делаю в активити вот так:
Java
1
2
3
4
5
mapOverlays = mapView.getOverlays();
drawable = MainActivity.this.getResources().getDrawable(R.drawable.red);
drawable2 = MainActivity.this.getResources().getDrawable(R.drawable.green);
itemizedoverlay = new HelloItemizedOverlay(drawable, MainActivity.this);
itemizedoverlay.setObject(myObject);
А в HelloItemizedOverlay вот так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
protected boolean onTap(int index) {
            
       OverlayItem item = mOverlays.get(index);
       AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);
       dialog.setTitle(item.getTitle());
       dialog.setMessage(item.getSnippet());
       if(myObject.get(index).getNumber("Numb") == 1){
              dialog.setIcon(drawable1);
               } else {
              dialog.setIcon(drawable2);
              }
       dialog.setPositiveButton("ОК", 
                new DialogInterface.OnClickListener() {                 
                       public void onClick(DialogInterface dialog, int which) {
                            }});       
       dialog.show();
       return true;
    }
При onTap вылетает. Как правильно myObject передать из активити в отдельный файл HelloItemizedOverlay ?
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
11.02.2013, 17:53     Разные drawable для маркера Google Maps #8
а вы как передали?

Добавлено через 7 секунд
покажите весь код.
Digetix
104 / 104 / 1
Регистрация: 09.04.2012
Сообщений: 649
11.02.2013, 19:24  [ТС]     Разные drawable для маркера Google Maps #9
MainActivity
Кликните здесь для просмотра всего текста
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
public class MainActivity extends MapActivity { 
 
List<ParseObject> myObject;
Drawable drawable, drawable2;
 
@Override
     public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main); 
       
         mapView = (MapView) findViewById(R.id.mapview);
         mapView.setBuiltInZoomControls(true);
         mapController = mapView.getController();
         mapController.setZoom(17);
         
         mapOverlays = mapView.getOverlays();
         drawable = this.getResources().getDrawable(R.drawable.red);
         drawable2 = this.getResources().getDrawable(R.drawable.green);          
         itemizedoverlay = new HelloItemizedOverlay(drawable, MainActivity.this);
         itemizedoverlay.setObject(myObject);
                                       
         ParseQuery query = new ParseQuery("MyObject");
         query.findInBackground(new FindCallback() {
           public void done(List<ParseObject> myObject, ParseException e) {
             if (e == null) {
                  
                for ( i = 0; i < myObject.size(); i++) {
                 
                 textGet = myObject.get(i).getString("Text");
                 numbGet = myObject.get(i).getNumber("Numb");
                 geo1Dub = myObject.get(i).getParseGeoPoint("location").getLatitude();
                 geo2Dub = myObject.get(i).getParseGeoPoint("location").getLongitude();
                 geo1Int = (int) (geo1Dub*1E6);
                 geo2Int = (int) (geo2Dub*1E6);
                 pointGet = new GeoPoint(geo1Int, geo2Int);
                                                  
                 OverlayItem overlayitem = new OverlayItem(pointGet, numbGet.toString(),  textGet);
                 itemizedoverlay.addOverlay(overlayitem);
                                  
                } 
               
                mapOverlays.add(itemizedoverlay);
                mapView.postInvalidate();           
             } else {
               
                 Toast.makeText(getBaseContext(), "Не работает", Toast.LENGTH_SHORT).show();
                 
             }
           }
         });  
                                  
     }    
}


HelloItemizedOverlay
Кликните здесь для просмотра всего текста
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
 
public class HelloItemizedOverlay extends ItemizedOverlay {
 
    private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
 
    List<ParseObject> myObject;
    Drawable drawable, drawable2;
    
    public HelloItemizedOverlay(Drawable defaultMarker, Context context) {        
        super(boundCenterBottom(defaultMarker));
        
        mContext = context;        
    }
 
    public void addOverlay(OverlayItem overlay) {
        mOverlays.add(overlay);
        populate();
    }
    
    @Override
    protected OverlayItem createItem(int i) {
        return mOverlays.get(i);
        
    }
 
    @Override
    public int size() {
        return mOverlays.size();
    }
    @Override
    protected boolean onTap(int index) {
            
       OverlayItem item = mOverlays.get(index);
       AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);
       dialog.setTitle(item.getTitle());
       dialog.setMessage(item.getSnippet());
       if(myObject.get(index).getNumber("Numb") == 1){
              dialog.setIcon(drawable);
               } else {
              dialog.setIcon(drawable2);
              }
       dialog.setPositiveButton("ОК", 
                new DialogInterface.OnClickListener() {                 
                       public void onClick(DialogInterface dialog, int which) {
                            }});       
       dialog.show();
       return true;
    }
}
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
11.02.2013, 20:02     Разные drawable для маркера Google Maps #10
не вижу где вы передаете drawable и drawable2, не вижу метода setObject.
Digetix
104 / 104 / 1
Регистрация: 09.04.2012
Сообщений: 649
11.02.2013, 20:12  [ТС]     Разные drawable для маркера Google Maps #11
Цитата Сообщение от V0v1k Посмотреть сообщение
не вижу где вы передаете drawable и drawable2, не вижу метода setObject.
Строка 5, 18 и 19 в MainActivity и в HelloItemizedOverlay строка 8.

Цитата Сообщение от V0v1k Посмотреть сообщение
не вижу метода setObject.
Java
1
2
3
public void setObject(List<ParseObject> myObject {
        
    }
Он в HelloItemizedOverlay. Его нужно заполнять?
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
11.02.2013, 23:49     Разные drawable для маркера Google Maps #12
как все запущено. возьмите книгу по основам Java и учитесь.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.02.2013, 23:55     Разные drawable для маркера Google Maps
Еще ссылки по теме:

Google Maps (дебажный ключ) - Программирование Android
Пытаюсь разобраться с Google Maps. Возник такой вопрос, можно ли как-то запустить приложение с гугл мепс, используя обычный дебажный ключ...

Ошибка отображения google maps - Программирование Android
Всем привет, ничего не могу понять, не отображаются карты гугловские, ошибок в логах нет, появляется серый фон с надписью гугл в нижнем...

Не отображаются карты Google Maps - Программирование Android
Здравствуйте, ребята. Есть такой вопрос: был разработан информационный продукт, поддерживающий геолокацию на основе Google Maps,...

Google Maps API v2 Оповещание - Программирование Android
Помогите пожалуйста. Ставлю на карте маркер: public void onMapLongClick(LatLng latLng) { MarkerOptions markerOptions = new...

Не работает приложение с Google Maps - Программирование Android
Доброго времени суток. Недавно начал писать под Android и в поисках литературы наткнулся на одно приложение. Суть его в том, что оно по...


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

Или воспользуйтесь поиском по форуму:
Digetix
104 / 104 / 1
Регистрация: 09.04.2012
Сообщений: 649
11.02.2013, 23:55  [ТС]     Разные drawable для маркера Google Maps #13
Через static передавать?
Yandex
Объявления
11.02.2013, 23:55     Разные drawable для маркера Google Maps
Ответ Создать тему
Опции темы

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