gpt4 book ai didi

ios - 移动和/或删除 ArcGIS 图形图层中的标记

转载 作者:行者123 更新时间:2023-11-29 05:16:09 25 4
gpt4 key购买 nike

我正在使用 ArcGIS 100.6 iOS SDK,并使用图形叠加层上的标记填充 map 其位置存储在我的应用程序的所有用户共用的数据库中。每个标记都存储在唯一的记录中,并且每个记录都包含该标记的纬度和经度。当应用程序启动时,它会读取数据库中所有标记的位置,并将每个标记添加到图形叠加中,如下所示:

let areaMarker = AGSPictureMarkerSymbol(image: UIImage(named: "CustomMarker")!)
let areaMarkerLocation = AGSPointMakeWGS84(y ?? 0.0, x ?? 0.0)
let markerIcon = AGSGraphic(geometry: areaMarkerLocation, symbol: areaMarker, attributes: >["marker": markerKey])
self.overlay.graphics.add(markerIcon)

如上所示,每个标记都分配有一个属性“marker:markerKey”,该属性是存储标记位置信息的唯一数据库记录号(键),并作为标记 ID。

将初始标记添加到叠加层后,应用程序将“监听”数据库中的以下事件:

  • 添加了新标记
  • 现有标记已移至新位置
  • 现有标记已删除

当移动或删除标记时,数据库监听器会收到通知,并传递已移动(或删除)的标记的记录号(键)。如果标记被移动,记录将包含新的纬度和经度信息。

我尝试读取图形覆盖并确定它是包含在 NSMutable 数组中的集合。我可以读取所有属性,如下所示:

let graphicsCollection = self.overlay.graphics.mutableArrayValue(forKey: "attributes")
print(graphicsCollection)

结果是:

(
{
marker = "-KlRW2_rba1zBrDPpxSl";
},
{
marker = "-Lu915xF3zQp4dIYnsP_";
}
)

我可以对“几何”执行相同的操作并获取 AGSPoints 数组:

let graphicsCollection = self.overlay.graphics.mutableArrayValue(forKey: "geometry")
print(graphicsCollection)

结果是:

(
"AGSPoint: (-117.826127, 44.781139), sr: 4326",
"AGSPoint: (-112.056906, 33.629829), sr: 4326"
)

我无法确定如何获取属性数组的“索引”(例如上面的标记“-KlRW2_rba1zBrDPpxSl”应该具有索引[0]),因此我可以使用该“索引”来访问适当的AGSPoint 并更新纬度和经度或删除标记。

预先感谢您的帮助。

最佳答案

如果您想移动标记(即 AGSGraphic),您需要获取 AGSGraphic 本身并修改 geometry 属性。我认为,在 mutableArrayValue() 调用中跳转到“几何图形”,有点搬起石头砸自己的脚。

我会这样解决:

let searchMarker = "-KlRW2_rba1zBrDPpxSl"
let newLocation = AGSPointMakeWGS84(40.7128, -74.0060) // NYC
if let graphic = (overlay.graphics as? [AGSGraphic])?.first(where: {
($0.attributes["marker"] as? String) == searchMarker
}) {
// Move the graphic
graphic.geometry = newLocation
// Or remove the graphic
overlay.graphics.remove(graphic)
}

关于ios - 移动和/或删除 ArcGIS 图形图层中的标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59166380/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com