2011-10-15 17 views
11

को सत्यापित करने के लिए कैसे करें मेरे पास दो UITextFields हैं जो उपयोगकर्ता अक्षांश और देशांतर में प्रवेश कर सकते हैं, फिर इन समन्वयों को MKMapView पर पिन बनाने के लिए उपयोग किया जाता है।अक्षांश और देशांतर

मैं मान्य करने के लिए है कि क्या मान वे प्रवेश वास्तविक जीपीएस समन्वय या सिर्फ बकवास का एक ढेर कर रहे हैं का रास्ता मिल चाहते हैं। ऐसा करने का कोई रास्ता नहीं है?

उत्तर

38

latitude -180 और 180 के बीच longitude -90 और 90 के बीच की संख्या और होना चाहिए

+2

कूल, क्या यह सच है? – Pacerier

+1

एक विवरण, http://stackoverflow.com/a/6536279/368691 के साथ एक जवाब। हाँ, यह सही जवाब है। हालांकि, यह भूमि और समुद्र मानता है। – Gajus

+2

क्या हमें सीमा शामिल करनी चाहिए? (लंबी> = -180 && लंबे <= 180) या (लंबी> -180 && लंबे <180)? – Mehmed

0

मैं इस

numberFormatter = [[NSNumberFormatter alloc] init]; 
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle]; 
NSNumber *latitude = [numberFormatter numberFromString:theInputString];  
if((latitude != nil) 
{ 
    //check it is within lat/long range 
} else { 
    //not even a valid number, reject it 
} 
-1
CLLocationCoordinate2D p1; 
     p1.latitude = [[punto latitud] doubleValue]; 
     p1.longitude = [[punto longitud] doubleValue]; 
     if (CLLocationCoordinate2DIsValid(p1)) 
     { 
      [Mapa addAnnotation:annotationPoint]; 
     } 
+3

इस उत्तर क्योंकि यह कोई स्पष्टीकरण के साथ कोड है कम गुणवत्ता के पोस्ट समीक्षा की पंक्ति में है। कृपया अपना उत्तर बताएं कि आपका कोड क्या करता है और यह प्रश्न का उत्तर कैसे देता है। कृपया प्रोग्रामिंग सवालों के जवाब देने में इस सलाह को मदद से पढ़ें [http://msmvps.com/blogs/jon_skeet/archive/2009/02/17/answering-technical-questions-helpfully.aspx)। –

3

की तरह कुछ करना चाहते हैं अक्षांश और देशांतर का पालन का उपयोग करना नियमित अभिव्यक्ति, हम मान्य कर सकते हैं।

अक्षांश RegEx:

@"^(\\+|-)?((\\d((\\.)|\\.\\d{1,6})?)|(0*?[0-8]\\d((\\.)|\\.\\d{1,6})?)|(0*?90((\\.)|\\.0{1,6})?))$" 

देशांतर RegEx:

@"^(\\+|-)?((\\d((\\.)|\\.\\d{1,6})?)|(0*?\\d\\d((\\.)|\\.\\d{1,6})?)|(0*?1[0-7]\\d((\\.)|\\.\\d{1,6})?)|(0*?180((\\.)|\\.0{1,6})?))$" 

दोनों अक्षांश & देशांतर के लिए सामान्य रेग्युलर एक्सप्रेशंस:

अक्षांश

ऑब्जेक्टिव-सी में भागने पात्रों के साथ

RegEx:

^(\+|-)?((\d((\.)|\.\d{1,6})?)|(0*?[0-8]\d((\.)|\.\d{1,6})?)|(0*?90((\.)|\.0{1,6})?))$ 

देशांतर RegEx:

^(\+|-)?((\d((\.)|\.\d{1,6})?)|(0*?\d\d((\.)|\.\d{1,6})?)|(0*?1[0-7]\d((\.)|\.\d{1,6})?)|(0*?180((\.)|\.0{1,6})?))$ 
0

StackOverflow सवाल का एक बहुत अध्ययन करने के बाद मैंने सोचा था कि इस सवाल का एक सरल और सीधा जिस तरह से वर्णित क्या मैं अपने अक्षांश/देशांतर सुलझाने में लिए देख रहा था में पूछा गया था AMZO:A Global Map Based Station for Reporting Aliens, Monsters, Zombies and Other Interesting Events (iPhone/iPad ऐप्लिकेशन) के लिए मान्यता। बेशर्म, मुझे पता है, लेकिन मुझे लगता है कि मैं एक पूर्ण और सुरुचिपूर्ण जवाब/समाधान के साथ आ (ऊपर क्रेग की संक्षिप्त जवाब अनुकूल) के लिए इसके लायक!

मैं नए अलर्ट कंट्रोलर का उपयोग कर रहा हूं जो अक्षांश और देशांतर पाठ इनपुट के लिए निम्न में से प्रत्येक सत्यापन को कॉल करता है।

- (BOOL) validateInput1: (NSString *) latitude 
{ 
    NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; 
    [numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle]; 
    NSNumber *latitude1 = [numberFormatter numberFromString:latitude]; 

    if (latitude1 != nil) 

    { 
     //check it is within lat/long range 

     if ((latitude1.floatValue > -90.0) && (latitude1.floatValue < 90.0)) { 

      NSLog(@"Hello Latitude!!!"); 

      return 1; 
     } 

    } else { 

     //not even a valid number, reject it 

     return 0; 

    } 

     return 0; 

} 


- (BOOL) validateInput2: (NSString *) longitude 
{ 
    NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; 
    [numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle]; 
    NSNumber *longitude1 = [numberFormatter numberFromString:longitude]; 

    if (longitude1 != nil) 

    { 
     //check it is within lat/long range 

     if ((longitude1.floatValue > -180.0) && (longitude1.floatValue < 180.0)) { 

      NSLog(@"Hello Longitude!!!"); 

      return 1; 
     } 

    } else { 

     //not even a valid number, reject it 

     return 0; 

    } 

    return 0; 

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