#java #android-studio #google-maps
#java #android-studio #google-карты
Вопрос:
Я разрабатываю пользовательскую карту, и вот как я размещаю места:
markers.add(new MarkerOptions().position(new LatLng(49.788238, 73.1359273)).title("KFC"));
Я показываю только маркер и имя. Если пользователь хочет получить дополнительную информацию, он должен открыть ее на карте Google, используя
изображение этой кнопки: как открыть карту Google
Я ожидаю, что пользователь увидит все информационное изображение: что я ожидаю
Но пользователи видят это изображение: фактический результат
Могу ли я каким-то образом установить полную ссылку на маркер. Или я могу нажать эту кнопку на первом изображении.
ОБНОВЛЕНИЕ Я ничего не делал, просто добавил маркер, и когда я нажимаю на этот маркер, я вижу две кнопки, которые добавлены не мной. мой класс
Моя цель — увидеть точное место на картах Google, когда я нажимаю на кнопку с 1-го изображения
ОБНОВЛЕНИЕ 2 Я нашел, где эти кнопки можно включить / выключить
mMap.getUiSettings().setMapToolbarEnabled
Мне действительно нужны эти кнопки, могу ли я справиться с нажатием этих кнопок или я могу указать полный URL-адрес для точного указания места?
Ответ №1:
Когда вы передаете координаты в своем намерении открыть карты Google, вы не получаете сведений о месте. Если вы также хотите получить информацию о месте (как в вашем случае), вам нужно передать имя или place_id места.
https://www.google.com/maps/search/?api=1amp;query=centurylink field.
Источник: Google Maps API
Ввод этого приведенного выше запроса в ваш Uri intent приводит к отображению местоположения маркера вместе с информацией о месте в поле ссылки Google Maps of century. Вы можете ввести желаемое название места в запрос и получить результаты.
Для получения дополнительной информации сопоставьте URL-адреса.
Счастливого кодирования!
Комментарии:
1. могу ли я указать Uri в MarkerOptions? Карты Google открываются кнопкой по умолчанию (см. 1-е Изображение), и я не знаю, где я могу нажать на эту кнопку, не так ли?
2. Я не совсем уверен в том, чего вы хотите достичь. Но если вы просто хотите открыть карты Google по нажатию кнопки, вы можете создать кнопку и обработать ее щелчок, в
onClickListener
котором вы можете запустить процесс открытия карт Google.
Ответ №2:
здесь мы устанавливаем прослушиватель для выполнения того, что мы хотим
this.map.setOnMarkerClickListener(marker -> {
String uri = linkMap.get(marker);//get your link
View openInGoogleButton = findOpenInGoogleButton(root);
if (uri == null || openInGoogleButton == null) return false;
openInGoogleButton.setOnClickListener(view -> {
final Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
intent.setPackage("com.google.android.apps.maps");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
fragmentActivity.startActivity(intent);
});
return false;
});
способ поиска открытой кнопки на панели инструментов Google
private View findOpenInGoogleButton(View v) {
View openInGoogleButton = null;
if (v instanceof ViewGroup) {
ViewGroup vg = (ViewGroup) v;
for (int i = 0; i < vg.getChildCount(); i ) {
openInGoogleButton = findOpenInGoogleButton(vg.getChildAt(i));
if (openInGoogleButton != null) {
break;
}
}
} else if (v.getTag() != null
amp;amp; "GoogleMapOpenGmmButton".equalsIgnoreCase(v.getTag().toString())) {
openInGoogleButton = v;
}
return openInGoogleButton;
}