Так что моему приложению требуется создать маршрут для определенной шины. Я выполнил это и создал пользовательское информационное окно для маркера. Теперь меня попросили добавить функцию, в которой мне нужно показать на карте POI (точки интереса) вокруг маркера. Я успешно создал это. Тем не менее, я хочу другое информационное окно для этих маркеров POI.Несколько InfoWindows Android Maps V2
Вот мое первое информационное окно:
public class InfoAdapter implements GoogleMap.InfoWindowAdapter {
LayoutInflater inflater = null;
private TextView textViewstopName;
private TextView arrivalTime;
public InfoAdapter(LayoutInflater inflater) {
this.inflater = inflater;
}
@Override
public View getInfoWindow(Marker marker) {
View v = inflater.inflate(R.layout.businfo_layout, null);
if (marker != null) {
textViewstopName = (TextView) v.findViewById(R.id.businfo);
textViewstopName.setText(marker.getTitle());
arrivalTime = (TextView) v.findViewById(R.id.arrivalinfo);
arrivalTime.setText(marker.getSnippet());
}
return (v);
}
@Override
public View getInfoContents(Marker marker) {
return (null);
}
}
А вот мой второй один (я хотел бы иметь теперь по умолчанию один для объектов POI для):
public class PlacesAdapter implements GoogleMap.InfoWindowAdapter{
LayoutInflater inflater = null;
public PlacesAdapter(LayoutInflater inflater) {
this.inflater = inflater;
}
@Override
public View getInfoWindow(Marker marker) {
return null;
}
@Override
public View getInfoContents(Marker marker) {
return null;
}
}
Вот где я называется первым один:
private void SetupStopMarkers(){
map.setInfoWindowAdapter(new InfoAdapter(getLayoutInflater()));
addMarkersToMap(markerPoints);
}
Вот где я назвал второй один:
else{
map.setInfoWindowAdapter(new PlacesAdapter(getLayoutInflater()));
...
}
Мой info_layout:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:weightSum="1"
android:background="@drawable/businfo_dialog">
<ImageView
android:id="@+id/busicon"
android:layout_width="30dp"
android:layout_height="30dp"
android:src="@drawable/busstop_icon"/>
<ImageView
android:id="@+id/clockicon"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_below="@+id/busicon"
android:layout_alignParentLeft="true"
android:paddingLeft="5dp"
android:src="@drawable/clock"
android:paddingBottom="10dp"/>
<TextView
android:id="@+id/businfo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FFFFFFFF"
android:drawablePadding="10dp"
android:layout_centerVertical="true"
android:layout_toRightOf="@+id/busicon"
android:layout_toEndOf="@+id/busicon"
android:paddingRight="10dp"
android:paddingTop="5dp"
android:layout_alignParentTop="true" />
<TextView
android:id="@+id/arrivalinfo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FFFFFFFF"
android:drawablePadding="10dp"
android:layout_centerVertical="true"
android:layout_below="@+id/businfo"
android:layout_toRightOf="@+id/clockicon"
android:layout_toEndOf="@+id/clockicon"
android:paddingRight="10dp"
android:paddingTop="5dp"/>
<TextView
android:id="@+id/placesinfo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/arrivalinfo"
android:paddingTop="5dp"
android:paddingBottom="35dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:textColor="#0099cc"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:text="@string/more_info"/>
<TextView
android:id="@+id/eta_i"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/arrivalinfo"
android:layout_toEndOf="@+id/arrivalinfo"
android:paddingLeft="5dp"
android:paddingTop="5dp"
android:layout_alignTop="@+id/arrivalinfo"
android:text="ETA:"
android:textStyle="bold"
android:textColor="#FFFFFFFF"/>
</RelativeLayout>
Но после вызова второго информационного окна, каждый маркер на карте изменения в этом втором информационном окне. Есть ли способ сделать это? Любая помощь приветствуется.
Можете ли вы поделиться тем, что вы пытаетесь достичь? У вас не может быть установлено несколько InfoWindowAdapters, но вы должны иметь возможность добавить функциональность к существующему InfoWindowAdapter для достижения желаемого результата. –
Спасибо, что ответили! У меня есть два разных маркера: маркер позиции и маркеры B POI. У меня есть настраиваемый infowindow для A, но я пытаюсь показать другое значение B для маркеров POI. – Masterofawesome
Я думаю, что лучший способ сделать это - раздуть различные макеты в InfoWindowAdapter в зависимости от типа маркера. Можете ли вы показать свой «InfoAdapter» и макет xml? –