web-dev-qa-db-fra.com

Lignes multiples ou lignes de rupture dans .snippet (google maps apiv2)

Je développe dans Google Maps APIv2. Le problème auquel je suis confronté à présent est que je ne peux ajouter qu'une seule ligne de Word dans les fenêtres d'informations/extraits. Mais la sortie que je veux est capable d'afficher sous la forme d'une ligne de rupture, comme le montre l'exemple ci-dessous. Alors, y a-t-il des méthodes possibles pour le résoudre?

Exemple:

Coordonnée: 03.05085, 101.70506

Limite de vitesse: 80 km/h

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);
   }
}
10
KS Tan

Vous devez utiliser un custom InfoWindowAdapter pour modifier la présentation de InfoWindow en une conception personnalisée définie à l'aide d'un fichier de présentation. Fondamentalement, vous devez:

  1. Déclarez votre fonction en utilisant GoogleMap.setInfoWindowAdapter(Yourcustominfowindowadpater)
  2. Avoir une classe comme ci-dessous:

...

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
    }
}
21
tony m

Vous devrez utiliser InfoWindowAdapter pour créer des fenêtres d’informations personnalisées. L'implémentation par défaut supprime en quelque sorte les nouvelles lignes de l'extrait de code, ce qui pourrait être considéré comme un bogue mineur.

0
MaciejGórski

Je voudrais ajouter quelque chose à @tony, selon documentation vous ne pouvez pas ajouter d’action à votre vue personnalisée lorsqu’elle dessine comme image au moment de l’exécution.

Remarque: la fenêtre d'information dessinée n'est pas une vue en direct. La vue est Rendue sous forme d'image (à l'aide de View.draw (Canvas)) au moment où elle est Renvoyée. Cela signifie que les modifications ultérieures de la vue ne seront pas Reflétées par la fenêtre d'information sur la carte. Pour mettre à jour la fenêtre d’information Ultérieurement (par exemple, après le chargement d’une image), appelez showInfoWindow (). En outre, la fenêtre d’information ne respectera aucune des interactions Typiques. pour une vue normale telle que des événements tactiles ou gestuels. Toutefois, vous Pouvez écouter un événement de clic générique sur la totalité de la fenêtre d’information, comme décrit dans la section Décrite dans la section ci-dessous.

0
Mina Fawzy