10

Sto sviluppando in Google Maps APIv2. Il problema che sto affrontando ora è che posso aggiungere solo una riga di parola in info windows/snippet. Ma l'output che voglio è in grado di visualizzare in forma di linea di separazione come esempio mostra di seguito. Quindi c'è qualche metodo possibile per risolverlo?Linea multipla o linea di interruzione in .snippet (google maps apiv2)

Esempio:

Coordinate: 03,05085, 101,70,506 mila

Speed ​​Limit: 80 chilometri all'ora

public class MainActivity extends FragmentActivity { 
    static final LatLng SgBesi = new LatLng(03.05085, 101.76022); 
    static final LatLng JB = new LatLng(1.48322, 103.69065); 
    private GoogleMap map; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)) 
      .getMap(); 

    map.addMarker(new MarkerOptions().position(SgBesi) 
     .title("KM D7.7 Sungai Besi")    //name 
     .snippet("Coordinate: 03.05085, 101.70506")); //description 

    map.addMarker(new MarkerOptions().position(JB) 
     .title("test") 
     .snippet("Hey, how are you?")); 

     // .icon(BitmapDescriptorFactory //set icon 
     //  .fromResource(R.drawable.ic_launcher))); 

    // move the camera instantly with a zoom of 15. 
    map.moveCamera(CameraUpdateFactory.newLatLngZoom(SgBesi, 15)); 

    // zoom in, animating the camera.  
    map.animateCamera(CameraUpdateFactory.zoomTo(15), 2000, null); 
    } 
} 
+0

dopo aver esaminato il numero di esempi simili come il codice sopra riportato, non riesco ancora a risolvere il mio problema. Non sono bravo in programmazione e non capisco davvero come dovrei specificare una particolare posizione con infowindow personalizzato. La maggior parte degli esempi che ho testato non hanno specificato una posizione particolare. Qualcuno può postare una codifica completa per farmi riferimento? Apprezzerei molto se qualcuno potesse aiutarmi a risolvere parte del mio problema del progetto per l'ultimo anno che sono stato testato per 3 giorni. Grazie mille. –

risposta

0

Si dovrà utilizzare InfoWindowAdapter per creare finestre di informazioni personalizzate. L'implementazione predefinita rimuove in qualche modo le newline dallo snippet, che potrebbe essere considerato un bug secondario.

19

È necessario utilizzare un custom InfoWindowAdapter per modificare il layout di InfoWindow in un progetto personalizzato definito utilizzando un file di layout. Fondamentalmente è necessario:

  1. dichiarare la vostra funzione utilizzando GoogleMap.setInfoWindowAdapter(Yourcustominfowindowadpater)
  2. avere una classe come di seguito:

...

class Yourcustominfowindowadpater implements InfoWindowAdapter { 
    private final View mymarkerview; 

    Yourcustominfowindowadpater() { 
     mymarkerview = getLayoutInflater() 
      .inflate(R.layout.custominfowindow, null); 
    } 

    public View getInfoWindow(Marker marker) {  
     render(marker, mymarkerview); 
     return mymarkerview; 
    } 

    public View getInfoContents(Marker marker) { 
     return null; 
    } 

    private void render(Marker marker, View view) { 
     // Add the code to set the required values 
     // for each element in your custominfowindow layout file 
    } 
} 
+0

ok, lo scoprirò, grazie per la guida :) –

+0

I pulsanti in questa finestra informativa funzioneranno se aggiungo listener? – PSIXO

+1

@PSIXO: No, i pulsanti non funzioneranno. Da [i documenti] (https://developers.google.com/maps/documentation/android/infowindows#custom_info_windows): "La finestra informativa ... non è una vista dal vivo .... non rispetterà ... tocco o gestisci gli eventi, ma puoi ascoltare un generico evento click sull'intera finestra informativa ... ". Quindi puoi usare 'interi eventi della finestra di informazioni' per ascoltare i clic che si troverebbero sopra il pulsante, ma il pulsante stesso sarebbe solo alcuni pixel su un'immagine (quindi nessuna animazione di clic del pulsante). – Phasmal

0

Vorrei aggiungere qualcosa a @tony , Secondo documentation non puoi aggiungere azioni alla tua visualizzazione personalizzata mentre si disegna come immagine in fase di esecuzione.

Nota: la finestra di informazioni che viene disegnata non è una vista dal vivo. La vista è resa come immagine (utilizzando View.draw (Canvas)) nel momento in cui è restituito . Ciò significa che eventuali modifiche successive alla vista non corrisponderanno a dalla finestra di informazioni sulla mappa. Per aggiornare la finestra informazioni in seguito (ad esempio, dopo che un'immagine è stata caricata), chiama showInfoWindow(). Inoltre, la finestra informativa non rispetterà alcuna interattività tipica per una vista normale come eventi di tocco o di gesto. Tuttavia, l'utente può ascoltare un evento di clic generico sull'intera finestra delle informazioni come descritto nella sezione seguente.

Problemi correlati