【问题标题】:ios google maps performselector to show infowindowios谷歌地图performselector显示信息窗口
【发布时间】:2014-07-21 08:35:52
【问题描述】:

我不确定这是否适用于 iOS 版 Google 地图,但我正在尝试在模式视图控制器被解除时刷新标记的打开 infoWindow。现在,我只是想让 infoWindow 手动显示。我添加了一个 navigationItem 按钮并将坐标发送到选择器:

- (void) dosomething:(id)sender{
    CLLocationCoordinate2D position = CLLocationCoordinate2DMake(41.05061, 28.77244);
    GMSMarker *marker = [[GMSMarker alloc]init];
    marker.position = position;
    [self performSelector:@selector(mapView:markerInfoWindow:) withObject:mapView_ withObject:marker];
}

- (UIView *) mapView:(GMSMapView *)mapView markerInfoWindow:(GMSMarker *)marker{
    NSLog(@"%f, %f", marker.position.latitude, marker.position.longitude);
    InfoWindow *infoWindow = [[InfoWindow alloc]init];
    NSDictionary *thisMarker = [NSDictionary new];
    _thisMarker = thisMarker;
    for (NSDictionary *dic in [MainMarkers sharedInstance].mainMarkers){
        if ([[dic valueForKey:@"latitude"]isEqualToString:@(marker.position.latitude).stringValue] && [[dic valueForKey:@"longitude"]isEqualToString:@(marker.position.longitude).stringValue]) {
            _thisMarker = dic;
        }
    }
    NSLog(@"%@", _thisMarker);
    //...infoWindow setUp
    return infoWindow;
}

日志有效,我正在发送指定的坐标,但 infoWindow 没有显示。如果我点击标记,一切正常。这样可以打开infoWindow吗?

更新:

在 viewWillAppear 方法中,我尝试了这个:

- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:YES];
if (_thisMarker) {
    CLLocationCoordinate2D position = CLLocationCoordinate2DMake([[_thisMarker valueForKey:@"latitude"] floatValue], [[_thisMarker valueForKey:@"longitude"] floatValue]);
    GMSMarker *marker = [[GMSMarker alloc]init];
    marker.position = position;
    mapView_.selectedMarker = (GMSMarker*)marker;
    }
}

我将补充一点,我正在为 infoWindow 使用自定义视图。如果我添加 marker.map=mapView_; infoWindow 出现了,但它没有被重新绘制,根据数据(标记图标、标记名称、标记详细信息)重新创建......所以我仍然无法让它工作。

【问题讨论】:

    标签: ios google-maps google-maps-sdk-ios


    【解决方案1】:

    如果你已经在地图上有一个标记,你可以让地图选择它:

    self.mapView.selectedMarker = (GMSMarker*)marker;
    

    结果与用户点击标记的结果相同。

    【讨论】:

    • 我尝试了您的解决方案并更新了我的问题...仍然无法正常工作
    【解决方案2】:

    不妨试试这个……

    [self.mapView setSelectedMarker:marker];
    

    【讨论】:

    • 与 NigelG 的建议相同的结果...没有。我还没有找到一种方法来调用方法来重绘 infoWindow
    猜你喜欢
    • 2016-12-21
    • 2012-02-18
    • 1970-01-01
    • 1970-01-01
    • 2013-06-08
    • 1970-01-01
    • 2012-03-28
    • 2013-01-07
    • 2016-05-01
    相关资源
    最近更新 更多