作者說(shuō):
之前有篇文章被編輯提示說(shuō)有代碼的話還是用Markdown好掘猿,所以這篇文章開(kāi)始改變模式。??
這次這個(gè)問(wèn)題是老大去日本跑了一次馬拉松捧挺,然后回國(guó)后坐標(biāo)用天朝的火星坐標(biāo)一轉(zhuǎn)辛辨,在地圖上看起來(lái)就好像在大海里跑了,找原因發(fā)現(xiàn)是因?yàn)橹芭袛辔恢玫姆椒ㄌ植诹丝卟讶毡舅阍趪?guó)內(nèi)了。那么好了逗堵,需求又來(lái)了:判斷當(dāng)前坐標(biāo)點(diǎn)是否在國(guó)內(nèi)秉氧。
首先奉上最原始粗糙的這個(gè)判定方法。
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;
}
不難發(fā)現(xiàn)蜒秤,其實(shí)就是切了四個(gè)邊汁咏,然后畫了一個(gè)大方塊亚斋,默認(rèn)這個(gè)方塊里面就都是大天朝的啦。
接下來(lái)我就去搜索攘滩,其實(shí)這個(gè)時(shí)候就知道api文檔里面本身就有一個(gè)反編譯坐標(biāo)的接口帅刊,可是當(dāng)時(shí)不知道怎么想的就是不想用,然后我就搜到了這個(gè):(iOS)判斷GPS坐標(biāo)是否在中國(guó),這個(gè)可以說(shuō)是大方塊的加強(qiáng)版啊漂问,有興趣的同學(xué)可以看看赖瞒,主要就是這個(gè)方法:
BOOL ischina = [[ZCChinaLocation shared] isInsideChina: (CLLocationCoordinate2D){44.042156,132.759178}];
,其實(shí)這個(gè)方法就已經(jīng)把日本給成功排除出去了蚤假,可是老大來(lái)了一句栏饮,那我在邊境線往外一點(diǎn)點(diǎn)的地方跑怎么算,好吧磷仰,我接著去查袍嬉,最后我還是用蘋果的api了,
CLGeocoder *geoCoder = [[CLGeocoder alloc] init];
[geoCoder reverseGeocodeLocation:location completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
}];
調(diào)用這個(gè)方法我是用ISOcountryCode這個(gè)屬性來(lái)判斷的芒划,一開(kāi)始還遇到了個(gè)坑冬竟,這個(gè)值竟然港澳臺(tái)都有各自對(duì)應(yīng)的值,我的天民逼,差點(diǎn)一不小心把國(guó)家給分裂出去泵殴,具體的code可以去這個(gè)網(wǎng)站上去查 Country Codes List 此外還有一個(gè)問(wèn)題就是這個(gè)方法有時(shí)候會(huì)有一定的延遲,還有就是蘋果也建議不要連續(xù)調(diào)用這個(gè)方法拼苍。
蘋果原文:
最后這個(gè)方法我封了個(gè)小demo笑诅,其實(shí)就是個(gè)類別啦。CLGeocoder,不過(guò)我沒(méi)把港澳臺(tái)封進(jìn)去疮鲫,不要做伸手黨啦吆你,至少自己改動(dòng)一下。
最后的最后俊犯,感謝簡(jiǎn)書上的各位妇多,你們的喜歡、評(píng)論燕侠、關(guān)注者祖,讓我越發(fā)的喜歡把工作中遇到的各種問(wèn)題寫出來(lái)和大家分享。
ps: 這個(gè)Markdowm的代碼引用搞得我好糾結(jié)啊 為什么有時(shí)好用绢彤,有時(shí)就不好用啊七问,搞得我要反反復(fù)復(fù)加引號(hào)去引號(hào),是不是我的操作方式不對(duì)茫舶,求指導(dǎo)械巡。