2012-05-23 18 views
5

मैं कुछ आईफोन ऐप पर काम कर रहा हूं और मैं एक असर बनाना चाहता हूं, एक छवि जो एक विशिष्ट भौगोलिक स्थान पर जाती है, एक्सेलेरोमीटर का उपयोग कर उपयोगकर्ता स्थान के आधार पर।आईओएस: मानचित्र के बिना वर्तमान स्थान से भौगोलिक स्थान पर कोण प्राप्त करें

मैंने यहां कई उत्तरों पढ़े लेकिन समाधान नहीं मिला।

मेरे पास वर्तमान स्थान निर्देशांक और गंतव्य वाले हैं।

क्या आपके पास कोई विचार या नमूना कोड है? धन्यवाद।

+0

देखें [इस] (http://stackoverflow.com/questions/6745131/how-can-we-find-the-angle-between-two-locations-defined-by-latitude-or-longitude) और [यह] (http://www.movable-type.co.uk/scripts/latlong.html) संदर्भ –

उत्तर

9

शीर्ष पर अपना स्थान प्रबंधक के प्रतिनिधि विधि में ज फ़ाइल

float GeoAngle; 

में इस

#define RadiansToDegrees(radians)(radians * 180.0/M_PI) 
#define DegreesToRadians(degrees)(degrees * M_PI/180.0) 

परिभाषित चर को परिभाषित: -

-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation 
{ 
    GeoAngle = [self setLatLonForDistanceAndAngle:newLocation]; 
} 

और समारोह इस प्रकार होगी : -

-(float)setLatLonForDistanceAndAngle:(CLLocation *)userlocation 
{ 
    float lat1 = DegreesToRadians(userlocation.coordinate.latitude); 
    float lon1 = DegreesToRadians(userlocation.coordinate.longitude); 

    float lat2 = DegreesToRadians(locLat); 
    float lon2 = DegreesToRadians(locLon); 

    float dLon = lon2 - lon1; 

    float y = sin(dLon) * cos(lat2); 
    float x = cos(lat1) * sin(lat2) - sin(lat1) * cos(lat2) * cos(dLon); 
    float radiansBearing = atan2(y, x); 
    if(radiansBearing < 0.0) 
    { 
     radiansBearing += 2*M_PI; 
    } 

    return radiansBearing; 
} 

आप GeoAngle चर में लगातार अद्यतन कोण प्राप्त करेंगे। तीर को गंतव्य स्थान पर घुमाने के लिए तीर की छवि लें और इसे तीर ImageView के IBOutlet को असाइन करें और इसे अद्यतन अद्यतन विधि पर घुमाएं।

- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading 
{ 
    float direction = -newHeading.trueHeading; 

    arrowImageView.transform=CGAffineTransformMakeRotation((direction* M_PI/180)+ GeoAngle); 
} 
+0

के लिए धन्यवाद, मुझे कोण मिल गया है, लेकिन इस दिशा को दिखाने के लिए एक्सेलेरोमीटर का उपयोग करके मेरी छवि को सही ढंग से घुमाने के लिए कैसे? मुझे इस विधि में कोण का उपयोग किया जाता है: - (शून्य) एक्सेलेरोमीटर: (यूआईएक्सेलेरोमीटर *) एक्सेलेरोमीटर किया गया था: (यूआईसीक्लेरेशन *) त्वरण; लेकिन यह अभी भी अपडेट नहीं कर रहा है, यहां तक ​​कि मैं आईफोन घुमाता हूं। – hafedh

+0

यदि आप तीर को गंतव्य स्थान पर इंगित करना चाहते हैं तो फिर उत्तर को जांचें मैंने जवाब संपादित किया। – Dhawal

+0

यह काम किया! आपका बहुत बहुत धन्यवाद। – hafedh

संबंधित मुद्दे