Кнопки «Навигация» и «GPS-указатель» отображаются в правой нижней части компонента после нажатия на маркер. Клиент хотел бы запретить отображение этих кнопок в своем приложении.
Приложение создается с использованием Delphi 12.1, и используется компонент TMapView по умолчанию, доступный в FireMonkey Framework. p>
При нажатии на маркер на картах Google в правом нижнем углу отображаются кнопки
Мы обнаружили, что этот MapToolBar можно отключить с помощью map.getUiSettings() .setMapToolbarEnabled(false);
Маркер Google Maps для Android отключит опцию навигации
Но мы не смогли найти способ сделать это с помощью TMapView по умолчанию.
После поиска в коде FireMonkey Framework мы обнаружили интерфейс JGoogleMap в модуле Androidapi.JNI.PlayServices.Maps . Этот интерфейс имеет необходимые методы, как описано выше.
Итак, следующий шаг — выяснить, где этот интерфейс используется. Экземпляр этого интерфейса используется внутри реализации TAndroidMapView. Мы предполагаем, что экземпляр этого класса используется в компоненте MapView.
Но нет возможности получить доступ к этому экземпляру извне реализации класса.
Мы попробовали использовать Rtti для доступа этот экземпляр, но это не сработало
class function TFrameAndroidViewMap.DisableMapToolBarRtti(const MapView: TMapView): Boolean;
begin
Result := False;
var RttiContext := TRttiContext.Create;
try
var MapViewControlRttiType := RttiContext.GetType(MapView.ClassType);
var FieldMapView: TRttiField;
if not TryGetRttiFieldByName(MapViewControlRttiType, 'FMapView', FieldMapView) then
Exit;
var FieldMapViewValue := FieldMapView.GetValue(MapView);
var MapViewInstance: TMapViewBase;
if not FieldMapViewValue.TryAsType(MapViewInstance) then
Exit;
var MapViewInstanceClassType := MapViewInstance.ClassType;
var MapViewInstanceClassName := MapViewInstance.ClassName;
var MapViewInstanceRttiType := RttiContext.GetType(MapViewInstanceClassType);
var FieldGoogleMap: TRttiField;
if not TryGetRttiFieldByName(MapViewInstanceRttiType, 'FGoogleMap', FieldGoogleMap) then
Exit;
var GoogleMapFieldValue := FieldGoogleMap.GetValue(MapViewInstance);
var GoogleMapField: JGoogleMap;
if GoogleMapFieldValue.TryAsType(GoogleMapField) then
begin
GoogleMapField.getUiSettings().setMapToolbarEnabled(False);
Result := True;
end;
finally
RttiContext.Free;
end;
end;
Подробнее здесь: https://stackoverflow.com/questions/791 ... rker-on-an
Как скрыть кнопки «Навигация» и «Указатель GPS» после нажатия на маркер на Google Maps Android в FireMonkey Framework ⇐ Android
Форум для тех, кто программирует под Android
1731070622
Anonymous
Кнопки «Навигация» и «GPS-указатель» отображаются в правой нижней части компонента после нажатия на маркер. Клиент хотел бы запретить отображение этих кнопок в своем приложении.
Приложение создается с использованием Delphi 12.1, и используется компонент TMapView по умолчанию, доступный в FireMonkey Framework. p>
При нажатии на маркер на картах Google в правом нижнем углу отображаются кнопки
Мы обнаружили, что этот MapToolBar можно отключить с помощью map.getUiSettings() .setMapToolbarEnabled(false);
Маркер Google Maps для Android отключит опцию навигации
Но мы не смогли найти способ сделать это с помощью TMapView по умолчанию.
После поиска в коде FireMonkey Framework мы обнаружили интерфейс JGoogleMap в модуле Androidapi.JNI.PlayServices.Maps . Этот интерфейс имеет необходимые методы, как описано выше.
Итак, следующий шаг — выяснить, где этот интерфейс используется. Экземпляр этого интерфейса используется внутри реализации TAndroidMapView. Мы предполагаем, что экземпляр этого класса используется в компоненте MapView.
Но нет возможности получить доступ к этому экземпляру извне реализации класса.
Мы попробовали использовать Rtti для доступа этот экземпляр, но это не сработало
class function TFrameAndroidViewMap.DisableMapToolBarRtti(const MapView: TMapView): Boolean;
begin
Result := False;
var RttiContext := TRttiContext.Create;
try
var MapViewControlRttiType := RttiContext.GetType(MapView.ClassType);
var FieldMapView: TRttiField;
if not TryGetRttiFieldByName(MapViewControlRttiType, 'FMapView', FieldMapView) then
Exit;
var FieldMapViewValue := FieldMapView.GetValue(MapView);
var MapViewInstance: TMapViewBase;
if not FieldMapViewValue.TryAsType(MapViewInstance) then
Exit;
var MapViewInstanceClassType := MapViewInstance.ClassType;
var MapViewInstanceClassName := MapViewInstance.ClassName;
var MapViewInstanceRttiType := RttiContext.GetType(MapViewInstanceClassType);
var FieldGoogleMap: TRttiField;
if not TryGetRttiFieldByName(MapViewInstanceRttiType, 'FGoogleMap', FieldGoogleMap) then
Exit;
var GoogleMapFieldValue := FieldGoogleMap.GetValue(MapViewInstance);
var GoogleMapField: JGoogleMap;
if GoogleMapFieldValue.TryAsType(GoogleMapField) then
begin
GoogleMapField.getUiSettings().setMapToolbarEnabled(False);
Result := True;
end;
finally
RttiContext.Free;
end;
end;
Подробнее здесь: [url]https://stackoverflow.com/questions/79170116/how-to-hide-navigation-and-gps-pointer-buttons-after-clicking-a-marker-on-an[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия