दिलचस्प पोस्ट
बास में फ़ाइल नाम और एक्सटेंशन निकालें अजाक्स फ़ाइल डाउनलोड करें Jquery, PHP जीएसएएन ने "अपेक्षित BEGIN_OBJECT फेंक रहा था लेकिन BEGIN_ARRAY था"? स्ट्रिंग में चरित्र के nth घटना को कैसे ढूंढें? कौन सा ब्राउज़र <async = "async" /> का समर्थन करता है? जावास्क्रिप्ट: कोई फाइल अपलोड किए बिना … फ़ाइल के बिना एंड्रॉइड – मैं एक एएनआर की जांच कैसे करूं? मुझे क्यों + + वीआईएस में टाइप करेंइफ़ टाइपनाम का उपयोग करने की आवश्यकता है? NSNotificationCenter बनाम प्रतिनिधिमंडल (प्रोटोकॉल का उपयोग करते हुए)? नोडजेएस विंडोज़ पर स्थापित मॉड्यूल नहीं मिल सकता है? जावास्क्रिप्ट: ऑब्जेक्ट्स के लिए फ़िल्टर () YUV को बिटमैप सरणी कनवर्ट करें (YCbCr NV21) जीएसओएन फ़ील्ड का उपयोग क्यों नहीं करता है और गेटर्स / सेटर्स का उपयोग नहीं करता है? किसी दिए गए (संख्यात्मक) वितरण के साथ यादृच्छिक संख्या उत्पन्न करें ट्रिगर सही जावास्क्रिप्ट का उपयोग कर क्लिक करें

एक समन्वय से नए समन्वय x मीटर और वाई डिग्री की गणना करें

मुझे डॉक्स में कुछ बेकार लगना चाहिए, मैंने सोचा था कि यह आसान होना चाहिए …

यदि मेरे पास एक निर्देशांक है और कुछ दिशा में एक्स मीटर दूर एक नया समन्वय प्राप्त करना है। मैं यह कैसे करु?

मुझे कुछ पसंद है

-(CLLocationCoordinate2D) translateCoordinate:(CLLocationCoordinate2D)coordinate translateMeters:(int)meters translateDegrees:(double)degrees;

धन्यवाद!

वेब के समाधान से एकत्रित समाधान "एक समन्वय से नए समन्वय x मीटर और वाई डिग्री की गणना करें"

दुर्भाग्य से, एपीआई में ऐसे कोई ऐसा समारोह नहीं है, जिससे आप अपना खुद का लिखना पड़े।

यह साइट अक्षांश / रेखांश और नमूना जावास्क्रिप्ट कोड से जुड़े कई गणनाएं प्रदान करती है। विशेष रूप से, "गंतव्य स्थान दिया गया दूरी और शुरुआती बिंदु से असर" शीर्षक वाला अनुभाग दिखाता है कि आप किस चीज की पूछ रहे हैं।

