尝试从数组中的值中删除基于 MKMap 的引脚
Posted
技术标签:
【中文标题】尝试从数组中的值中删除基于 MKMap 的引脚【英文标题】:Attempting to drop pins based on MKMap from values from array 【发布时间】:2014-09-07 16:48:36 【问题描述】:正如问题所说,我正在尝试根据我的 php 文件返回的坐标向我的地图添加图钉。所述文件返回以下结果 ["dogid":"1","latitude":"15.435786","longitude":"-21.318447","dogid":"1","latitude":"14.00000","longitude":" -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];
【问题讨论】:
这与 MapKit 无关。arrayWithContentsOfFile
方法不会将包含 JSON 的字符串转换为数组(它假定您传递给它的字符串包含 文件路径(包含带有数组的 plist)。因为您的字符串不是有效的文件路径,数组为空。
相反,您想使用NSJSONSerialization
。见***.com/questions/8356842/…、***.com/questions/20399087/…等。
@Anna 谢谢,解决了
【参考方案1】:
您似乎正在尝试将 api 响应保存到数组。
Api 总是返回 NSString 的 json 字符串。
您需要转换解码 json 字符串。
你的情况
NSString *str=[NSString stringWithContentsOfURL:myURL encoding:NSUTF8StringEncoding error:&error];
你需要用 [NSJSONSerialization JSONObjectWithData:)#> options: error:)#>] 解码 str正确的字典数组。
希望对你有帮助
【讨论】:
以上是关于尝试从数组中的值中删除基于 MKMap 的引脚的主要内容,如果未能解决你的问题,请参考以下文章