Обратный массив координат в swift 4 - PullRequest
0 голосов
/ 25 сентября 2019

Я пытаюсь изменить массив координат.У меня есть этот массив:

[
            [
                9.211615025997162,
                44.30419567985762
            ],
            [
                9.21164184808731,
                44.30412081929745
            ],
            [
                9.21165257692337,
                44.304053636662175
            ],
            [
                9.211606979370117,
                44.3038789614507
            ],
            [
                9.211572110652924,
                44.30381945658962
            ],
            [
                9.211539924144745,
                44.30378874437967
            ],
            [
                9.211507737636566,
                44.30376187118276
            ],
            [
                9.211564064025879,
                44.30377530778277
            ],
            [
                9.211574792861937,
                44.30374075651943
            ],
            [
                9.211574792861937,
                44.30371388330059
            ],
            [
                9.211574792861937,
                44.30369852717
            ],
            [
                9.21154797077179,
                44.303665895379176
            ],
            [
                9.211513102054596,
                44.303650539236024
            ],
            [
                9.211429953575134,
                44.30358911462331
            ],
            [
                9.211349487304688,
                44.30355840229286
            ],
            [
                9.211271703243256,
                44.303537287556324
            ],
            [
                9.21117514371872,
                44.30349505806051
            ],
            [
                9.211151003837585,
                44.303473943301235
            ],
            [
                9.211126863956451,
                44.30342979423452
            ],
            [
                9.211145639419556,
                44.30339908182071
            ],
            [
                9.211183190345764,
                44.303368369390846
            ],
            [
                9.211223423480988,
                44.30331846165803
            ],
            [
                9.211242198944092,
                44.30327623200479
            ],
            [
                9.211177825927734,
                44.30325895622883
            ],
            [
                9.211030304431915,
                44.303228243725634
            ],
            [
                9.210925698280334,
                44.30321096793552
            ],
            [
                9.210874736309052,
                44.303197531206386
            ],
            [
                9.210831820964813,
                44.303197531206386
            ],
            [
                9.21075403690338,
                44.303197531206386
            ],
            [
                9.21068161725998,
                44.3031994507393
            ],
            [
                9.210577011108398,
                44.3031994507393
            ],
            [
                9.210509955883026,
                44.303207128870355
            ],
            [
                9.210440218448639,
                44.303207128870355
            ],
            [
                9.210370481014252,
                44.30322632419366
            ],
            [
                9.2102712392807,
                44.30324743904202
            ],
            [
                9.210190773010254,
                44.30328199059568
            ],
            [
                9.210112988948822,
                44.30328391012582
            ],
            [
                9.210059344768524,
                44.303297346835215
            ],
            [
                9.209954738616943,
                44.30332422024474
            ],
            [
                9.209901094436646,
                44.303339576473235
            ],
            [
                9.209868907928467,
                44.303349174114
            ],
            [
                9.209858179092407,
                44.30338372560779
            ],
            [
                9.209791123867035,
                44.30340292087333
            ],
            [
                9.209697246551514,
                44.30342595518367
            ],
            [
                9.209648966789246,
                44.3034509090097
            ],
            [
                9.209606051445007,
                44.30351809233474
            ],
            [
                9.209579229354858,
                44.30355840229286
            ],
            [
                9.209581911563873,
                44.3035852755829
            ],
            [
                9.209622144699097,
                44.30355840229286
            ],
            [
                9.20967847108841,
                44.30355648277167
            ],
            [
                9.209697246551514,
                    44.30354112659989
                ]
]

И я хотел бы поменять координаты, которые сейчас находятся в Long-Lat в Lat-Long, таким образом, полностью изменив весь массив или каждый элемент в массиве будет делать работуВот.Я застрял, пытаясь заставить его работать, пробуя такие вещи, как arrayOfCoords.reversed() и .reverse() безрезультатно.Так как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 25 сентября 2019

Может быть более элегантный / эффективный способ сделать это, но я бы посмотрел на использование compactMap:

let testArray = [[1.123,2.22], [3.11, 4.0], [5.21, 6.19]]
print(testArray)

[[1.123, 2.22], [3.11, 4.0], [5.21, 6.19]]

let flippedElementArray = testArray.compactMap { $0.count > 1 ? [$0[1], $0[0]] : nil }
print(flippedElementArray)

[[2.22, 1.123], [4.0, 3.11], [6.19, 5.21]]

Проверка $0.count > 1 просто гарантирует, что у вас есть как минимум 2 элемента, чтобы вы не получили ошибку границ.Если нет, замыкание возвращает ноль для этого элемента, который будет отфильтрован по compactMap.В противном случае он возвращает новый элемент массива, состоящий из второго элемента, за которым следует первый элемент.Все эти элементы хранятся в окончательном отображенном массиве (flippedElementArray).

0 голосов
/ 25 сентября 2019
arrayOfCoords.map{ Array($0.reversed()) }

Я предполагаю, что вы хотите изменить каждую пару координат, но сохранить сами пары в первоначальном порядке.Поскольку у вас есть массив массивов, вы должны выполнить операцию для каждого подмассива отдельно.И reversed() возвращает ReversedCollection вместо Array, поэтому вы должны повторно инициализировать его в массив, чтобы использовать его правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...