尝试从数组中删除基于MKMap的引脚

时间:2014-09-07 16:48:37

标签: ios

正如问题所说我试图根据我的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];
}

1 个答案:

答案 0 :(得分:0)

看起来您正在尝试将api响应保存到和Array。

Api总是返回json字符串,即NSString。

您需要转换解码json字符串。

在你的情况下

NSString * str = [NSString stringWithContentsOfURL:myURL encoding:NSUTF8StringEncoding error:& error];

你需要用[NSJSONSerialization JSONObjectWithData:<#(NSData )#>解码str。选项:其中#(NSJSONReadingOptions)#>错误:<#(NSError * )#>],它为您提供了正确的字典数组。

希望它能帮到你