iphone开发把地址转换为地图经纬度 已解决不支持中文bug

本文介绍如何使用Objective-C和Google Maps API来获取指定地址的地理坐标,并展示了一个具体的示例,包括地址编码转换的重要性及如何正确解析返回的坐标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    NSString *address = @"福建省福州 鼓楼区 温泉支路";
    NSString *output = @"csv";
    NSString *key = @"你自己的google map key";
    NSString *urlStr = [NSString stringWithFormat:@"http://maps.google.com/maps/geo?q=%@&output=%@&key=%@", [address stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding], output, key]; //address的编码转换是支持中文的关键,如果不转换则获取的坐标为0,0。
    
    NSURL *url = [NSURL URLWithString:urlStr];
    

    NSString *retstr = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
    
    NSArray *resultArray = [retstr componentsSeparatedByString:@","];
    
    double latitude3 = [[resultArray objectAtIndex:2] doubleValue];
    double longitude3 = [[resultArray objectAtIndex:3] doubleValue];
    CLLocationCoordinate2D userLocation3;
    userLocation3.latitude = latitude3;
    userLocation3.longitude = longitude3;
    MapAnnotation *anoo3 = [[MapAnnotation alloc] initWitchCoordinate:userLocation3];
    anoo3.title = @"福州";
    anoo3.subtitle = @"详细";
    [myMapView addAnnotation:anoo3];//
    [anoo3 release];

    NSLog(@"纬度:%lf 经度: %lf", latitude3, longitude3);

记录几点:

1,google map key申请的时候ip地址可以填:http://127.0.0.1。当然你需要一个goole账号。

2,中文NSSring编码要转换一下,我就是栽这里了,网上所有的例子都没有转换,而且用英文去测试,当然不会发现问题,相当坑爹。

3,和这个例子没有关系的,玩地图注解的时候,要注意经纬度随便输入可能是无效的,那样注解不会生效,即使添加进去了也不会成功调用代理函数,更不会显示view。

4,resultArray里面的值和output参数有关,详细的解释http://www.ibm.com/developerworks/cn/web/wa-chinesetrans/index.html这个文章有说。


评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值