2013-09-06 3 views
1

У меня есть вопрос относительно настройки области на моем MKMapView.MKMapView Region

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

на северо-востоке и юго-западе широты и долготу этой области:

North East Coordinate Lat:59.623724 Long:2.911587 
South West Coordinate Lat:49.004833 Long:-11.361825 

В дополнении к этому, я хотел бы «замок» в MapView этой области. В идеале блокировка будет прозрачной, т. Е. Указанные выше координаты представляют максимальную степень MKMapView. Однако, если это просто случай проверки на северо-востоке и юго-координаты в

- (void)mapView:(MKMapView *)aMapView regionDidChangeAnimated:(BOOL)animated 

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

Большое спасибо за любые указания по этому вопросу.

EDIT: Что касается первой части моего вопроса, я понял, что я могу установить начальную область на MKMapView, используя следующий код:

CLLocationCoordinate2D neCoord; 
neCoord.latitude = 59.787643; 
neCoord.longitude = 3.025857; 

CLLocationCoordinate2D swCoord; 
swCoord.latitude = 49.394171; 
swCoord.longitude = -11.036642; 
MKCoordinateRegion region; 
region.center.latitude = neCoord.latitude - (neCoord.latitude - swCoord.latitude) * 0.5; 
region.center.longitude = neCoord.longitude + (swCoord.longitude - neCoord.longitude) * 0.5; 
region.span.latitudeDelta = fabs(neCoord.latitude - swCoord.latitude); // Add a little extra space on the sides 
region.span.longitudeDelta = fabs(swCoord.longitude - neCoord.longitude); // Add a little extra space on the sides 

region = [self.mapView regionThatFits:region]; 
[self.mapView setRegion:region animated:YES]; 

ответ

0

Во-первых, вам нужно убедиться, что вы установите область на экране карты после отображения представления. Если вы установите его перед загрузкой карты, он, вероятно, не будет сосредоточен в этом регионе. Как только вы это сделаете, просто установите self.mapView.zoomEnabled = NO; и self.mapView.scrollEnabled = NO;, и это не позволит пользователю перемещать карту.

Если вы хотите заблокировать максимальные границы, которые пользователь может просматривать, но все же разрешить прокрутку и масштабирование, вам нужно будет использовать -mapView:regionDidChangeAnimated: и «ударить» пользователя обратно внутри ваших границ, если они его оставят. Обратите внимание, что пользовательский интерфейс для этого, вероятно, будет сосать - они будут перемещаться, отпускать, а затем карта внезапно вернется в регион, который вы определили. Вы можете попробовать использовать -mapView:regionWillChangeAnimated: и изменить регион карты, если они покинут ваши границы, что может быть немного менее раздражающим.

+0

Возможно, я не был чист, я не хочу отключать масштабирование или прокрутку, мне нужна эта функциональность, но только в области, указанной моей ограничивающей рамкой. –