正如问题所说我试图根据我的php文件返回的坐标向地图添加图钉。所述文件返回以下结果 [{" dogid":" 1""纬度":" 15.435786""经度":&# 34; -21.318447"},{" dogid":" 1""纬度":" 14.00000"&# 34;经度":" -18.536711"}]
我在做什么(我相信我是)正在从链接中获取值并将它们保存为字符串。其次,将该字符串值保存到数组中。然后,我通过这个数组并保存纬度和经度并将其分配给CLLocationCordinate 2dcoord。之后,我希望两个引脚都放在他们收到的任何位置。
然而,发生的事情是:在运行程序时,当它到达此林时
for (NSDictionary *row in locations) {
循环不会运行以分配值,而是跳转到结尾。奇怪的是,地图上放了一个引脚(你的位置似乎不是它所传递的值)。
会对此事表示赞赏。
由于
- (void)viewDidAppear:(BOOL)animated
{
NSMutableArray *annotations = [[NSMutableArray alloc] init];
NSURL *myURL =[NSURL URLWithString:@"link.php"];
NSError *error=nil;
NSString *str=[NSString stringWithContentsOfURL:myURL encoding:NSUTF8StringEncoding error:&error];
CLLocationCoordinate2D coord;
NSArray *locations=[NSArray arrayWithContentsOfFile:str];
for (NSDictionary *row in locations) {
NSNumber *latitude = [row objectForKey:@"latitude"];
NSNumber *longitude = [row objectForKey:@"longitude"];
// NSString *title = [row objectForKey:@"title"];
//Create coordinates from the latitude and longitude values
coord.latitude = latitude.doubleValue;
coord.longitude = longitude.doubleValue;
}
MKPointAnnotation *pin = [[MKPointAnnotation alloc] init];
pin.coordinate = coord;
[self.mapView addAnnotation:pin];
}
答案 0 :(得分:0)
看起来您正在尝试将api响应保存到和Array。
Api总是返回json字符串,即NSString。
您需要转换解码json字符串。
在你的情况下
NSString * str = [NSString stringWithContentsOfURL:myURL encoding:NSUTF8StringEncoding error:& error];
你需要用[NSJSONSerialization JSONObjectWithData:<#(NSData )#>解码str。选项:其中#(NSJSONReadingOptions)#>错误:<#(NSError * )#>],它为您提供了正确的字典数组。
希望它能帮到你