0

介绍 :

我做了一个应用程序,用户可以在其中搜索地图中的特定位置。我有一个 mapView 和一个包含 UITableView 的列表视图,其中我显示了从谷歌 API 解析的地点(搜索结果)的名称。

我的问题:

这里我的问题是当我选择一个特定的表格单元格时,对应于名称的地方应该集中在 mapView 及其注释和注释应该自动选择。因此我制作了这段代码。当我进行第一次选择以及进行新搜索时,我也可以工作,但从第二次选择开始,它永远不会工作。(IE)

1.注释有效

2.缩放工作

3.但从第二个选择“ selectAnnotation :annotation animated:YES ”不起作用。请有人帮助解决这个问题。

提前致谢。

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
       [tableView reloadData];
       [mapView removeAnnotation:annotation];

        annotation = [[MKPointAnnotation alloc]init];
        NSDictionary *searchResults1 = [LocationDetails objectAtIndex:indexPath.row];
        annotation.title = [searchResults1  valueForKey:@"name"];
        annotation.subtitle=[searchResults1 valueForKey:@"formatted_address"];
        annotation.coordinate= CLLocationCoordinate2DMake([[searchResults1 valueForKey:@"lat"] doubleValue], [[searchResults1 valueForKey:@"lng"] doubleValue]);

        [mapView selectAnnotation:annotation animated:YES];
        [mapView addAnnotation:annotation];


     [mapView setRegion: MKCoordinateRegionMakeWithDistance(annotation.coordinate, 1000, 1000)  animated:YES];
     [tableView removeFromSuperview];
}
4

1 回答 1

1

在你的 searchBarSearchButtonClicked: 中添加这段代码,如下,

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBarr
{

for(annotation in mapView.annotations)
{
    [mapView selectAnnotation:annotation animated:NO];

}
searchData = searchBarr.text;

您的错误是您没有为selectAnnotation:animated:to设置动画值NO。因此它显示了最后一个注释。哪个是活跃的。

于 2013-11-04T07:19:53.887 回答