如何防止两个标记放置在地图上的同一位置?
我正在设置var markerLocations = [CLLocation2D]()
的数组,并且在放置新标记时,我想对照该数组检查并确保没有与我位于同一位置的位置在我放置它之前。
使用.contains
时似乎只能检查一个值?有没有办法检查纬度和经度是否都与我要检查的位置相等?
答案 0 :(得分:2)
您可以尝试将lat long转换为一致的字符串表示形式,并将这些表示形式缓存在字典中。
首先,将lat long截断为适当的小数位数,然后将其转换为"lat0.12345long-1.23456"
形式的字符串。然后,对于true
词典中的每个项目存储[String:Bool]
。然后,每次您要插入一个新位置时,请从该新位置生成适当的关键字字符串,并检查它是否存在于字典中,然后仅在尚不存在时才插入。即使在大量位置上,这也应该很好用,因为在字典中查找键比检查数组是否包含项要快得多。