दिलचस्प पोस्ट
आप एक ही मेज पर कैसे जुड़ें, दो बार, mysql में? सी ++ 0x मोड में लिबसी ++ के साथ रगड़ क्यों नहीं कर सकते हैं इस बढ़ावा :: प्रोग्राम_पोपेंस उदाहरण? ओएस एक्स पर पीजी मणि स्थापित करना – देशी एक्सटेंशन को बनाने में विफलता कमेंट टेम्प्लेट पर संकेतक क्षय प्राथमिकता क्यों लेते हैं? इंटरफ़ेस का अर्थ क्या है {}? Django फ़िल्टर () के बीच का अंतर और () तरीकों को प्राप्त करें सीएसएस के साथ लहर आकार मुझे ऑब्जेक्ट के बजाय एक संकेतक का उपयोग क्यों करना चाहिए? JSON बॉडी के साथ पोस्ट अनुरोध जावा, कक्षापाथ, क्लासलोडिंग => एक ही जार / प्रोजेक्ट के एक से अधिक संस्करण ऑनस्टैट () और ऑनर्स () के बीच का अंतर हर दिन दोपहर एक सेवा को कैसे चलाने के लिए, और हर बूट पर एंड्रॉइड एप्लिकेशन डेवलपमेंट में मोबाइल नंबर कॉल और संदेश प्राप्त करने के तरीके को कैसे रोकें? एंड्रॉइड में अनइंस्टॉल पर काम करें नजदीकी वर्चुअल को परिणाम वस्तु का हिस्सा बनाने के लिए नहीं मिल सकता है

iPhone कम्पास जीपीएस दिशा

मैं किसी ऐसे एप्लिकेशन को विकसित करने की कोशिश कर रहा हूं जो किसी विशिष्ट स्थान के लिए किसी प्रकार के संकेतक को इंगित करने के लिए iPhone के जीपीएस और कम्पास का उपयोग करता है (जैसे कि कम्पास हमेशा उत्तर की ओर इंगित करती है)। स्थान तय हो गया है और मुझे हमेशा उस विशिष्ट स्थान पर इंगित करने के लिए संकेतक की आवश्यकता होती है, चाहे वह उपयोगकर्ता कहां स्थित हो। मेरे पास इस स्थान का लेट / लांग निर्देशांक है लेकिन मैं निश्चित रूप से कम्पास और जीपीएस का उपयोग करके उस स्थान को कैसे इंगित कर सकता हूं … जैसे http://www.youtube.com/watch?v=iC0Xn8hY80w इस लिंक 1: 20 '

मैं कुछ कोड लिखता हूं, हालांकि, यह सही दिशा को घुमाए नहीं जा सकता

-(float) angleToRadians:(double) a { return ((a/180)*M_PI); } -(void)updateArrow { double alon=[longi doubleValue];//source double alat=[lati doubleValue];//source double blon=[pointlongi doubleValue];//destination double blat=[pointlati doubleValue];//destination float fLat = [self angleToRadians:alat]; float fLng = [self angleToRadians:alon]; float tLat = [self angleToRadians:blat]; float tLng = [self angleToRadians:blon]; float temp = atan2(sin(tLng-fLng)*cos(tLat), cos(fLat)*sin(tLat)-sin(fLat)*cos(tLat)*cos(tLng-fLng)); double temp2= previousHeading; double temp1=temp-[self angleToRadians:temp2]; /*I using this,but it can't rotate by :point even i change the coordinate in CGPointMake */ Compass2.layer.anchorPoint=CGPointMake(0, 0.5); [Compass2 setTransform:CGAffineTransformMakeRotation(temp1)]; /* Compass2 is a UIImageView like below picture I want to rotate it around : point in image ^ | | | : | */ 

Solutions Collecting From Web of "iPhone कम्पास जीपीएस दिशा"

एक मानक "शीर्षक" या "बेयरिंग" समीकरण है जिसे आप उपयोग कर सकते हैं – अगर आप lat1, lon1 में हैं, और जिस बिंदु पर आप रुचि रखते हैं वह lat2, lon2 पर है, तो समीकरण है:

 heading = atan2( sin(lon2-lon1)*cos(lat2), cos(lat1)*sin(lat2) - sin(lat1)*cos(lat2)*cos(lon2-lon1)) 

यह आपको रेडियन में एक असर देता है, जिसे आप 180 / π से गुणा करके डिग्री में बदल सकते हैं। मान तब -180 और 180 डिग्री के बीच होता है, इसलिए एक मानक कम्पास आकृति प्राप्त करने के लिए 360 को किसी भी नकारात्मक उत्तर जोड़ देता है।

एटेन 2 एक मानक समारोह है जो आर्कटान से संबंधित है, जो चार संभावित ट्रैक्टरों के लिए सही काम करता है, जो आपके गंतव्य बिंदु की तुलना में आप कहां हो सकता है।

1) अपना वर्तमान स्थान प्राप्त करें (जीपीएस से)

