2016-09-27 3 views
2

Я работаю с API Google, и я создал настраиваемый infowindow для маркеров. Мне нужно показать карты панели инструментов, но используя этот метод map.getUiSettings(). setMapToolbarEnabled (true), , когда я нажимаю на маркер, отображается мое infowindow, но не панель инструментов.android map.getUiSettings(). SetMapToolbarEnabled (true), почему не отображается панель инструментов?

enter image description here

КОД:

@Override общественного недействительными 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 (Маркер)

Возвращает

верно, если слушатель потребил событие (то есть, по умолчанию не должно происходить), ложь в противном случае (т.е. поведение по умолчанию должно происходить). Поведение по умолчанию заключается в том, чтобы камера переместилась на маркер и появилось информационное окно.

+0

Если я вернуть ложь, я бросить исключение – helloimluca

+0

Что такое исключение? – antonio

+0

java.lang.NullPointerException: попытка вызвать виртуальный метод 'int android.graphics.Bitmap.getWidth()' на ссылке нулевого объекта на android.graphics.Bitmap.createScaledBitmap (Bitmap.java:591) на tesi.myview .MainActivity $ 3.getInfoWindow (MainActivity.java:274) – helloimluca

Смежные вопросы