gpt4 book ai didi

ios - GoogleMaps iOS SDK 1.5 版无响应

转载 作者:行者123 更新时间:2023-12-01 16:46:24 24 4
gpt4 key购买 nike

我在我的应用程序中使用最新的 GoogleMaps iOS SDK,在最新的 iOS 更新 7.0.3 之后,它在第一次触摸后开始变得无响应。让我对此进行扩展。第一次触摸 map 后, map 变得无响应。起初,您可以捏缩放、拖动、滑动和其他所有操作,但在第一次触摸之后,它就不再起作用了。这在 Apple 更新他们的 iOS 之后开始发生。如果我使用 iOS6 模拟器,即使在第一次触摸之后,我也可以完成所有手势。我不知道这是因为 iOS 更新还是我的代码有问题。如果有人有任何建议或经历过类似的事情可以指导我,那将不胜感激。提前致谢。

按照此处的网站说明进行操作:( https://developers.google.com/maps/documentation/ios/start#adding_the_google_maps_sdk_for_ios_to_your_project )

它适用于iOS6,之前也适用于iOS7。
MapsViewController.m

#import "MapsViewController.h"
#import <GoogleMaps/GoogleMaps.h>
@interface MapsViewController ()
@end
@implementation MapsViewController

- (void)viewDidLoad
{
[super viewDidLoad];
self.storeNamesArray = [[NSMutableArray alloc] init];
self.storePricesArray = [[NSMutableArray alloc] init];
self.storeLatitudeArray = [[NSMutableArray alloc] init];
self.storeLongitudeArray = [[NSMutableArray alloc] init];
self.priceTypeArray = [[NSMutableArray alloc] init];

dispatch_async(dispatch_get_main_queue(), ^{ NSData *data =
[NSData dataWithContentsOfURL:[NSURL URLWithString:
[NSString stringWithFormat: @"http://www.someurl.com/mobile-api"]]];
[self performSelectorOnMainThread:@selector(fetchData:) withObject:data
waitUntilDone:YES]; });
}

-(void)fetchData:(NSData *)responseData
{
if (responseData)
{
NSError *error;
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];
NSDictionary *stores =[json objectForKey:@"stores"];
for(NSDictionary *location in stores)
{
[self.storeNamesArray addObject:[location objectForKey:@"name"]];
[self.storePricesArray addObject:[location objectForKey:@"price"]];
[self.storeLatitudeArray addObject:[location objectForKey:@"latitude"]];
[self.storeLongitudeArray addObject:[location objectForKey:@"longitude"]];
[self.priceTypeArray addObject:[location objectForKey:@"price_type"]];
}
}
double lat = 0.0;
double lon = 0.0;
GMSCameraPosition *camera;
if(self.currentLocationArray.count !=0)
{
lat = [self.currentLocationArray[0] doubleValue];
lon = [self.currentLocationArray[1] doubleValue];
camera = [GMSCameraPosition cameraWithLatitude:lat longitude:lon zoom:12];
}
else
{
lat = [self.storeLatitudeArray[0] doubleValue];
lon = [self.storeLongitudeArray[0] doubleValue];
camera = [GMSCameraPosition cameraWithLatitude:lat longitude:lon zoom:9];
}
GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];
for(int i=0; i<self.storeNamesArray.count; i++)
{
GMSMarker *marker = [[GMSMarker alloc] init];
marker.title = self.storeNamesArray[i];
marker.snippet = [NSString stringWithFormat:@"%@ $%@", self.priceTypeArray[i], self.storePricesArray[i]];
marker.position = CLLocationCoordinate2DMake([self.storeLatitudeArray[i] doubleValue], [self.storeLongitudeArray[i] doubleValue]);
marker.map = mapView;
}
if(self.currentLocationArray.count !=0)
{
GMSMarker *currentMarker = [[GMSMarker alloc] init];
currentMarker.title = @"Current Location";
currentMarker.snippet = @"You are here";
currentMarker.position = CLLocationCoordinate2DMake(lat, lon);
currentMarker.map = mapView;
currentMarker.icon = [UIImage imageNamed:@"temp_userLocation"];
mapView.selectedMarker = currentMarker;
}
CGRect newFrame = self.view.bounds;
newFrame.size.height = frame.size.height / 2;
mapView.frame = newFrame;
mapView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleBottomMargin;
mapView.delegate = self;
[self.view addSubview:mapView];
}

最佳答案

我已经在 Google Maps SDK for iOS bug 上发布了我修改后的 Chris 代码版本。 .

该解决方案涉及对 Chris 代码的两项更改:

  • 将 Google Map 实例迁移到 viewDidLoad ,
  • 将网络流量从主 (UI) 线程推送到后台线程。
  • 关于ios - GoogleMaps iOS SDK 1.5 版无响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19672142/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com