Я работаю с MKMapView
и нанес на карту несколько точек. Я использовал MKCoordinateRegion
и MKCoordinateSpan
для включения масштабирования и т. Д. Вокруг одной из точек - но это не то, что я хочу ...
Я пытаюсь использовать что-то похожее на функция масштабирования Javascript до границ. поэтому все мои очки должны быть видны пользователю. (По всей Великобритании будет около 10 точек). Я хотел бы показать их все, или, если большинство из них было в районе Лондона, увеличьте масштаб.
Есть ли способ решить это программно?
Конечно. Вы хотите найти самые большие и самые маленькие значения широты и долготы среди ваших аннотаций (что вы можете сделать, перебирая 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];