Как скрыть кнопки «Навигация» и «Указатель GPS» после нажатия на маркер на Google Maps Android в FireMonkey FrameworkAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как скрыть кнопки «Навигация» и «Указатель GPS» после нажатия на маркер на Google Maps Android в FireMonkey Framework

Сообщение 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;


Подробнее здесь: https://stackoverflow.com/questions/791 ... rker-on-an
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»