ios - Google Maps for ios,在 Objective C 中创建标记的 NSDictionary

标签 ios objective-c google-maps nsdictionary

在我的应用程序中,我创建了一个名为 StoreInfo 的对象数组。 map 上的标记是使用 StoreInfo 对象的字段生成的。
稍后我想使用存储在 StoreInfo 字段中的附加数据生成一个信息窗口。
因此我需要在标记和信息对象之间创建一个字典。

    storeMarkerMap = [[NSDictionary alloc] init];

for(StoreInfo *info in storesArray){

            CLLocationCoordinate2D pos = CLLocationCoordinate2DMake(info.lat,info.lng);
            GMSMarker *marker = [GMSMarker markerWithPosition:pos];
            marker.title = info.name;
            marker.snippet = info.type;
            marker.icon =[self iconSelector: info];
            marker.map = mapView_;
            [storeMarkerMap setObject:info forKey:marker];
        }

...
- (UIView *)mapView:(GMSMapView *)mapView markerInfoWindow:(GMSMarker *)marker {
    CustomInfoWindow *infowindow =  [[[NSBundle mainBundle] loadNibNamed:@"InfoWindow" owner:self options:nil] objectAtIndex:0];
    StoreInfo *info = [storeMarkerMap objectForKey:marker];


    infowindow.title.text = info.name;
    infowindow.description.text = info.address;
    infowindow.phone.text=info.phone;
    return infowindow;
}

这不起作用,因为标记对象不遵循以下要求:

the Keys must implement the hash and isEqual

最佳答案

最简单的 :将商店用作标记的 userData :)

==> 不需要弄乱额外的字典(恕我直言,也是最干净的)

所以:

for(StoreInfo *info in storesArray){
        CLLocationCoordinate2D pos = CLLocationCoordinate2DMake(info.lat,info.lng);
        GMSMarker *marker = [GMSMarker markerWithPosition:pos];
        marker.userData = @{@"store":info};
        ...
    }

...
    - (UIView *)mapView:(GMSMapView *)mapView markerInfoWindow:(GMSMarker *)marker {
        StoreInfo *info = marker.userData[@"store"];
                ...
    }

关于ios - Google Maps for ios,在 Objective C 中创建标记的 NSDictionary,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20404553/

相关文章:

ios - SwiftUI - 我如何知道 FetchedResults 何时发生变化?

ios - 在我的应用程序中多次使用相同的代码

iphone - 在 Objective-c 中迭代类成员

ios - UICollectionview 和 Image loading 导致内存不足

ios - 当 iOS 客户端发送 "unsubscribe"时,ActionCable 取消订阅回调不起作用

java - 关闭 Intent 导航谷歌并返回我的应用程序

javascript - 无法拖动/缩放/与 Google map 交互

android - 如何从谷歌地图链接中提取纬度和经度值

ios - 如何从右到左关闭模态 ViewController?

ios - 这是 IOS 中 CoreData 应用程序的良好设计吗?