【问题标题】:Can we get latitude longitude without using location api or google api我们可以在不使用位置 api 或 google api 的情况下获得纬度经度吗
【发布时间】:2016-06-14 04:58:49
【问题描述】:

我想在不使用 android Location ServiceGoogle Api 的情况下获取纬度和经度。 那么有没有办法从连接的wifi路由器获取纬度和经度?

【问题讨论】:

    标签: android location wifi latitude-longitude


    【解决方案1】:

    首先使用以下代码获取IP地址:

     public String getIpAddr() {
       WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
       WifiInfo wifiInfo = wifiManager.getConnectionInfo();
       int ip = wifiInfo.getIpAddress();
    
       String ipString = String.format("%d.%d.%d.%d", (ip & 0xff), (ip >> 8 & 0xff), (ip >> 16 & 0xff), (ip >> 24 & 0xff));
       return ipString;
    }
    

    请注意:您需要在您的 AndroidManifest.xml 中添加 android.permission.INTERNET 和 android.permission.ACCESS_WIFI_STATE 以访问代码。

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    

    在此之后使用一些 3rd 方网络服务,通过提供 IP 为您提供经度和纬度。示例:http://www.geoipservice.asmx/GetGeoIP?IPAddress=(将 IP 作为字符串传递)

    希望你得到你的答案!!!

    【讨论】:

    • 感谢您的回复。让我检查一下
    • 尝试使用上述网络服务java.net.UnknownHostException: Unable to resolve host "www.geoipservice.asmx": No address associated with hostname时出现以下错误
    • 试试这个网络服务ip-api.com/json/172.217.4.227 .. 使用您的 IP 而不是 Google 的 .. ;) ..
    • 谢谢。我已经尝试过上面的 web 服务,但作为响应,我得到了低于响应 {"message":"private range","query":"My IP Address","status":"fail"} 的响应。private range 是什么意思
    • 看看这对我有用...link
    【解决方案2】:

    试试这个代码

    code

    这将为您提供经度和纬度

    【讨论】:

    • 正如我在问题中提到的那样,不使用android Location Service
    • @Android 我想你不能没有Location Service
    猜你喜欢
    • 2012-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-19
    • 1970-01-01
    • 2011-04-06
    • 2012-01-15
    • 1970-01-01
    相关资源
    最近更新 更多