Hack-Crack 信息安全 【Mars Information Serurity Institute】
站点说明

Scan the QRcode to download

扫描上方二维码下载我的最新应用,Findu(支持iOS Android)关注自己所关注的人,让一切都变的无所遁形,再也不怕搭到黑车啦!

【Findu Today】

本站所破解的程序仅限于分析研究只用,不可用于非法用途,如果喜欢该软件请购买正版。由于程序所造成的损失本人概不负责。

【订阅本站文章】

联系方式:

博客:http://www.h4ck.org.cn

Blog:http://h4ck.ws

微博:http://www.obaby.org.cn

Codes:http://code.h4ck.org.cn

Twitter:http://twitter.com/#!/ob4by

QQ:382291381

danteng link
分类目录/搜索
版权信息:
Nginx Ubuntu php mysql [Valid RSS] Valid CSS!

hacker emblem

知识共享许可协议
火星信息安全研究院 by
obaby is licensed under a Creative Commons 署名-非商业性使用-相同方式共享 2.5 中国大陆 License.
基于www.h4ck.org.cn上的作品创作。

Android 检测坐标是否在国内

根据ZCChinaLocation 来实现的相关代码,其实就是这个oc代码的java版本,最近用到了这么个东西所以就给实现了一下。由于我是一个非专业Java程序员,因而代码写的比较糟糕,有什么不周到的地方还希望大家积极补充。

实现原理:

基本思路是:把整个行政区域划分为几个小的矩形,然后再排除掉一些矩形区域。只要一个点在限定的区域内,并且不在排除的区域内,则判定成功,否则失败。下图中蓝色区域为限定区域,红色区域为排除区域。这种快速判定的方法是从Nokia map中挖掘出来的。

优点:快速,相对准确;

缺点:边界误差较大

iOS上除了这个办法,还有个更为精确的办法,但是相对来说速度要差一些,可以参考这个链接CLGeocoder

基本原理:

CLGeocoder geoCoder = [[CLGeocoder alloc] init]; [geoCoder reverseGeocodeLocation:location completionHandler:^(NSArray<CLPlacemark > * _Nullable placemarks, NSError * _Nullable error) { }];

调用这个方法我是用ISOcountryCode这个属性来判断的,这个值港澳台都有各自对应的值,具体的code可以去这个网站上去查 Country Codes List 此外还有一个问题就是这个方法有时候会有一定的延迟,还有就是苹果也建议不要连续调用这个方法。

其实个人感觉这个简单粗暴的算法也基本够用了,因为这些周边的地区大多数都是人烟稀少,即使部分数据存在误差也无伤大雅。比较郁闷的是Android上并没有提供类似iOS上的方法。所以目前我的代码中也是使用了这个简单粗暴的代码来实现的。当然,如果要做的更加详细可以继续细分这些矩形区域。欢迎大家补充和完善这个代码。

Findu (我的一个好友位置共享应用)

欢迎大家试用我的好友位置共享应用: 官网: 中文:http://www.findu.co 英文:http://www.findu.today

 

代码地址:https://bitbucket.org/snippets/obaby/pn9Kj/android-gps

《Android 检测坐标是否在国内》有 2 条评论

  • 如果在国外,能检测得到么?

    • 只要百度地图能够覆盖的区域,理论上都可以正常使用。我没有去过国外,也没测试过国外的效果~ drinks

发表评论

电子邮件地址不会被公开。 必填项已用*标注