繁体   English   中英

向MKMapView添加未知数量的注释

[英]Adding an unknown number of annotations to MKMapView

因此,我正在使用该地图为联系人中具有地址的每个人添加点,而且我很难确定如何针对未知数量的联系人进行设置。 现在,按照我设置的方式,只为列表中的最后一个联系人添加了一个图钉。 这是一些代码:address是从addressProperty设置的字符串。

if(addressProperty != nil)
       {
           [location geocodeAddressString:address completionHandler:^(NSArray *placemarks, NSError *error) {
            NSMutableArray *array = [[NSMutableArray alloc]init];

            for(int a = 0; a < [placemarks count]; a++)
            {

               self.placeMarkData = [placemarks objectAtIndex:a];
                [point setCoordinate: self.placeMarkData.location.coordinate];

                [array addObject:point];
                pin.animatesDrop = YES;
                point.title = address;

                [map addAnnotations:array];
            }
                      }];
    }

因此,当我运行该应用程序时,我可以看到在每个位置都设置了图钉,并移至下一个位置,直到它在列表中的最后一个位置结束为止。 如何为每个点添加一个点? 我敢肯定这是一个简单的解决方案,但它现在使我难以理解。

所有这些都必须有一个循环,才能遍历所有联系人。 location是CLGeocoder吗? 您不应该在同一个地址解析器上设置两个geocodeAddressString函数,而是需要为您所做的每个地址解析初始化一个新的函数(除非您确定之前的异步地理编码已经完成)。

其他四个问题:

  • point变量每次都相同。 当您更改坐标时,该点将显示在地图上的不同位置,但是它是相同的,因此您永远不会在地图上看到更多的东西。
  • 因为它是异步运行的,所以您应该在块外写入和读取变量。 现在,两个地理编码可以同时获得响应,其中一个可以设置self.placeMarkData,而另一个可以从中读取location.coordinate。
  • pin是什么?
  • 在填满array之前,请不要在array中添加array 如果您希望尽快在屏幕上显示这些点,则将它们分别添加到地图中。 添加整个数组,然后向该数组添加其他内容,然后再次添加整个数组是浪费的。

似乎是代码中的一个简单错误。 您可以尝试移动[map addAnnotations:array]; for循环之外的一行?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM