首页 > 学院 > 开发设计 > 正文

集成谷歌地图遇到的那些坑及解决办法

2019-11-08 00:04:49
字体:
来源:转载
供稿:网友

集成谷歌地图遇到的那些坑及解决办法,写在2017年春

前言 w偶勒个去csdn既然也有markdown的速写方式了,我今天知道,安慰一下自己:任何后知后觉,回头来看,感觉都是也是萌萌哒

有哪些坑

1.下载sdk时间过长 中文官网里说明从github上pod ‘GoogleMaps’一下,就ok了,是就这么简单,几百兆的GoogleMaps模块,此过程在国内需要耗费很长时间,你可以去打个篮球再回来看看有没有下载好 2.中文网站sdk使用方法更新不及时 擦擦擦,这个地方如果不熟悉的话很耗费时间啊,至少要花费您半天时间来集成。网站里说明从github上pod ‘GoogleMaps’一下,事实上在使用的时候你会发现少了很多类

3.位置偏移 天朝,咱!你还没习惯吗,没习惯不要紧,慢慢就习惯了

解决办法

1.下载sdk时间过长 哥们我下载好了你可以向我要啊,哈哈哈,我这么乐于助人 2.中文网站sdk使用方法更新不及时 说道这个真相喷google,一想到自己素质这么高,还是忍住了,<-_<-。 事实上Google Map SDK在2.1.1的时候将sdk模块化了,还需要导入GooglePlaces模块,在做到地址选择器的时候发现少了一个placepicker类,找啊找,没找到任何影子,难道我下载的sdk又问题吗?NO,不要怀疑自己更不要怀疑人生,但通常时候我们都会情不自禁的怀疑。事实上google map sdk模块化的很彻底,竟然将placepicker单独一个模块。贴上代码: source ‘https://github.com/CocoaPods/Specs.git’ platform :ios, ‘8.1’ pod ‘GoogleMaps’ pod ‘GooglePlaces’, ‘~> 2.1.1’ pod ‘GooglePlacePicker’, ‘~> 2.1.1’ 3.位置偏移 google map sdk在国内显示位置有偏差,具体为什么有偏差我就不阐述了,实际上连我也没搞懂,为什么要设置这道没有意义坎。千找万找还是找到了解决办法。找到了一段java代码,修改成了我需要的OBJECTIVE-C代码,从此我大OC界不要再去求人了,经亲测,中!!,贴代码:

@interface CorrentLocationTool : NSObject+ (CLLocationCoordinate2D)correntLocation:(CLLocationCoordinate2D)cor;@end#import "CorrentLocationTool.h"@implementation CorrentLocationToolstatic double pi = 3.14159265358979324;static double a = 6378245.0;static double ee = 0.00669342162296594323;+ (CLLocationCoordinate2D)correntLocation:(CLLocationCoordinate2D)cor{ double wgLat = cor.latitude; double wgLon = cor.longitude; CLLocationCoordinate2D coordinate; if (outOfChina(wgLat, wgLon)) { coordinate.latitude = wgLat; coordinate.longitude = wgLon; return coordinate; } double dLat = transformLat(wgLon - 105.0, wgLat - 35.0); double dLon = transformLon(wgLon - 105.0, wgLat - 35.0); double radLat = wgLat / 180.0 * pi; double magic = sin(radLat); magic = 1 - ee * magic * magic; double sqrtMagic = sqrt(magic); dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi); dLon = (dLon * 180.0) / (a / sqrtMagic * cos(radLat) * pi); coordinate.latitude = wgLat + dLat; coordinate.longitude = wgLon + dLon; return coordinate;}static bool outOfChina(double lat, double lon) { if (lon < 72.004 || lon > 137.8347) return true; if (lat < 0.8293 || lat > 55.8271) return true; return false;}static double transformLat(double x, double y) { double ret = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * sqrt(fabs(x)); ret += (20.0 * sin(6.0 * x * pi) + 20.0 * sin(2.0 * x * pi)) * 2.0 / 3.0; ret += (20.0 * sin(y * pi) + 40.0 * sin(y / 3.0 * pi)) * 2.0 / 3.0; ret += (160.0 * sin(y / 12.0 * pi) + 320 * sin(y * pi / 30.0)) * 2.0 / 3.0; return ret;}static double transformLon(double x, double y) { double ret = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * sqrt(fabs(x)); ret += (20.0 * sin(6.0 * x * pi) + 20.0 * sin(2.0 * x * pi)) * 2.0 / 3.0; ret += (20.0 * sin(x * pi) + 40.0 * sin(x / 3.0 * pi)) * 2.0 / 3.0; ret += (150.0 * sin(x / 12.0 * pi) + 300.0 * sin(x / 30.0 * pi)) * 2.0 / 3.0; return ret;}@end注意事项 (1)集成2.1.1版的GoogleMaps SDK 如果您需要地址,需要注册两个服务 [GMSServices PRovideAPIKey:@"yours key"]; [GMSPlacesClient provideAPIKey:@"yours key"];(2)国内访问被墙,目前正准备处理这个问题,处理好了,在微博上告诉大家

ps:第一次使用markdown在网络上写文章,格式不太好好,凑合着看呀


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表