2016-09-27 86 views
2

我正在使用google API,并且我为标记创建了自定义infowindow。 我需要显示工具栏地图,但使用这种方法 map.getUiSettings()。 setMapToolbarEnabled(true), 当我点击标记时,它显示我的infowindow而不是工具栏。android map.getUiSettings()。setMapToolbarEnabled(true),为什么不显示工具栏?

enter image description here

CODE:

@覆盖 公共无效onMapReady(GoogleMap的GoogleMap的){

mMap = googleMap; 
    mMap.getUiSettings().setMapToolbarEnabled(true); 
    mMap.setOnMarkerClickListener(this); 
    mMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() { 
     @Override 
     public void onInfoWindowClick(Marker marker) { 


      MarkerCouple idtype = (MarkerCouple) marker.getTag(); 

      if (idtype.getType() == ResourceType.EVENTS && currentEvents.get(idtype.getID()) != null) { 

       Resources resources = currentResources.get(currentEvents.get(idtype.getID()).getRes_ID()); 
       Events event = currentEvents.get(idtype.getID()); 

       Intent i = new Intent(MainActivity.this, ShowEventActivity.class); 
       i.putExtra(Variable.USER_JSON, user.toJSON()); 
       i.putExtra(Variable.EVENT_JSON, event.toJSON()); 
       i.putExtra(Variable.RESOURCE_JSON, resources.toJSON()); 

       startActivityForResult(i, Variable.SHOW_EVENT); 
      } 

      if (idtype.getType() == ResourceType.PLACES && currentPlaces.get(idtype.getID()) != null) { 
       Resources resources = currentResources.get(currentPlaces.get(idtype.getID()).getRes_ID()); 
       Places place = currentPlaces.get(idtype.getID()); 

       Intent i = new Intent(MainActivity.this, ShowPlaceActivity.class); 
       i.putExtra(Variable.USER_JSON, user.toJSON()); 
       i.putExtra(Variable.PLACE_JSON, place.toJSON()); 
       i.putExtra(Variable.RESOURCE_JSON, resources.toJSON()); 

       startActivityForResult(i, Variable.SHOW_PLACE); 

      } 
     } 
    }); 

    mMap.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() { 
     @Override 
     public View getInfoWindow(Marker marker) { 

      View v = getLayoutInflater().inflate(R.layout.marker_preview, null); 
      ImageView m = (ImageView) v.findViewById(R.id.marker_image); 
      m.setImageBitmap(Bitmap.createScaledBitmap(imageToShow, 600, 400, true)); 
      return v; 
     } 

     @Override 
     public View getInfoContents(Marker marker) { 


      return null; 
     } 
    }); 
    new MarkerAsync().execute(); 


} 

@Override 
public boolean onMarkerClick(final Marker marker) { 

    MarkerCouple idtype = (MarkerCouple) marker.getTag(); 


    if (idtype.getType() == ResourceType.EVENTS && currentEvents.get(idtype.getID()) != null) { 
     Events event = currentEvents.get(idtype.getID()); 
     final Resources resources = currentResources.get(event.getRes_ID()); 
     Picasso.with(MainActivity.this).invalidate(Variable.DOWNLOAD_URL + resources.getURI()); 
     new AsyncTask<Void, Void, Void>() { 
      @Override 
      protected Void doInBackground(Void... params) { 
       try { 
        imageToShow = Picasso.with(MainActivity.this).load(Variable.DOWNLOAD_URL + resources.getURI()).get(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
       return null; 
      } 

      @Override 
      protected void onPostExecute(Void v) { 
       marker.showInfoWindow(); 

      } 
     }.execute(); 


    } 


    if (idtype.getType() == ResourceType.PLACES && currentPlaces.get(idtype.getID()) != null) { 

     Places place = currentPlaces.get(idtype.getID()); 
     final Resources resources = currentResources.get(place.getRes_ID()); 
     Picasso.with(MainActivity.this).invalidate(Variable.DOWNLOAD_URL + resources.getURI()); 
     Picasso.with(MainActivity.this).invalidate(Variable.DOWNLOAD_URL + resources.getURI()); 
     new AsyncTask<Void, Void, Void>() { 
      @Override 
      protected Void doInBackground(Void... params) { 
       try { 
        imageToShow = Picasso.with(MainActivity.this).load(Variable.DOWNLOAD_URL + resources.getURI()).get(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
       return null; 
      } 

      @Override 
      protected void onPostExecute(Void v) { 
       marker.showInfoWindow(); 

      } 
     }.execute(); 

    } 


    return true; 
} 
+0

请发表您的代码 –

+0

我贴我的代码 – helloimluca

回答

1

只需return false;onMarkerClick()

the documentation

公共抽象布尔onMarkerClick(标记标记)

返回

真,如果听众已经消耗的事件(即,不应该发生的默认行为),否则为false(即默认行为应该发生)。默认行为是让相机移动到标记并出现一个信息窗口。

+0

如果我返回false,我抛出异常 – helloimluca

+0

什么是例外? – antonio

+0

java.lang.NullPointerException:试图在null对象引用 上调用虚拟方法'int android.graphics.Bitmap.getWidth()',位于android.graphics.Bitmap.createScaledBitmap(Bitmap.java:591) at tesi.myview .MainActivity $ 3.getInfoWindow(MainActivity.java:274) – helloimluca

相关问题