Содержать все координаты на экране - PullRequest
0 голосов
/ 07 ноября 2011

У меня есть много координат, которые я строю, используя MKMapOverlay и CoreLocation, и я хочу иметь возможность содержать их все в виде.

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

Например,, это будет пример с некоторыми точками, вырезанными внизу справа. Примечание: это только для примера, и путь создается с помощью Google Maps, но в приложении он будет создан путем отслеживания истории местоположений.

Опять же, если бы это было на iPhone, как я могу сделать так, чтобы карта содержала все точки, используя MKCoordinateRegion?

Ответы [ 2 ]

1 голос
/ 07 ноября 2011

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

что-то вроде

for(int idx = 0; idx < points.count; idx++){
    CLLocation* currentLocation = [points objectAtIndex:idx];
    if(currentLocation.coordinate.latitude != -180 && currentLocation.coordinate.longitude != -180){
        if(currentLocation.coordinate.latitude > maxLat)
            maxLat = currentLocation.coordinate.latitude;
        if(currentLocation.coordinate.latitude < minLat)
            minLat = currentLocation.coordinate.latitude;
        if(currentLocation.coordinate.longitude > maxLon)
            maxLon = currentLocation.coordinate.longitude;
        if(currentLocation.coordinate.longitude < minLon)
            minLon = currentLocation.coordinate.longitude;
    }
}

MKCoordinateRegion region;
region.center.latitude = (maxLat + minLat) / 2;
region.center.longitude = (maxLon + minLon) / 2;
region.span.latitudeDelta = (maxLat - minLat) + .3;
region.span.longitudeDelta = (maxLon - minLon) + .3;

[map regionThatFits:region];
1 голос
/ 07 ноября 2011

Я думаю, вам нужно пройтись по всем вашим координатам и найти северную, восточную, южную и западную границы. Затем вы можете создать координатную область на основе всех значений.

Возможно, вы могли бы взглянуть на этот вопрос для получения помощи по реализации?

...