地图缩放时,别针上的弹出框不移动

Posted

技术标签:

【中文标题】地图缩放时,别针上的弹出框不移动【英文标题】:Popover on pin is not moving when map zooms 【发布时间】:2014-02-28 06:58:54 【问题描述】:

单击图钉(注释)时显示弹出视图,它显示正常,之后当我放大或缩小地图时,弹出视图不会根据地图缩放移动到。所以我得到了附件图像中的问题。 如何根据地图上受人尊敬的图钉移动弹出窗口(何时缩放地图)?

任何建议都非常有帮助。

-(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view


    NSString *strTitle = [NSString stringWithFormat:@"%@",[view.annotation title]];
    NSMutableDictionary *dict;
    NSMutableArray *temp = annotationArray;
    for (int i = 0; i<[temp count]; i++)
    
        dict = (NSMutableDictionary*)[temp objectAtIndex:i];
        NSString *strAddress = [NSString stringWithFormat:@"%@",[dict valueForKey:@"name"]];
        if([strAddress isEqualToString:strTitle]) 

            [mapView deselectAnnotation:view.annotation animated:YES];

            detailsViewController = [[PopOverViewController alloc] initWithNibName:@"PopOverViewController" bundle:nil];
//            [viewsPassage addObject:view];

//            NSOrderedSet *orderedSet = [[NSOrderedSet alloc] initWithArray:viewsPassage];
//            viewsPassage = [[NSMutableArray alloc] initWithArray:[orderedSet array]];
            if ([viewsPassage containsObject:view]) 
                NSLog(@"present");
                [self.poc dismissPopoverAnimated:YES];
            

            self.poc = [[UIPopoverController alloc] initWithContentViewController:detailsViewController];
            self.poc.contentViewController.view.alpha = 0;
            [viewsPassage addObject:userMapView];
            [self.poc setPassthroughViews:viewsPassage];
            [detailsViewController.textLabel setText:strAddress];
            //size as needed
            self.poc.popoverContentSize = CGSizeMake(320, 400);
            //show the popover next to the annotation view (pin)
            CGRect popOverFrame = view.bounds;
            popOverFrame.size.width = 14;
            popOverFrame.size.height = 14;

            [self.poc presentPopoverFromRect:popOverFrame inView:view
               permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
            break;
        
    


提前致谢

【问题讨论】:

请在description中说明问题 我已经更新了你可以检查一下吗 你在使用annotationView的标注吗? annotationView.canShowCallouts = YES in viewForAnnotation? 是的,它已经给出,但没有效果 【参考方案1】:

与所有视图一样,您的弹出框是相对于视图坐标定位的,但您希望它像根据地图坐标定位一样移动。这不会自动发生。相反,您需要在地图区域更改时移动弹出框。地图视图委托协议中有一些方法可以让您的地图委托在区域更改时采取行动;看看-mapView:regionDidChangeAnimated:

作为替代方案,请考虑弹出框可能不是该工作的正确工具,custom callout 可能是更好的解决方案。

【讨论】:

对。但是,链接的答案基本上是 OP 已经在做的事情。对于随注释自动移动的“真实”自定义标注,标注视图必须添加到注释视图本身(尽管这有其自身的问题)。当您回答时移动地图时,最好在委托方法中重新呈现弹出框。 @Anna:你在 iPad 模拟器/设备中看到过苹果地图

以上是关于地图缩放时,别针上的弹出框不移动的主要内容,如果未能解决你的问题,请参考以下文章

appium 问题四的解决办法(模拟器打开的页面弹出框与脚本打开页面的弹出框不一致)

滚动 MKMapView 时淡出弹出框

当通过 innerHTML 添加 html 内容时,弹出框未显示

移动时附加到 UICollectionView 中的单元格的弹出框被称为此集合视图的 ReloadData

加载 Ajax 时,Bootstrap 弹出框不工作

UINavigationController 作为 iPhone 上的弹出框?