2016-08-12 2 views
0

У меня есть некоторые маркеры карт google (10) с информационным окном. Нажав на информационное окно, должно начаться новое действие, и значение должно быть передано через intent.put extra(): . Моя проблема заключается в том, что всегда значение последнего маркера переносится на следующее действие, хотя я нажимаю на другую информацию окно, в данном случае это 101010. Моего код:Android Google Maps, несколько намерений

Marker marker1 = map.addMarker(new MarkerOptions() 
        .title(itemList.get(1)) 
        .icon(BitmapDescriptorFactory.fromResource(getDrawableId(imagename))) 
        .position(new LatLng(Double.parseDouble(itemList.get(2)), Double.parseDouble(itemList.get(3)))) 

      ); 



      System.out.println("MoID=" + monsterid1); 
      map.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() { 
       @Override 
       public void onInfoWindowClick(Marker marker1) { 
        Intent intent1 = new Intent(showmap.this, MonsterDetail.class); 
        intent1.putExtra("monsterid", monsterid); //value i want to transfer to next activity e.g "111" 
        startActivity(intent1); 


       } 
      }); 


Marker marker2 = map.addMarker(new MarkerOptions() 
        .title(itemList.get(5)) 
        .icon(BitmapDescriptorFactory.fromResource(getDrawableId(imagename))) 
        .position(new LatLng(Double.parseDouble(itemList.get(6)), Double.parseDouble(itemList.get(7)))) 

      ); 



      System.out.println("MoID=" + monsterid1); 
      map.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() { 
       @Override 
       public void onInfoWindowClick(Marker marker2) { 
        Intent intent2 = new Intent(showmap.this, MonsterDetail.class); 
        intent2.putExtra("monsterid", monsterid2); //value i want to transfer to next activity e.g. "222" 
        startActivity(intent2); 


       } 
      }); 

Marker marker10 = map.addMarker(new MarkerOptions() 
... 
... 
... 
intent10.putExtra("monsterid", monsterid10); //value i want to transfer to next activity e.g. "101010" 

ответ

1

OnInfoWindowClickListener является для карты, а не маркеров. Таким образом, ваш текущий код:

  • Создание OnInfoWindowClickListener

  • Создание другого OnInfoWindowClickListener, выбрасывая предыдущий

  • и так далее

Зов setOnInfoWindowClickListener()раз. В onInfoWindowClick() вам передается Marker, который представляет то, что пользователь нажал. Используя это значение Marker, определите значение дополнительного для ввода в Intent. Например, IIRC, Marker имеет метод getId(), поэтому вы можете иметь идентификаторы маркерного сопоставления для дополнительных значений, где в onInfoWindowClick() вы просматриваете значение для маркера с кликом.

+0

Большое спасибо! Проблема исправлена ​​:) – AndreasK