Objective c 如何在iOS中使用给定的Lat/Long生成地图缩略图?

Objective c 如何在iOS中使用给定的Lat/Long生成地图缩略图?,objective-c,mkmapview,thumbnails,Objective C,Mkmapview,Thumbnails,我正在开发一个聊天应用程序,我将向另一个用户发送地图。 下面是我生成地图缩略图的代码。有没有办法在Objective-C中生成地图缩略图 生成静态地图缩略图的代码: NSString *staticMapUrl = [NSString stringWithFormat:@"http://maps.google.com/maps/api/staticmap?markers=color:blue|%@,%@&%@&sensor=true",_lat, _longi,@"zoom=13

我正在开发一个聊天应用程序,我将向另一个用户发送地图。 下面是我生成地图缩略图的代码。有没有办法在Objective-C中生成地图缩略图

生成静态地图缩略图的代码:

NSString *staticMapUrl = [NSString stringWithFormat:@"http://maps.google.com/maps/api/staticmap?markers=color:blue|%@,%@&%@&sensor=true",_lat, _longi,@"zoom=13&size=%dx%d"];
NSURL *mapUrl = [NSURL URLWithString:[staticMapUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
UIImage *Mapimage = [UIImage imageWithData: [NSData dataWithContentsOfURL:mapUrl]];
在文档目录中保存缩略图:

NSString *datapathMap=[Locations stringByAppendingPathComponent:[NSString stringWithFormat:@"Sm_%@_lc_%@.jpg",userid,dateString1]];
NSData *urlData = [NSData dataWithContentsOfURL:mapUrl];
datapathMap = [datapathMap stringByStandardizingPath];
[urlData writeToFile:datapathMap atomically:YES];
将缩略图数据发送到气泡以显示缩略图:

NSBubbleData *MapSendBubble = [NSBubbleData dataWithImage:mapImage date:[NSDate date] type:BubbleTypeMine];
MapSendBubble.avatar = [UIImage imageNamed:@"avatar1.png"];
[bubbleData addObject:MapSendBubble];
[_bubbleTable reloadData];
发送地图:

NSDate *today=[NSDate date];
NSDateFormatter *dateFormat1 = [[NSDateFormatter alloc] init];
[dateFormat1 setDateFormat:@"YYYYMMddhhmmss"];
NSString *dateString1=[dateFormat1 stringFromDate:today];

NSString *userid= @"mc1";     NSString *latlong=[NSString stringWithFormat:@"%@%@",[_lat substringToIndex:2],[_longi substringToIndex:2]];
[map setTag:[[NSString stringWithFormat:@"%@",latlong] integerValue]];

NSString *longlat=[NSString stringWithFormat:@"%@,%@",_longi,_lat];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"dd-MMM-yy HH:mm:ss"];
NSString *date=[dateFormat stringFromDate:[NSDate date]];

//Find a cache directory. You could consider using documents dir instead  (depends on the data you are fetching)
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [paths  objectAtIndex:0];

NSError *error;
NSString *MainFolder = [path stringByAppendingPathComponent:[NSString stringWithFormat:@"/SmoothChat"]];
NSString *Locations=[MainFolder stringByAppendingPathComponent:[NSString stringWithFormat:@"/Locations"]];
if (![[NSFileManager defaultManager] fileExistsAtPath:MainFolder])
{
    [[NSFileManager defaultManager] createDirectoryAtPath:MainFolder withIntermediateDirectories:NO attributes:nil error:&error];
}
if (![[NSFileManager defaultManager] fileExistsAtPath:Locations])
{
    [[NSFileManager defaultManager] createDirectoryAtPath:Locations withIntermediateDirectories:NO attributes:nil error:&error];
}

NSString *staticMapUrl = [NSString stringWithFormat:@"http://maps.google.com/maps/api/staticmap?markers=color:red|%@,%@&%@&sensor=true",_lat,_longi,@"zoom=15&size=300x180"];
NSURL *mapUrl = [NSURL URLWithString:[staticMapUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

UIImage *Mapimage = [UIImage imageWithData: [NSData dataWithContentsOfURL:mapUrl]];

NSString *datapathMap=[Locations stringByAppendingPathComponent:[NSString stringWithFormat:@"Sm_%@_lc_%@.jpg",userid,dateString1]];
NSData *urlData = [NSData dataWithContentsOfURL:mapUrl];
datapathMap = [datapathMap stringByStandardizingPath];
[urlData writeToFile:datapathMap atomically:YES];


//  NSString *uuid1 = [[NSUUID UUID] UUIDString];
//    [self sendXMPPMessage:1 :[NSString stringWithFormat:@"lc%@",value] :[NSString stringWithFormat:@"oi_%@_lc_%@.jpg",userid,dateString1] :@"" :jsonstring :[NSString stringWithFormat:@"%@",longlat] :_user :@"" :@"" :@"" :[[NSUserDefaults standardUserDefaults] stringForKey:@"current_chat"] :@"" :@"" :_senderType :[self currentDateTme] :0];

NSBubbleData *photoBubble11 = [NSBubbleData dataWithImage:staticMapUrl date:[NSDate date] type:BubbleTypeMine];
photoBubble11.avatar = [UIImage imageNamed:@"avatar1.png"];

[bubbleData addObject:photoBubble11];
[_bubbleTable reloadData];
[self goToBottom];

[map setHidden:YES];
[blurView setHidden:YES];
[_NewView setHidden:YES];

[map removeAnnotation:point];
currentLocation=nil;
[locationManager stopUpdatingLocation];

嗨,阿维纳什,欢迎来到。你到底面临什么问题?如果您已经有了生成地图缩略图的代码,为什么要请求生成地图缩略图的代码?您是否看到错误消息?或者你缺少一段代码?你能澄清一下吗?谢谢。mapUrl未转换为UIImage。请提供您的邮件将向您发送完整的详细信息。错误消息/***由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'-[\u NSCFString size]:未识别的选择器已发送到实例0x6000001A550'Hi Avinash,我建议您阅读。