Масштабирование MKMapView для iOS, чтобы показать все маркеры

Я работаю с MKMapView и нанес на карту несколько точек. Я использовал MKCoordinateRegion и MKCoordinateSpan для включения масштабирования и т. Д. Вокруг одной из точек - но это не то, что я хочу ...

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

Есть ли способ решить это программно?

22
задан Venk 21 May 2013 в 04:38
поделиться

1 ответ

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

// pad our map by 10% around the farthest annotations
#define MAP_PADDING 1.1

// we'll make sure that our minimum vertical span is about a kilometer
// there are ~111km to a degree of latitude. regionThatFits will take care of
// longitude, which is more complicated, anyway. 
#define MINIMUM_VISIBLE_LATITUDE 0.01

MKCoordinateRegion region;
region.center.latitude = (minLatitude + maxLatitude) / 2;
region.center.longitude = (minLongitude + maxLongitude) / 2;

region.span.latitudeDelta = (maxLatitude - minLatitude) * MAP_PADDING;

region.span.latitudeDelta = (region.span.latitudeDelta < MINIMUM_VISIBLE_LATITUDE)
    ? MINIMUM_VISIBLE_LATITUDE 
    : region.span.latitudeDelta;

region.span.longitudeDelta = (maxLongitude - minLongitude) * MAP_PADDING;

MKCoordinateRegion scaledRegion = [map regionThatFits:region];
[map setRegion:scaledRegion animated:YES];
68
ответ дан 29 November 2019 в 03:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: