0

我有一个应用程序正在尝试从 Google 地图迁移到 ArcGIS 地图,因为我需要离线使用地图。
我正在使用 ArcGIS iOS 100.6 SDK 并尝试在 AGSMapView 顶部放置一个 UIbutton。在 View Controller 中,“MapView”和 UIButton 位于“View”下。UIbutton 不是 MapView 的子视图。我还有其他三个元素应该覆盖我使用“isHidden = true/false”隐藏和取消隐藏的地图,这些元素也无法显示。该应用程序是用 Swift 4.2 编写的,我使用的是 Xcode 10.3。

Here is the view in the view controller:

View
   Safe Area
   Btn Satellite Toggle (outlet name: "btnSatelliteToggle")
   View Mark Location
   View Verify Location
   View Pic Detail
   MapView
   Constraints

This is the code where I show the map and try to add the button on top:

let viewMap = AGSMapView(frame: .zero)
viewMap.map = AGSMap(basemapType: .navigationVector,
                                         latitude:   currentLocation.latitude, longitude: currentLocation.longitude,
                                         levelOfDetail: zoomLevel)
viewMap.graphicsOverlays.add(overlay)
viewMap.touchDelegate = self
view = viewMap
view.bringSubviewToFront(btnSatelliteToggle)

地图与图形叠加层一起显示,但我无法在地图顶部显示任何 UI 元素。这适用于 Google 地图,但不适用于 ArcGIS 地图。如何让这些 UI 元素显示在 AGSMapView 生成的地图之上?在此先感谢您的帮助。

4

2 回答 2

1

看来您的 MapView 位于视图层次结构的顶部,因此掩盖了其兄弟视图。

尝试重新排列视图层次结构以将 MapView 放在底部:

View
   Safe Area
   MapView
   Btn Satellite Toggle (outlet name: "btnSatelliteToggle")
   View Mark Location
   View Verify Location
   View Pic Detail
   Constraints
于 2019-09-18T19:32:19.077 回答
0

我实际上刚刚解决了这个问题。这是有效的更新代码:

viewMap.map = AGSMap(basemapType: .navigationVector,
                                         latitude: currentLocation.latitude, longitude: currentLocation.longitude,
                                         levelOfDetail: zoomLevel)
viewMap.graphicsOverlays.add(overlay)
viewMap.touchDelegate = self

我删除了:

Setting AGSMapView(frame: .zero)

因为这会阻止地图在 MapView 中显示。

此外,通过不设置视图(因此使用默认视图控制器“view”),所有兄弟姐妹都可以显示并且可以通过“isHidden”进行控制。

于 2019-09-18T19:57:29.193 回答