# MobileMapViewer ZoomRadius not responding after initial display

**URL:** <https://forum.xojo.com/t/mobilemapviewer-zoomradius-not-responding-after-initial-display/88515>\
**Category:** iOS\
**Created:** [June 29, 2026, 1:19am UTC](https://forum.xojo.com/t/mobilemapviewer-zoomradius-not-responding-after-initial-display/88515 "2026-06-29T01:19:39Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Sharon\_Dankwardt](https://forum.xojo.com/user_avatar/forum.xojo.com/sharon_dankwardt/32/6589_2.png) [@Sharon\_Dankwardt](https://forum.xojo.com/u/Sharon_Dankwardt)\
**Post date:** [June 29, 2026, 1:19am UTC](https://forum.xojo.com/t/mobilemapviewer-zoomradius-not-responding-after-initial-display/88515/1 "2026-06-29T01:19:39Z")

</div>

I have a MobileMapViewer on a settings screen showing a satellite view of a user’s yard. On Opening, the map initializes correctly with the right zoom using:

```auto
MapYard.MapType = MobileMapViewer.MapTypes.Satellite
MapYard.ZoomRadius = GetYardZoom // returns 0.03, 0.055, or 0.08
MapYard.GoToLocation(lat, lon)

```

This works perfectly — the map shows at the correct zoom level.

I have a MobileSegmentedButton with three lot size options that should update the zoom live. In the Pressed event I’ve tried:

```auto
MapYard.ZoomRadius = span // 0.03, 0.055, or 0.08
MapYard.GoToLocation(lat, lon)

```

**What happens:** The first tap always jumps to an intermediate zoom (~0.065) regardless of which segment is tapped, and subsequent taps do nothing at all.

I’ve tried:

- Setting ZoomRadius without GoToLocation

- Setting ZoomRadius before and after GoToLocation

- Hiding/showing MapYard before updating

- Calling UpdateYardMap (same code as Opening) from the Pressed event

- RemoveControl/AddControl (RemoveControl destroys the control)

The zoom values are confirmed correct via DebugLog. The map responds to the first tap but not to the correct value, and ignores all subsequent calls.

Is there a way to force MobileMapViewer to re-render with a new zoom level after initial display?

**Xojo 2026R1.1**

---

<div class="post-metadata">

**Author:** ![Sharon\_Dankwardt](https://forum.xojo.com/user_avatar/forum.xojo.com/sharon_dankwardt/32/6589_2.png) [@Sharon\_Dankwardt](https://forum.xojo.com/u/Sharon_Dankwardt)\
**Post date:** [July 2, 2026, 7:31pm UTC](https://forum.xojo.com/t/mobilemapviewer-zoomradius-not-responding-after-initial-display/88515/2 "2026-07-02T19:31:12Z")

</div>

To resolve the issue where the map was not successfully shifting zoom levels when clicking each segment button, the fix was to dynamically adjust the **`altitude`** property of an **`MKMapCameraMBS`** object instead of relying on a standard coordinate span.

By intercepting the `SelectedSegmentIndex`, we can calculate a target camera height (altitude) alongside our coordinate parsing logic, and then explicitly assign it using `MapYard.View.setCamera`.

Here is the working code configuration inside the Segmented Control event handler:

**xojo**

```auto
Self.isUpdatingUI = True

Dim lat, lon As Double
ParseCoordinates(TextManualCoords.Text, lat, lon)

// Fallback to current center if manual coordinates are blank/zero
If lat = 0 Or lon = 0 Then
  lat = MapYard.View.centerCoordinate.latitude
  lon = MapYard.View.centerCoordinate.longitude
End If

If lat <> 0 And lon <> 0 Then
  Var targetAltitude As Double = 200
  
  // Set explicit camera heights (altitudes) for each zoom view
  Select Case Me.SelectedSegmentIndex
  Case 0
    targetAltitude = 40 // Close — rooftop level
  Case 1
    targetAltitude = 120 // Medium
  Case 2
    targetAltitude = 350 // Wide
  End Select
  
  // Build and apply the new 3D map camera view
  Dim newCenter As New CLLocationCoordinate2DMBS(lat, lon)
  Dim newCamera As New MKMapCameraMBS
  
  newCamera.centerCoordinate = newCenter
  newCamera.altitude = targetAltitude
  newCamera.heading = SliderRotation.Value
  newCamera.pitch = 0
  
  // Force the map to refresh into the new camera perspective
  MapYard.View.setCamera(newCamera, True)
  
  System.DebugLog("Set altitude to: " + targetAltitude.ToString)
  
  // Verify actual camera placement
  Dim actualCam As MKMapCameraMBS = MapYard.View.camera
  System.DebugLog("Actual altitude after set: " + actualCam.altitude.ToString)
End If

Self.isUpdatingUI = False

```

Using the 3D camera properties successfully forces MapKit to shift and lock into the exact layout heights required.
