मैं आईओएस के लिए Google मानचित्र एसडीके का उपयोग करता हूं। मेरे पास मेरे मानचित्र पर मार्कर हैं और उचित ज़ूम सेट करना चाहते हैं ताकि मार्कर अलग हो और मार्कर स्क्रीन पर एक बार स्क्रीन पर दिखाई दे सकें। मैं इसे करने में सक्षम हूं। मैंने तर्क का उपयोग करके किया है कि यदि सभी मार्कर दिखाई दे रहे हैं तो ज़ूम इन करें। लेकिन समस्या यह है कि नक्शा कैमरा तेजी से बदल रहा है। मैंने इस ज़ूम को एनिमेट करने के लिए बहुत कुछ करने की कोशिश की लेकिन मैं ऐसा करने में असफल रहा। मैंने एनिमेट करने के लिए एनिमेट करने के लिए एनिमेट करने के लिए एनीमेट टोज़मूम और यूआईवीव एनीमेशन विधि की कोशिश की।एनीमेशन के बिना मानचित्र कैमरा स्थिति तेजी से बदलती है
- (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]];
}
}
}
मैं भी MapView कैमरा स्थापित करने और अगर हालत की जबकि पाश में कैमरा एनिमेट के आदेश को पलटने की कोशिश की। मैंने बस इसे करने में 3 दिन बिताए। अब आपकी मदद मांग रहे हैं। अग्रिम धन्यवाद।
सूत्र के लिए धन्यवाद। यही मुझे चाहिए। – Geek