iOS - центральное положение двух координат - PullRequest
0 голосов
/ 11 августа 2011

Я хотел бы создать MKCoordinateRegion (чтобы приблизиться к хорошему региону на карте) из северо-восточных и юго-западных точек, заданных Google.Для этого мне нужно вычислить координату центра между этими двумя координатами.Любая подсказка?Я мог бы сделать простую математику, но у меня будут проблемы с экватором ...

Спасибо !!!

Ответы [ 3 ]

1 голос
/ 12 августа 2011

Если предположить, что вы имеете в виду анти-меридиан, а не экватор, то здесь (хотя все это работает на плоской карте и должно быть достаточно для ваших целей, оно полностью наведено на сферу. См. Примечание внизу).

То, что я сделал в других случаях, это начало в любой точке, и если следующая точка находится на расстоянии более 180 градусов к востоку, я конвертирую ее так, чтобы она была меньше 180 градусов к западу, как показано ниже

if (pointa.lon - pointb.lon> 180) pointb.lon + = 360: иначе if (pointa.lon - pointb.lon <-180) pointb.lon - = 360 </p>

В этот момент pointb.lon может иметь недопустимую долготу, например 190, но вы можете, по крайней мере, определить среднюю точку между точкой и точкой b, потому что они будут в непрерывном масштабе, поэтому у вас могут быть точки 175 и 190. Тогда просто получитесредняя точка между ними равна 182,5, затем конвертируйте ее, чтобы убедиться, что она находится в обычных пределах, и вы получите -177,5 в качестве широты между двумя точками.Определить широту легко.

Конечно, на сфере это неправильно, потому что средняя точка между (-180,89) и (180,89) равна (0 *, 90), а не (0,89).
* = может быть чем угодно

0 голосов
/ 12 августа 2011

Кроме того, не могли бы вы просто сделать zoomToRect с определенными углами? Это избавит вас от выполнения этих вычислений, а затем следующего, который будет определять, на каком уровне масштабирования вы должны находиться, когда центрируетесь на этой точке, чтобы включить два угла, о которых вы знаете. Поскольку приложение «Карты», кажется, не прокручивает анти-меридиан, я предполагаю, что MKMapview тоже не может, поэтому ваш прямоугольник должен иметь координату северо-восток в верхнем правом углу и юго-запад в нижнем левом.

0 голосов
/ 11 августа 2011

Эта публикация SO содержит код для масштабирования вида карты для размещения всех его аннотаций.

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