Как я могу определить кнопку setOnClickListener в информационном окне на карте google? На самом деле в моем информационном окне у меня есть кнопка, и я хочу нажать на эту кнопку. Можно ли это сделать?Кнопка onclicklistener на infowindow в google map
ответ
Попробуйте
mMap.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
}
});
его работающий для меня – Prasad
этот «mMap.setOnInfoWindowClickListener» работает, щелкая любую часть InfoWindow. Мне нужно написать событие нажатия кнопки внутри InfoWindow. Является ли это возможным ? –
@PremkumarManipillai no. InfoWindows отображаются как изображения и не являются живыми. – DiscDev
На самом деле это не posiable, Google Map оказывает содержание вас обычай InfoWindow
в изображение и выводит его к вам, как изображения. Поэтому вы устанавливаете прослушиватель кликов только для всего окна, а не для него.
Ваш единственный выбор - установить ClickListener
на все InfoWindow
и открыть диалоговое окно с нужным вам контентом, а не делать это непосредственно внутри InfoWindow
.
От Google Docs
: https://developers.google.com/maps/documentation/android/marker#info_windows
Примечание: информационное окно, которое обращено не живой вид. Представление представляет собой в качестве изображения (с использованием
View.draw(Canvas)
) в то время, когда оно возвращается . Это означает, что любые последующие изменения в представлении не будут отображаться на информационном окне на карте . Чтобы обновить информационное окно позже (например, после загрузки изображения), вызовитеshowInfoWindow()
. Кроме того, информационное окно не будет учитывать любую интерактивность , типичную для обычного вида, такую как события касания или жестов. Однако вы, , можете прослушать общий клик по всему информационному окну как , описанный в следующем разделе.
Правильный ответ приведен на https://developers.google.com/maps/documentation/android-api/marker#info_windows –
Попробуйте создать свой собственный класс, как
public abstract class OnInfoWindowItemTouchListener implements OnTouchListener {
private final View view;
private final int bgDrawableNormal;
private final int bgDrawablePressed;
private final Handler handler = new Handler();
private Marker marker;
private boolean pressed = false;
public OnInfoWindowItemTouchListener(View view, int bgDrawableNormal, int bgDrawablePressed) {
this.view = view;
this.bgDrawableNormal = bgDrawableNormal;
this.bgDrawablePressed = bgDrawablePressed;
}
public void setMarker(Marker marker) {
this.marker = marker;
}
@Override
public boolean onTouch(View vv, MotionEvent event) {
if (0 <= event.getX() && event.getX() <= view.getWidth() &&
0 <= event.getY() && event.getY() <= view.getHeight())
{
switch (event.getActionMasked()) {
case MotionEvent.ACTION_DOWN: startPress(); break;
// We need to delay releasing of the view a little so it shows the pressed state on the screen
case MotionEvent.ACTION_UP: handler.postDelayed(confirmClickRunnable, 150); break;
case MotionEvent.ACTION_CANCEL: endPress(); break;
default: break;
}
}
else {
// If the touch goes outside of the view's area
// (like when moving finger out of the pressed button)
// just release the press
endPress();
}
return true;
}
private void startPress() {
if (!pressed) {
pressed = true;
handler.removeCallbacks(confirmClickRunnable);
view.setBackgroundResource(bgDrawablePressed);
if (marker != null)
marker.showInfoWindow();
}
}
private boolean endPress() {
if (pressed) {
this.pressed = false;
handler.removeCallbacks(confirmClickRunnable);
view.setBackgroundResource(bgDrawableNormal);
if (marker != null)
marker.showInfoWindow();
return true;
}
else
return false;
}
private final Runnable confirmClickRunnable = new Runnable() {
public void run() {
if (endPress()) {
onClickConfirmed(view, marker);
}
}
};
/**
* This is called after a successful click
*/
protected abstract void onClickConfirmed(View v, Marker marker);
}
Используйте его в вашей деятельности:
final OnInfoWindowItemTouchListener buttonListener = new OnInfoWindowItemTouchListener(markHere, 0, 0) {
@Override
protected void onClickConfirmed(View v, Marker marker) {
// more code goes here
}
}
Спасибо shylendra за ваш быстрый ответ. Но я просто хочу знать, как вы находите событие с кликом над информационным окном? –
Мы на самом деле пытались решить эту проблему путем разработки библиотеки из может облегчить создание живой (интерактивные) информационные окна.
https://github.com/Appolica/InteractiveInfoWindowAndroid
Я знаю, что это старый вопрос, но я надеюсь, что это может помочь кому-то в будущем.
Вы можете в основном добавить свой собственный фрагмент в качестве информационного окна, используя менеджер, предоставленный нашей библиотекой. Ниже приведена краткая информация о том, как легко использовать библиотеку. Проверьте ссылку выше для получения дополнительной информации
final MapInfoWindowFragment mapInfoWindowFragment =
(MapInfoWindowFragment) getSupportFragmentManager().findFragmentById(R.id.infoWindowMap);
final InfoWindow infoWindow = new InfoWindow(marker, markerSpec, fragment);
// Shows the InfoWindow or hides it if it is already opened.
mapInfoWindowFragment.infoWindowManager().toggle(infoWindow, true);
- 1. Google map infowindow position
- 2. Google Map ломаной InfoWindow
- 3. google map infowindow onclick
- 4. AngularJS Google Map InfoWindow
- 5. Custom google map infoWindow
- 6. Установить высоту Google Map InfoWindow
- 7. Центрирование InfoWindow Google Map IFrame
- 8. Google Map infowindow не открывается
- 9. Открыть действующий Google Map infowindow
- 10. Кнопка «Сохранить» Не привязана к правой InfoWindow, Google Map
- 11. настроить карту google map InfoWindow
- 12. Центр Google Map и InfoWindow
- 13. Infowindow на google map не работает
- 14. Google map Addlistener to infowindow
- 15. как реализовать onclicklistener на InfoWindow на Google карте
- 16. InfoWindow вопрос в Google Map v2 Android
- 17. Autolink TextViews в Google Map InfoWindow
- 18. Вставить твит в google map infowindow
- 19. Infowindow для кругового маркера в Google Map
- 20. Multiple InfoWindow в Google Map API
- 21. Показать динамический контент в Google Map infowindow
- 22. google map - как изменить google map infoWindow text
- 23. вызов javascript в infowindow google map
- 24. Изменение цвета фона в Google Map InfoWindow
- 25. Как показать infowindow в google map mvc
- 26. Google Map Infowindow не отображается должным образом
- 27. Google Map infowindow перемещает всю карту
- 28. Изображения Google Map действительно крошечные внутри infowindow
- 29. Как переместить карту google map infowindow
- 30. Google map v2 make infowindow not clickable
проверить этот ответ, это может быть полезно http://stackoverflow.com/a/15040761/2136046 –
Thanx за быстрый ответ. на самом деле дело в том, что я также использую кластеры маркеров на карте, и для кластеризации я использую библиотеку, поэтому теперь очень сложно собрать код для кластеризации классов библиотек. –
У вас получился какой-то результат? –