कैसे MapKit के साथ उपयोगकर्ता स्थान पालन करने के लिए

वोट
10

मैं MapKit उपयोग कर रहा हूँ उनके आसपास पिन उपयोगकर्ता के स्थान रिश्तेदार प्रदर्शित करने के लिए। मैं कार्यक्षमता है जो मानचित्र स्क्रीन के निचले बाएं कोने में क्रॉसहेयर बटन के माध्यम से प्रदान करता है नकल करने के लिए सक्षम होने के लिए करना चाहते हैं। मैं पहले से ही पता है कि MapKit MKUserLocation के माध्यम से उपयोगकर्ता के स्थान के साथ एक CLLocation वस्तु प्रदान करता हूँ, मैं तो बस कैसे मुझे लगता है कि स्थान पर ध्यान केंद्रित रखना चाहिए पर सलाह लेना चाहता था। मेरे प्रारंभिक झुकाव एक NSTimer उपयोग करने के लिए नक्शे को केंद्रित करने के लिए है कि हर 500ms या तो समन्वय पर था।

क्या ऐसा करने के लिए इससे अच्छा तरीका है? वहाँ में बनाया कुछ MapKit कि मुझे लगता है कि यह पूरा होगा याद कर रहा हूँ करने के लिए है?

बहुत बहुत धन्यवाद, ब्रेंडन

14/03/2010 को 02:09
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


4 जवाब

वोट
39

आप IOS5 पर हैं + यह बहुत आसान है। बस "userTrackingMode" बदलने कोड जैसे का उपयोग कर:

[_mapView setUserTrackingMode:MKUserTrackingModeFollow animated:YES];

यह सुचारू रूप से उन वर्तमान स्थान का पालन करेंगे। आप नक्शे खींचें तो यह और भी वापस ट्रैकिंग मोड सेट हो जाएगा करने के लिए MKUserTrackingModeNoneजो आम तौर पर व्यवहार आप चाहते है।

20/04/2013 को 10:40
का स्रोत उपयोगकर्ता

वोट
12

यह मानचित्र को अपडेट उपयोगकर्ता स्थान स्वचालित रूप से सिर्फ गूगल मैप्स की तरह है करने के लिए वास्तव में आसान है। सीधे शब्दों में करने के लिए showsUserLocation सेट हाँ

self.mapView.showsUserLocation = YES

... और फिर केन्द्र बदलने के लिए मानचित्र जब स्थान अद्यतन किया जाता है MKMapViewDelegate लागू।

-(void)               mapView:(MKMapView *)mapView 
        didUpdateUserLocation:(MKUserLocation *)userLocation
{
    if( isTracking )
    {
        pendingRegionChange = YES;
        [self.mapView setCenterCoordinate: userLocation.location.coordinate
                                 animated: YES];
    }
}

और उपयोगकर्ता ज़ूम और दृश्य वर्तमान स्थान के वापस चोरी के बिना पैन करने के लिए अनुमति देने के लिए ...

-(void) mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated
{
    if( isTracking && ! pendingRegionChange )
    {
         isTracking = NO;
         [trackingButton setImage: [UIImage imageNamed: @"Location.png"] 
                         forState: UIControlStateNormal];
    }

    pendingRegionChange = NO;
}

-(IBAction) trackingPressed
{
    pendingRegionChange = YES;
    isTracking = YES;
    [mapView setCenterCoordinate: mapView.userLocation.coordinate 
                        animated: YES];

    [trackingButton setImage: [UIImage imageNamed: @"Location-Tracking.png"] 
                    forState: UIControlStateNormal];
}
01/09/2010 को 02:42
का स्रोत उपयोगकर्ता

वोट
7

मुझे लगता है कि मैं वास्तव में CoreLocation का प्रयोग करेंगे CLLocationManagerऔर उसके प्रतिनिधि विधि का उपयोग करें locationManager:didUpdateToLocation:fromLocation:

इस तरह, आप एक की भूमि के ऊपर नहीं है NSTimer, और यह केवल जब वहाँ एक नया स्थान उपलब्ध है अद्यतन करता है।

आप देशांतर खींच और से अक्षांश कर सकते हैं CLLocationकरने के लिए भेजा वस्तु locationManager:didUpdateToLocation:fromLocation:विधि और यह नक्शा दृश्य पर गुजरती हैं।

14/03/2010 को 05:24
का स्रोत उपयोगकर्ता

वोट
0

मैं याकूब Relkin के जवाब के साथ चलते हैं। इस ट्यूटोरियल एक iPhone app में CoreLocation का उपयोग करने का एक कदम-दर-कदम प्रक्रिया प्रदान करता है। उम्मीद है कि यह आप में मदद करता है।

शुभकामनाएं।

14/03/2010 को 06:17
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more