Bazı olayları ateşler bazı iPhone MapKit kodu üzerinde çalışıyorum zaman haritası değişim sınırları (harici bir sunucuya temelde bazı sorgular). Ben çözmek gibi olamaz bir kenar durum vardır. Kullanıcıların yeni bir adres girdiğinizde ben bu konumda yakınlaştırmak için setRegion kullanmak ve daha sonra ben haritanın sınırları hesaplamak ve bu koordinatları ile Harici sunucusunu sorgulamak. Hep Ancak setRegion diyoruz o kovmayacak bir kenar davası var. Yani, bir kullanıcı sihirli o harita aynı bölgeye büyültüldüğünde haritanın geçerli merkezi yatan tam aynı adres seçmek için gerçekleştiğinde. Tabii bu olasılık nadirdir ancak aşağıdaki kodla ulaşılabilir kolaydır:
CLLocation *centerOfMap = [[CLLocation alloc] initWithLatitude:mapView.centerCoordinate.latitude longitude:mapView.centerCoordinate.longitude];
mySearchLocation.searchLocation = centerOfMap;
//Recenter and zoom map in on search location
MKCoordinateRegion region = {{0.0f, 0.0f}, {0.0f, 0.0f}};
region.center = mySearchLocation.searchLocation.coordinate;region.span.longitudeDelta = 0.01f;
region.span.latitudeDelta = 0.01f;
[self.mapView setRegion:region animated:YES];
Bu, geçerli haritanın ortasında için bir raptiye ve buna dayanarak benim sunucusuna bir sorgu ateşlemesi için kullanıcı izin eşdeğer olacaktır. kod mantığı (kullanıcıların kolayca harita etrafında kaydırmak ve açıkça bir yenileme düğmesine basın olamaz ki yaptığım) değiştirerek bölgeye bağlıdır Maalesef, çünkü ben etrafında bir iş demektir. Nasıl setRegion denilen edildiğinde bilebilirim ama regionWillChange / regionDidChange patlamaz. Ben işlevi bazı nasıl geçersiz kılabilir miyim?
DÜZENLEME: ilk yanıt yorumladı, ben bölge Aşağıdaki kodu kullanarak değiştirmek olmaz algılamak çalıştı:
//Recenter and zoom map in on search location
MKCoordinateRegion region = {{0.0f, 0.0f}, {0.0f, 0.0f}};
region.center = mySearchLocation.searchLocation.coordinate;
region.span.longitudeDelta = 0.01f;
region.span.latitudeDelta = 0.01f;
region = [mapView regionThatFits:region]; //Not sure if this is necessary
NSLog(@diff in latitude of center %f, (mapView.region.center.latitude - region.center.latitude));
NSLog(@diff in longitude of center %f, (mapView.region.center.longitude - region.center.longitude));
NSLog(@diff in latitude span %f, (mapView.region.span.latitudeDelta - region.span.latitudeDelta));
NSLog(@diff in longitude span %f, (mapView.region.span.longitudeDelta - region.span.longitudeDelta));
[self.mapView setRegion:region animated:YES];
Ben searchLocation ayarladığınızda Ne yazık ki şu sonuçlar elde geçerli haritanın merkezi olması:
diff in latitude of center 0.000000
diff in longitude of center 0.000016
diff in latitude span -0.000000
diff in longitude span 0.000000
Farklı durumlarda hata biraz farklı ama genel olarak bölge bu setRegion veya Morever, regionDidChange, ateş etme gibi biraz farklı olduğunda bile konuşuyor. Herkes neden açıklayabilir misiniz? Ya da düzgün bu algılama hakkında gidebiliriz. Not: Ben de mapView.centerCoordinate ile denedim ama benzer hatalar olsun, ben tek bölge DEĞİŞTİREMEYECEĞİNİZİ ne zaman (centerCoordinate aynı ise yakınlaştırma düzeyi / bölge hala farklı olabilir) bilmek istiyorum.













