2016-03-31 17 views
1

何らかの理由で私の座標形式がMapKitで機能しません。たとえば、LAT 51 18.47387N LONG 000 33.28466Wです。他のフォーマットは、例えばLAT 50.3332 LONG -50.3332のようにうまくいくようです。誰かがこれがなぜ、どのように私はそれを修正できるか説明することができます。私の緯度と経度はサーバから来て、変更することはできませんので、私はちょうどUITextFieldの値を保存してそこから地図をロードするつもりでした。私の座標を動作させる方法があるのですか、それともアプリケーションの別のフォーマットに変換する方法ですか?マップキットの座標形式

MKPointAnnotation *annonation = [[MKPointAnnotation alloc]init]; 
CLLocationCoordinate2D mycordinate; 
mycordinate.latitude = [self.myTextField floatValue]; 
mycordinate.longitude =[self.myTextField1 floatValue]; 
annonation.coordinate = mycordinate; 
[self.mapview addAnnotation:annonation]; 


MapPin *ann = [[MapPin alloc] init]; 
ann.title = @"Test"; 
ann.subtitle = @"test"; 
ann.coordinate = region.center; 
[mapview addAnnotation:ann]; 
+0

あなたはどこでそれらを読み込もうとしますか? – Larme

+0

こんにちは@Larmeテキストフィールドを読み込むコードの残りの部分を追加しました。私はそれらをストーリーボードのテキストフィールドから読み込みました。 – vype

+0

正確にtextFieldの 'text'値は何ですか? – Larme

答えて

0

座標は、度(整数)[スペース]分(浮動小数点数)形式であるようです。 次の2つの数字を解析して進度を作成する必要が

dDegs = iDegs + dMinutes/60.0

更新 コメンテーター@Larmeが指摘するように、これを実行するための簡単な方法がある

NSArray *components = [text componentsSeparatedByString:@" "]; 
float iDegs = [components[1] floatValue]; // components[0] is "Lat"/"Long" 
float dMinutes = [components[2] floatValue]; 
float dDegs = iDegs + dMinutes/60.0; 

しかし、経度の "W"(西)または緯度の "S"(南)の最終文字をテストする必要があります。答えを否定する必要があります。何かのように...

if [text hasSuffix:"S"] || [text hasSuffix:"W"] { dDegs = -dDegs; } 
+0

どうすればこれを使うのでしょうか? – vype

+1

'NSArray * components = text componentsSeparatedByString:@" "]のようなものです。 float iDegs = [コンポーネント[1] floatValue]; float dMinutes = [components [2] floatValue]; '? – Larme

+0

ありがとう、@ルルメ。私はあなたのヒントを答えに取り入れました - あなたが気にしないことを願っています。また、ネガのテストも追加されました。 – Grimxn

関連する問題