С этого момента я не могу получить ключ API для карт V1, мне нужно перенести мой код на v2. Так что мне нужно, когда пользователь нажимает на один вывод на карте, чтобы отобразить диалоговое окно (содержащее имя точки и кнопку). Если он нажимает на кнопку, я открываю новое действие, которое отображает информацию об этом месте. Я успешно сделал это с наложениями карт, которые передал свои пользовательские данные в конструкторе, и у меня есть все, что мне нужно. Но как это можно сделать с помощью маркеров для карт v2? Я ничего не могу найти о пользовательских диалогах.Android google maps v2 custom dilog
ответ
Невозможно реализовать InfoWindow
с помощью кнопки, так как Google Map
автоматически отображает все содержимое изображения. Единственное, что вы можете прослушать кликами, - это InfoWindow
.
Вот код для создания InfoWindow
и присвойте OnInfoWindowClickListener
комментарий, который объяснит вам шаги.
// Setting a custom info window adapter for the google map
map.setInfoWindowAdapter(new InfoWindowAdapter() {
// Use default InfoWindow frame
@Override
public View getInfoWindow(Marker args) {
return null;
}
// Defines the contents of the InfoWindow
@Override
public View getInfoContents(Marker args) {
// Getting view from the layout file info_window_layout
View v = getLayoutInflater().inflate(R.layout.info_window_layout, null);
// Getting the position from the marker
clickMarkerLatLng = args.getPosition();
TextView title = (TextView) v.findViewById(R.id.tvTitle);
title.setText(args.getTitle());
//Setting OnInfoWindowClickListener
map.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {
public void onInfoWindowClick(Marker marker)
{
if (SGTasksListAppObj.getInstance().currentUserLocation!=null)
{
if (String.valueOf(SGTasksListAppObj.getInstance().currentUserLocation.getLatitude()).substring(0, 8).contains(String.valueOf(clickMarkerLatLng.latitude).substring(0, 8)) &&
String.valueOf(SGTasksListAppObj.getInstance().currentUserLocation.getLongitude()).substring(0, 8).contains(String.valueOf(clickMarkerLatLng.longitude).substring(0, 8)))
{
Toast.makeText(getApplicationContext(), "This your current location, navigation is not needed.", Toast.LENGTH_SHORT).show();
}
else
{
FlurryAgent.onEvent("Start navigation window was clicked from daily map");
tasksRepository = SGTasksListAppObj.getInstance().tasksRepository.getTasksRepository();
for (Task tmptask : tasksRepository)
{
String tempTaskLat = String.valueOf(tmptask.getLatitude());
String tempTaskLng = String.valueOf(tmptask.getLongtitude());
Log.d(TAG, String.valueOf(tmptask.getLatitude())+","+String.valueOf(clickMarkerLatLng.latitude).substring(0, 8));
if (tempTaskLat.contains(String.valueOf(clickMarkerLatLng.latitude).substring(0, 8)) && tempTaskLng.contains(String.valueOf(clickMarkerLatLng.longitude).substring(0, 8)))
{
task = tmptask;
break;
}
}
Intent intent = new Intent(getApplicationContext() ,RoadDirectionsActivity.class);
intent.putExtra(TasksListActivity.KEY_ID, task.getId());
startActivity(intent);
}
}
else
{
Toast.makeText(getApplicationContext(), "Your current location could not be found,\nNavigation is not possible.", Toast.LENGTH_SHORT).show();
}
}
});
// Returning the view containing InfoWindow contents
return v;
}
});
Пользовательский диалог и сама карта представляют собой две совершенно отдельные сущности, и развитие одного не влияет на развитие другого.
Вы будете использовать OnMarkerClickListener (here the link to the docs), и всякий раз, когда вы получаете это, вы даже создадите свой настраиваемый диалог так же, как раньше.
вы можете добавить маркер, используя
Marker marker = mMap.addMarker(new MarkerOptions().position(pos1).title("title").snippet("description"));
, если нажать на маркер, информационное окно откроется, с «Название» и «Описание», даже вы можете настроить это информационное окно, расширяя класс InfoWindowAdapter, а затем установите этот infoWindowAdapter в GoogleMap obj. для получения дополнительной информации plz см. ниже ссылку Google Map API V2
- 1. google maps v2 android
- 2. Android google maps v2
- 3. Android google maps v2 error
- 4. Google android maps v2 MetersToEquatorPixel
- 5. Android Google Maps v2 testing
- 6. Android Studio Google Maps v2
- 7. Настроить android google maps v2
- 8. Android google maps API v2
- 9. Android Google Maps v2 Остановка
- 10. Google Maps API Android v2
- 11. Google maps android custom images
- 12. Обновлено Android Maps Maps V2
- 13. Google Maps API v2
- 14. Google Maps V2 врежется
- 15. google maps V2 IllegalStateException
- 16. Использование Google Maps v2
- 17. Google Maps API v2
- 18. установить положение infowindow android google maps v2
- 19. Google Maps Android API v2 сбой приложения
- 20. Android Google Maps V2 позволяет 3D землю
- 21. Google maps android V2 error at manifest
- 22. Начиная с Android Google Maps API V2
- 23. Аутентификация Google Maps API V2 (Android) erro
- 24. android google maps v2 в службе
- 25. google maps android api v2 error
- 26. Google Maps Android V2 - Пустой экран
- 27. Android google maps v2 показывает серые плитки
- 28. Google Maps Android API v2 перестала работать
- 29. Android Google Maps v2: ClassNotFoundExeption: com.google.android.gms.maps.MapFragment
- 30. Drag Polyline onMarkerDrag Android Google Maps v2
Если у вас есть приложение и ключ для v1, вы все равно можете использовать его. Вам не нужно «мигрировать». –
Нет, для этого сертификата у меня нет ключа. Это для нового клиента, и я создал новый сертификат (я не могу дать свой предыдущий). – Panos