जावास्क्रिप्ट कोड उस पृष्ठ के निचले भाग में है और इसे एक उद्देश्य के सी में परिवर्तित करने का एक संभावित तरीका है:

 - (double)radiansFromDegrees:(double)degrees { return degrees * (M_PI/180.0); } - (double)degreesFromRadians:(double)radians { return radians * (180.0/M_PI); } - (CLLocationCoordinate2D)coordinateFromCoord: (CLLocationCoordinate2D)fromCoord atDistanceKm:(double)distanceKm atBearingDegrees:(double)bearingDegrees { double distanceRadians = distanceKm / 6371.0; //6,371 = Earth's radius in km double bearingRadians = [self radiansFromDegrees:bearingDegrees]; double fromLatRadians = [self radiansFromDegrees:fromCoord.latitude]; double fromLonRadians = [self radiansFromDegrees:fromCoord.longitude]; double toLatRadians = asin( sin(fromLatRadians) * cos(distanceRadians) + cos(fromLatRadians) * sin(distanceRadians) * cos(bearingRadians) ); double toLonRadians = fromLonRadians + atan2(sin(bearingRadians) * sin(distanceRadians) * cos(fromLatRadians), cos(distanceRadians) - sin(fromLatRadians) * sin(toLatRadians)); // adjust toLonRadians to be in the range -180 to +180... toLonRadians = fmod((toLonRadians + 3*M_PI), (2*M_PI)) - M_PI; CLLocationCoordinate2D result; result.latitude = [self degreesFromRadians:toLatRadians]; result.longitude = [self degreesFromRadians:toLonRadians]; return result; } 

जेएस कोड में, यह इस लिंक को शामिल करता है जो पृथ्वी की परिधि के 1/4 से अधिक दूरी के लिए अधिक सटीक गणना दर्शाता है।

यह भी ध्यान रखें कि उपरोक्त कोड किलोमीटर में दूरी को स्वीकार करता है, इसलिए पारित होने से पहले 1000.0 मीटर तक मीटर विभाजित करना सुनिश्चित करें।

मुझे ऐसा करने का एक तरीका मिला, सही स्ट्रेंक्ट्स और फ़ंक्शन खोजने के लिए खोदना पड़ा। मैं डिग्री का उपयोग नहीं कर रहा हूँ, लेकिन अक्षांश और लंबे समय के लिए मीटर के बजाय।

यहां बताया कि मैंने इसे कैसे किया है:

 -(CLLocationCoordinate2D)translateCoord:(CLLocationCoordinate2D)coord MetersLat:(double)metersLat MetersLong:(double)metersLong{ CLLocationCoordinate2D tempCoord; MKCoordinateRegion tempRegion = MKCoordinateRegionMakeWithDistance(coord, metersLat, metersLong); MKCoordinateSpan tempSpan = tempRegion.span; tempCoord.latitude = coord.latitude + tempSpan.latitudeDelta; tempCoord.longitude = coord.longitude + tempSpan.longitudeDelta; return tempCoord; } 

और जाहिर है, अगर मुझे भविष्य में डिग्री का उपयोग करने की ज़रूरत है, तो यह वास्तव में आसान है (मुझे लगता है …) इसके ऊपर काम करने के लिए कुछ बदलाव करने के लिए जैसे मैंने वास्तव में पूछा था

MKCoordinateRegion उपयोग में कुछ समस्याएं हैं- लौटे हुए क्षेत्र को फिट करने के लिए समायोजित किया जा सकता है क्योंकि दो डेल्टा उस अक्षांश पर प्रक्षेपण का बिल्कुल नक्शा नहीं कर सकता है, यदि आप कुएं में से एक के लिए शून्य डेल्टा चाहते हैं, तो आप भाग्य से बाहर हैं आदि।

यह फ़ंक्शन समन्वयन अनुवाद करने के लिए MKMapPoint का उपयोग करता है जो आपको नक्शा प्रोजेक्शन के समन्वय स्थान के आसपास के बिंदुओं को स्थानांतरित करने की अनुमति देता है और फिर उस से एक समन्वय निकालने देता है।

 CLLocationCoordinate2D MKCoordinateOffsetFromCoordinate(CLLocationCoordinate2D coordinate, CLLocationDistance offsetLatMeters, CLLocationDistance offsetLongMeters) { MKMapPoint offsetPoint = MKMapPointForCoordinate(coordinate); CLLocationDistance metersPerPoint = MKMetersPerMapPointAtLatitude(coordinate.latitude); double latPoints = offsetLatMeters / metersPerPoint; offsetPoint.y += latPoints; double longPoints = offsetLongMeters / metersPerPoint; offsetPoint.x += longPoints; CLLocationCoordinate2D offsetCoordinate = MKCoordinateForMapPoint(offsetPoint); return offsetCoordinate; } 

Nicsoft का उत्तर शानदार और बिल्कुल वही है जो मुझे चाहिए था। मैंने एक स्विफ्ट 3-वाई संस्करण बनाया है जो कि थोड़ा अधिक संक्षिप्त है और सीधे CLLocationCoordinate2D उदाहरण पर कहा जा सकता है:

 public extension CLLocationCoordinate2D { public func transform(using latitudinalMeters: CLLocationDistance, longitudinalMeters: CLLocationDistance) -> CLLocationCoordinate2D { let region = MKCoordinateRegionMakeWithDistance(self, latitudinalMeters, longitudinalMeters) return CLLocationCoordinate2D(latitude: latitude + region.span.latitudeDelta, longitude: longitude + region.span.longitudeDelta) } }