Roman Yankovsky
Roman Yankovsky

Reputation: 1217

JMapView control doesn't appear on a FireMonkey form in Android

JMapView control doesn't appear on a FireMonkey form in Android.

Please take a look at my code below, may be I have missed something.

NativeLayout: JNativeLayout; and Maps: JMapView; are declared as form's private fields.

procedure TForm3.FormShow(Sender: TObject);
var
  MapOptions: JGoogleMapOptions;
  Camera: JCameraPosition;
  LatLng: JLatLng;
begin 
  CallInUIThreadAndWaitFinishing(
    procedure
    begin
      LatLng := TJLatLng.JavaClass.init(0, 0);
      Camera := TJCameraPosition.JavaClass.init(LatLng, 3, 0, 0);

      MapOptions := TJGoogleMapOptions.JavaClass.init;
      MapOptions.camera(Camera);
      MapOptions.mapType(TJGoogleMap.JavaClass.MAP_TYPE_NORMAL);
      MapOptions.compassEnabled(False);
      MapOptions.rotateGesturesEnabled(False);
      MapOptions.tiltGesturesEnabled(False);

      Maps := TJMapView.JavaClass.init(SharedActivity, MapOptions);

      NativeLayout := TJNativeLayout.JavaClass.init(SharedActivity,
        MainActivity.getTextEditorProxy.getWindowToken);
      NativeLayout.setControl(Maps);
      NativeLayout.SetPosition(10, 10);
      NativeLayout.SetSize(600, 600);
      NativeLayout.SetFocus(true);
    end);
end;

After executing this code I see an empty FireMonkey form.

Upvotes: 4

Views: 452

Answers (1)

Roman Yankovsky
Roman Yankovsky

Reputation: 1217

I have solved the problem.

In order to make JMapView control appear on a form I have to execute the following code right after creating JMapView instance:

  FJMapView.onCreate(TJBundle.JavaClass.init);
  FJMapView.onResume;

Upvotes: 5

Related Questions