0

Я хочу создать интерактивное приложение для Android-карт. При нажатии на них будут разные типы маркеров и множество разных опций.Интерактивная карта android v2

Первый подход: Я начал с понятия, которое я использую пользовательские инфо-окна, но выяснил, что на карте может быть только один InfoWindowAdapter, при этом этот подход имеет другую ошибку. В InfoWindows не могут быть зарегистрированы клики для прослушивания, и мне нужно иметь интерактивный пользовательский интерфейс, который будет отображаться после щелчка маркера.

Второй подход: Нажатие маркера вызывает предупреждениеDialog, которое соответствует типу маркера. Я не решаюсь, потому что у меня будет много переключателей в OnActivityResult. Пример: dialog fragments with OnActivityResult

Другие идеи? Я что-то упускаю ?

+0

любое объяснение нисходящего потока? – serj

ответ

1

я столкнулся с подобной проблемой некоторое время назад, и я «взломаны» это следующим образом:

mGoogleMap.setInfoWindowAdapter(new InfoWindowAdapter() { 
    @Override 
    public View getInfoWindow(Marker pMarker) { 
     MarkerDescriptor descriptor = mMarkerDescriptorsMap.get(pMarker); 
     mGoogleMap.setOnInfoWindowClickListener(descriptor.getOnInfoWindowClickListener(MapActivity.this));  
     return descriptor.getInfoWindowView(); 
    } 
} 

MarkerDescriptor должен быть простой интерфейс, который будет реализован для каждого конкретного типа маркера:

public interface MarkerDescriptor { 
    public View getInfoWindowView(); 
    public OnInfoWindowClickListener getOnInfoWindowClickListener(Context pContext); 
} 

И сохранить ссылки:

private Map<Marker, MarkerDescriptor> mMarkerDescriptorsMap = new HashMap<Marker, MarkerDescriptor>(); 

Основой этой идеи является то, что GoogleMap может в данный момент выбран только один маркер, поэтому, когда пользователь выбирает другой маркер, мы меняем слушателей.

+0

Почему pMarker.hideInfoWindow()? – serj

+1

Это часть моей логики приложения - если нет определенных действий, связанных с этим InfoWindow, просто скройте это. Извините, я должен был вырезать его из образца. – Nuwisam

+0

Я обновил свой ответ и добавил еще несколько кодов. – Nuwisam

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