iOS için google Maps SDK kullanıyor. Haritalarımda işaretleyiciler var ve işaretçilerin ayrı olması için işaretlerin düzgün bir şekilde ayarlanmasını istiyorum ve aynı zamanda işaretçilerin ekranda aynı anda görünmesi gerekiyor. Bunu yapabiliyorum. Tüm işaretleyiciler görünürse, yakınlaştırma mantığını kullanarak yaptım. Ancak sorun harita kameranın keskin bir şekilde değişmesidir. Bu yakınlaştırmayı canlandırmak için çok denedim ama yapamadım. AnimateToCameraPosition, animateToZoom ve UIView animasyon yöntemini denedim. Harita kamerası konumu, animasyon olmadan hızlı bir şekilde değişiyor
- (BOOL)allCoordinatesVisibleWithLatitudes:(NSArray *)arrayOfLatitudes Longitudes:(NSArray *)arrayOfLongitudes
{
CLLocationCoordinate2D coordinate;
for(int i=0;i<arrayOfLatitudes.count;i++)
{
coordinate = CLLocationCoordinate2DMake([[arrayOfLatitudes objectAtIndex:i] floatValue], [[arrayOfLongitudes objectAtIndex:i] floatValue]);
if(![self.mapView.projection containsCoordinate:coordinate])
{
return NO;
}
}
return YES;
}
- (void)setZoomToHaveProperView
{
NSMutableArray * arrayOfLatitudes = [[NSMutableArray alloc] init];
NSMutableArray * arrayOfLongitudes = [[NSMutableArray alloc] init];
RS_SingleMatch * singleMatch = [[RS_SingleMatch alloc] init];
float zoom = 0.0;
// You may ignore this first for loop. it just takes coordinate of all markers in arrays.
for(int i=0;i<=self.userMatches.arrayOfMatches.count;i++)
{
if(i==self.userMatches.arrayOfMatches.count)
{
RS_Trip * userTrip = [[RS_Trip alloc] init];
[arrayOfLatitudes addObject:[NSNumber numberWithFloat:userTrip.fromLat]];
[arrayOfLongitudes addObject:[NSNumber numberWithFloat:userTrip.fromLon]];
if(self.segmentedControl.selectedSegmentIndex == 1)
{
[arrayOfLatitudes addObject:[NSNumber numberWithFloat:userTrip.toLat]];
[arrayOfLongitudes addObject:[NSNumber numberWithFloat:userTrip.toLon]];
}
}
else
{
singleMatch = [self.userMatches.arrayOfMatches objectAtIndex:i];
[arrayOfLatitudes addObject:[NSNumber numberWithFloat:singleMatch.fromLat]];
[arrayOfLongitudes addObject:[NSNumber numberWithFloat:singleMatch.fromLong]];
if(self.segmentedControl.selectedSegmentIndex == 1)
{
[arrayOfLatitudes addObject:[NSNumber numberWithFloat:singleMatch.toLat]];
[arrayOfLongitudes addObject:[NSNumber numberWithFloat:singleMatch.toLong]];
}
}
}
zoom = self.mapView.camera.zoom;
// if all coordinates are visible then zoom in
if([self allCoordinatesVisibleWithLatitudes:arrayOfLatitudes Longitudes:arrayOfLongitudes])
{
while ([self allCoordinatesVisibleWithLatitudes:arrayOfLatitudes Longitudes:arrayOfLongitudes])
{
zoom += 0.5;
[self.mapView setCamera:[GMSCameraPosition cameraWithTarget:self.mapView.camera.target zoom:zoom]];
[self.mapView animateToCameraPosition:[GMSCameraPosition cameraWithTarget:self.mapView.camera.targetAsCoordinate zoom:zoom]];
}
}
}
Ben de mapview kamera ayarı ve eğer durumun ise döngü içinde kamerayı animasyon sırası ters çalıştı. Sadece 3 günümü harcadım. Şimdi yardımını istiyorsun. Önceden teşekkür ederiz.
teşekkürler. İhtiyacım olan bu. – Geek