Sha*_*ski 25 google-maps-markers google-maps-sdk-ios gmsmapview
我要回来了 UIImageView in - (UIView *)mapView:(GMSMapView *)mapView markerInfoWindow:(GMSMarker *)marker;
这UIImageView将通过URL动态加载图像SDWebImage.
正如文档中描述的标记信息窗口:
注意:每次在地图上显示信息窗口时,信息窗口都会呈现为图像.这意味着在其属性处于活动状态时对其属性的任何更改都不会立即可见.信息窗口的内容将在下次显示时刷新.
关键是在下载图像后,信息窗口不刷新并继续显示占位符图像,直到用户隐藏然后再显示它.
所以我需要强制刷新markerInfoWindow下载的图像块中的内容.
Enr*_*tyo 21
在GoogleMaps iOS SDK 1.13.0及更高版本中,他们添加了此功能.要启用此功能,只需将tracksInfoWindowChanges属性设置GMSMarker为YES.
例:
- (UIView *)mapView:(GMSMapView *)mapView markerInfoWindow:(GMSMarker *)marker {
marker.tracksInfoWindowChanges = YES;
MyInfoWindow *infoWindow = [[MyInfoWindow alloc] init];
[infoWindow.imageView sd_setImageWithURL:imageUrl];
return infoWindow;
}
Run Code Online (Sandbox Code Playgroud)
资源:
这是我使用下面的解决方法修复问题的方法:
UIImage *img = [[SDWebImageManager sharedManager] imageWithURL:[NSURL URLWithString:Img_URL]]; //Img_URL is NSString of your image URL
if (img) { //If image is previously downloaded set it and we're done.
[imageView setImage:img];
}else{
[imageView setImageWithURL:[NSURL URLWithString:Img_URL] placeholderImage:[UIImage imageNamed:@"defaultPin"] success:^(UIImage *image, BOOL cached) {
if (!marker.snippet || !cached) {
[marker setSnippet:@""]; //Set a flag to prevent an infinite loop
if (mapView.selectedMarker == marker) { //Only set if the selected marker equals to the downloaded marker
[mpVu setSelectedMarker:marker];
}
}
} failure:^(NSError *error) {
}];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7060 次 |
| 最近记录: |