多个setonInfoWindowClickListener无法正常工作

时间:2013-05-18 05:41:51

标签: android google-maps-markers google-maps-android-api-2

所以这些是我在地图中的两个循环,当我点击setoninfowindow时,我只在新屏幕中获得first.class。如果我点击其中一个标记,它必须转到first.class,如果我点击另一个标记,它必须转到second.class

firstloop

for (HashMap<String, Object> data : firstLoop) {
    final String regno =    (String) data.get(REG_NO);              
    String dname =  (String) data.get(CAR);
    final String driver_ph =    (String) data.get(MOBILE);
    longt=Float.parseFloat((String) data.get(LONGITUDE));
    lat=Float.parseFloat((String) data.get(LATITUDE));
    map.addMarker(new MarkerOptions()
   .position(new LatLng(lat, longt))
   .title("title2")
   .snippet(name)
   .icon(BitmapDescriptorFactory
   .fromResource(R.drawable.pin_car)));
    map.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {                      
    @Override
    public void onInfoWindowClick(Marker marker) {
    Intent in=new Intent(getApplicationContext(),second.class);
    startActivity(in);
    }});      } 

secondloop

for (HashMap<String, Object> data : secondloop) {
    String reg =    (String) data.get(ID);
    longt=Float.parseFloat((String) data.get(1_LONGITUDE));
    lat=Float.parseFloat((String) data.get(1_LATITUDE));
    map.addMarker(new MarkerOptions()
    .position(new LatLng(lat, longt))
    .title("title1")
    .snippet(reg)
    .icon(BitmapDescriptorFactory
    .fromResource(R.drawable.pin_car)));
    map.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {
    @Override
    public void onInfoWindowClick(Marker marker) {
    Intent in=new Intent(getApplicationContext(),first.class);
    in.putExtra("driverid", marker.getSnippet());
    startActivity(in);  }});          }

1 个答案:

答案 0 :(得分:0)

不要将GoogleMap.setOnInfoWindowClickListener放入循环中。它会覆盖您之前设置的任何侦听器。

在您检索GoogleMap的引用之后立即设置一次,并区分onInfoWindowClick内的标记。