Вы используете широту и долготу, то есть несколько градусов (возможно, в WGS 1984), но затем вы сообщаете ArcGIS, что они находятся в Web Mercator, то есть на нескольких метрах. Это определенно приведет к тому поведению, которое вы видите.
Чтобы исправить это, просто замените webMercator()
на WGS84()
.
Кроме того, вы смешиваете широту и долготу. Широта - это у, а долгота - это х, и у вас это наоборот.
Таким образом, замените ваш setViewpointCenter
вызов следующим:
self.mapView.setViewpointCenter(
AGSPoint(x: lon!, y: lat!, spatialReference: AGSSpatialReference.WGS84()),
scale: 4e7,
completion: nil
)