8

mein Code Dies ist angeklickt wird neuen Marker zu meinem GoogleMap hinzuzufügen. Die infoWindow und die Toast funktionieren wie erwartet.Leeren Infofenster, wenn Marker

jedoch, wie in meinem Fall, title und snippet in Arabisch sind, arbeitet die Toast in Ordnung, aber das Infofenster zeigt leeres Fenster.

Es scheint mir wie ein Fehler in Bezug auf die arabische Sprache. Gibt es einen Weg, um es zu umgehen?

Antwort

6

Ein Weg um dies zu tun wäre, um ein benutzerdefiniertes Informationsfenster anzuzeigen. Sie können dies tun, indem Sie eine InfoWindowAdapter erstellen und sie mit GoogleMap.setInfoWindowAdapter() einstellen.

Um das Standardinformationsfenster zu ersetzen, überschreiben Sie getInfoWindow (Marker) mit Ihrem benutzerdefinierten Rendering und geben null für getInfoContents (Marker) zurück. Um nur den Inhalt des Infofensters innerhalb des Standardinformationsfensterrahmens (der Callout-Blase) zu ersetzen, geben Sie in getInfoWindow (Marker) null zurück und überschreiben stattdessen getInfoContents (Marker).

Mehr Info: https://developers.google.com/maps/documentation/android/marker#info_windows

+0

Funktioniert perfekt. Vielen Dank! – iTurki

+0

@iturki Das hat mein Problem nicht gelöst. Ich habe immer noch ein leeres Fenster, wenn ich Arabisch benutze. Was hast du genau gemacht, um das Problem zu lösen?> – AlAsiri

+0

@AlAsiri Siehe meine Antwort. – iTurki

7

@jimmithy Antwort gelöst meine Frage.

Dies ist nur ein dreistufiger Ausführung davon aus this project:

Schritt 1: Erstellen Sie das Layout Ihres infowindow. Hier ist popup.xml Code:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:orientation="horizontal"> 

<ImageView 
android:id="@+id/icon" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_gravity="center_vertical" 
android:padding="2dip" 
android:src="@drawable/ic_launcher" 
android:contentDescription="@string/icon"/> 

<LinearLayout 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:orientation="vertical"> 

<TextView 
android:id="@+id/title" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:textSize="25sp" 
android:textStyle="bold"/> 

<TextView 
android:id="@+id/snippet" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:textSize="15sp"/> 
</LinearLayout> 

</LinearLayout> 

Schritt 2: Erstellen Sie Ihre Implementierung von InfoWindowAdapter. Hier ist PopupAdapter Klasse:

class PopupAdapter implements InfoWindowAdapter { 
    LayoutInflater inflater=null; 

    PopupAdapter(LayoutInflater inflater) { 
    this.inflater=inflater; 
    } 

    @Override 
    public View getInfoWindow(Marker marker) { 
    return(null); 
    } 

    @Override 
    public View getInfoContents(Marker marker) { 
    View popup=inflater.inflate(R.layout.popup, null); 

    TextView tv=(TextView)popup.findViewById(R.id.title); 

    tv.setText(marker.getTitle()); 
    tv=(TextView)popup.findViewById(R.id.snippet); 
    tv.setText(marker.getSnippet()); 

    return(popup); 
    } 
} 

Schritt 3: in Ihrer Tätigkeit, stellen Sie Ihren Adapter an den GoogleMap:

mMap.setInfoWindowAdapter(new PopupAdapter(getLayoutInflater())); 

Und Sie eingestellt sind!

+0

Fehler beim Aufblasen Klasse, @ diese Zeile View popup = inflater.inflate (R.layout.popup, null); Weiter, 02-06 14: 40: 54.950: E/AndroidRuntime (24275): Verursacht von: android.content.res.Ressourcen $ NotFoundException: Ressource ist keine Drawable (Farbe oder Pfad): TypedValue {t = 0x1/d = 0x7f020078 a = -1 r = 0x7f020078} –

+0

Danke, feste, hilfreiche Frage und Antwort .. –

3

sollten Sie diesen Befehl verwenden .title("\u200e"+"عربی").

+0

Perfekt! Kurz und bündig!!! – offset

Verwandte Themen