mapkit的坐标格式

时间:2016-03-31 14:03:40

标签: ios objective-c

由于某些原因,我的坐标格式在MapKit中不起作用。例如LAT 51 18.47387N LONG 000 33.28466W。其他格式似乎工作正常,例如LAT 50.3332 LONG -50.3332。有人可以解释为什么这是我以及如何解决它。我的Lat和Long来自服务器,无法更改,所以我只是将值保存在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];

1 个答案:

答案 0 :(得分:0)

坐标似乎是以度(整数)[空格]分钟(浮点)格式。 您需要解析这两个数字并将小数度数创建为

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;

然而,你需要测试最终角色,因为&#34; W&#34; (西)经度或&#34; S&#34; (南方)对于纬度将要求你否定答案。有点像...

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