Private Sub B4XPage_Created (Root1 As B4XView)
Root = Root1
Root.LoadLayout("MainPage")
Wait For MapFragment1_Ready
gmap = MapFragment1.GetMap
rp.CheckAndRequest(rp.PERMISSION_ACCESS_FINE_LOCATION)
Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
If Result Or rp.Check(rp.PERMISSION_ACCESS_COARSE_LOCATION) Then
gmap.MyLocationEnabled = True
Else
Log("No permission!")
End If
AddCicleListener(gmap) 'call once to enable events.
Dim Circle As JavaObject = AddCircle(gmap, 33, 4, 100000, xui.Color_Red, xui.Color_Red, True)
Circle.RunMethod("setTag", Array("circle 1"))
End Sub
Private Sub AddCicleListener (Map As GoogleMap)
Dim event As Object = Map.As(JavaObject).CreateEventFromUI("com.google.android.gms.maps.GoogleMap$OnCircleClickListener", "CircleListener", Null)
Map.As(JavaObject).RunMethod("setOnCircleClickListener", Array(event))
End Sub
Private Sub CircleListener_Event (MethodName As String, Args() As Object) As Object
If MethodName = "onCircleClick" Then
Dim circle As JavaObject = Args(0)
Log($"circle clicked: ${circle.RunMethod("getTag", Null)}"$)
Dim center As LatLng = circle.RunMethod("getCenter", Null)
Log(center)
End If
Return Null
End Sub
Private Sub AddCircle (Map As GoogleMap, Latitude As Double, Longitude As Double, RadiusMeters As Double, _
FillColor As Int, StrokeColor As Int, Clickable As Boolean) As JavaObject
Dim opt As JavaObject
opt.InitializeNewInstance("com/google/android/gms/maps/model/CircleOptions".Replace("/", "."), Null)
Dim ll As LatLng
ll.Initialize(Latitude, Longitude)
opt.RunMethod("center", Array(ll))
opt.RunMethod("radius", Array(RadiusMeters))
opt.RunMethod("fillColor", Array(FillColor))
opt.RunMethod("strokeColor", Array(StrokeColor))
opt.RunMethod("clickable", Array(Clickable))
Return Map.As(JavaObject).RunMethod("addCircle", Array(opt))
End Sub