2) अक्षांश और देशांतर में अंतर प्राप्त करें

3) कोण प्राप्त करने के लिए एएन 2 विधि का उपयोग करें

यानी (चेतावनी: अप्रयुक्त कोड)

 CLLocation *targetLocation = [CLLocation alloc] initWithLatitude:1 longitude:2]; CLLocation *sourceLocation = <get from GPS> double dx = [targetLocation coordinate].latitude - [sourceLocation coordinate].latitude; double dy = [targetLocation coordinate].longitude - [sourceLocation coordinate].longitude; double angle = atan2(dx, dy); 

आपको इसे संकलित करने के लिए उस पर ज़ोर देना पड़ सकता है, लेकिन यह विचार है!

मैंने कुछ समय पहले यह किया था, यहां दो अलग-अलग कार्यान्वयन हैं। पहला आपके दृष्टिकोण के समान है, दूसरा त्रिकोण गणित के बिना है सबसे पहले मैंने अपने ऐप में उपयोग किया था, लेकिन दूसरे के रूप में अच्छी तरह से काम करना लग रहा था, हालांकि यह साफ नहीं दिखता है। आपको अपने यूआई में उत्तर के आधार पर इस असर को ऑफसेट करना भी याद रखना होगा।

 - (double) toRadian: (double) val { return val * (M_PI / 180); } // Convert to degrees from radians - (double) toDegrees: (double) val { return val * 180 / M_PI; } // convert from a radian to a 360 degree format. - (double) toBearing: (double) val { return ( (int)([self toDegrees: val]) + 360 ) % 360; // use mod to get the degrees } // Calculate the bearing based off of the passed coordinates and destination. // - (double) calcBearingWithLatitude:(CLLocationDegrees)latSource latitude:(CLLocationDegrees)latDest longitude:(CLLocationDegrees)lonSrc longitude:(CLLocationDegrees)lonDest { double lat1 = [self toRadian:latSource]; double lat2 = [self toRadian:latDest]; double dLon = [self toRadian:(lonDest - lonSrc)]; double y = sin(dLon) * cos(lat2); double x = cos(lat1) * sin(lat2) - sin(lat1) * cos(lat2) * cos(dLon); return [self toBearing:atan2(y, x)]; } 

और दूसरा।

 // got this code from some forums and modified it, thanks for posting it coullis! Mostly here for reference on how to do this without sin and cos. - (CLLocationDegrees) altCalcBearingWithLatitude:(CLLocationDegrees)latSource latitude:(CLLocationDegrees)latDest longitude:(CLLocationDegrees)lonSrc longitude:(CLLocationDegrees)lonDest { CLLocationDegrees result; // First You calculate Delta distances. float dx = lonSrc - latSource; float dy = lonDest - latDest; // If x part is 0 we could get into division by zero problems, but in that case result can only be 90 or 270: if (dx==0) { if (dy > 0) result = 90; else result = 270; } else { result = [self toDegrees: atan(dy/dx)]; } // This is only valid for two quadrants (for right side of the coordinate system) so modify result if necessary... if (dx < 0) result = result + 180; // looks better if all numbers are positive (0 to 360 range) if (result < 0) result = result + 360; // return our result. return result; 

}

इसे इस्तेमाल करो। उचित रिश्तेदार शीर्षक निर्धारित करने के लिए आपको getHeadingForDirection के परिणाम से अपने वास्तविक कंपास शीर्षक को घटा देना होगा। रिटर्न वैल्यू रेडियन में जा रहा है

 -(float) angleToRadians:(float) a { return ((a/180)*M_PI); } - (float) getHeadingForDirectionFromCoordinate:(CLLocationCoordinate2D)fromLoc toCoordinate:(CLLocationCoordinate2D)toLoc { float fLat = [self angleToRadians:fromLoc.latitude]; float fLng = [self angleToRadians:fromLoc.longitude]; float tLat = [self angleToRadians:toLoc.latitude]; float tLng = [self angleToRadians:toLoc.longitude]; return atan2(sin(tLng-fLng)*cos(tLat), cos(fLat)*sin(tLat)-sin(fLat)*cos(tLat)*cos(tLng-fLng)); }