2012-12-31 13 views
13

का उपयोग कर एंड्रॉइड में डिवाइस के स्थान का निर्धारण कैसे करें मैं एक एंड्रॉइड ऐप विकसित कर रहा हूं। मैं अपने आईपी पते का उपयोग कर डिवाइस का स्थान निर्धारित करना चाहता हूं। मैं कहाँ से प्रारम्भ करूँ? Google एपीआई पर लिंक पर्याप्त निर्णायक नहीं हैं। धन्यवाद।आईपी पते

उत्तर

5

आपको आईपी का उपयोग करके स्थान प्राप्त करने के लिए एपीआई फॉलिंग एपीआई का उपयोग करना चाहिए।

Ip2Location API

+0

दुख की बात है, इन वर्षों के बाद, कुछ भी नहीं है इस लिंक पर – SREE

2

जो प्रदान करता है आप अक्षांश और आईपी पते से देशांतर मान कई वेब सेवाओं रहे हैं,।

ऐसे ही एक api.ipinfodb.com

पूर्व के लिए

है, तो आप की तरह

http://api.ipinfodb.com/v3/ip-city/?key=<your_api_key> 
       &ip=74.125.45.100&format=json 

अनुरोध भेजकर अक्षांश और देशांतर कर सकते हैं इस json प्रारूप में डेटा वापस आती है और आप में प्रतिक्रिया प्राप्त कर सकते हैं प्रारूप = xml सेट करके एक्सएमएल। (आपको अपनी एपीआई कुंजी प्राप्त करने के लिए पंजीकरण करने की आवश्यकता है)।

या आप this और this लिंक से डेटाबेस डाउनलोड कर सकते हैं।

आप डेटासेट डाउनलोड कर सकते हैं लेकिन आपको इसे लगातार अपडेट करना होगा।

+0

काम करता है मैंने इस साइट के लिए एपीआई कुंजी प्राप्त करने का प्रयास किया है लेकिन असफल रहा है। यह मेरे स्थान के लिए भी अनुरोध करता रहता है जब भी मैंने इसे प्रदान किया हो। क्या आप अपनी कुंजी साझा करने के इच्छुक हैं? –

1

मैं this का उपयोग पाने के लिए आईपी, देश और डिवाइस

के शहर आप HTTP अनुरोध बनाने के लिए RESTCLIENT, फ़ायरफ़ॉक्स ऐड-ऑन का उपयोग कर सकते परीक्षण करने के लिए।

बस ब्राउज़र पता पट्टी में RESTCLIENT में या सिर्फ अतीत https://addons.mozilla.org/en-us/firefox/addon/restclient/ कॉपी इस URL और परीक्षण

आशा है कि यह मदद करता है!

+0

अच्छा खोज। उस लिंक का उपयोग करके बहुत सरल: http://api.hostip.info/get_json.php –

3

चेकआउट Google Maps Geolocation API

नमूना पोस्ट:

https://www.googleapis.com/geolocation/v1/geolocate?key=YOUR_API_KEY 

नमूना प्रतिक्रिया:

{ 
    "location": { 
    "lat": 51.0, 
    "lng": -0.1 
    }, 
    "accuracy": 1200.4 
} 

सीमाएँ:

मानक एपीआई के उपयोगकर्ता: प्रतिदिन प्रति सेकंड 10 क्वेरी

2,500 मुक्त प्रश्नों, प्रति उपयोगकर्ता सक्षम उच्च कोटा अनलॉक करने के लिए भुगतान के रूप में-यू-गो बिलिंग:

$ 0.50 अमरीकी डालर/1000 अतिरिक्त प्रश्नों , दैनिक 100,000 तक।

MORE

0

आप freegeoip.net उपयोग कर सकते हैं।

यह एक नि: शुल्क, मुक्त स्रोत सेवा है। आप सीधे सेवा का उपयोग कर सकते हैं या इसे अपने व्यक्तिगत सर्वर पर चला सकते हैं। यह भी आसानी से हरोकू में तैनात किया जा सकता है।

प्राप्त करने के लिए आईपी स्थान बस एक HTTP/HTTPS अनुरोध भेजने के लिए OkHttp का उपयोग करें:

String url = "https://freegeoip.net/json/" 
Request mRequest = new Request.Builder() 
     .url(url) 
     .build(); 
Context mContext // A UI context 
new OkHttpClient().newCall(mRequest).enqueue(new Callback() { 
    Handler mainHandler = new Handler(mContext.getApplicationContext().getMainLooper()); 

    @Override 
    public void onResponse(Call call, Response response) { 
     String responseBody = null; 
     try { 
      responseBody = response.body().string(); 
     } catch (final IOException e) { 
      mainHandler.post(new Runnable() { 
       @Override 
       public void run() { 
        // handle error 
       } 
      }); 
     } 

     final String finalResponseBody = responseBody; 
     mainHandler.post(new Runnable() { 
      @Override 
      public void run() { 
       // handle response body 
       try { 
        JSONObject locationObject = new JSONObject(finalResponseBody); 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
    } 

    @Override 
    public void onFailure(Call call, final IOException e) { 
     mainHandler.post(new Runnable() { 
      @Override 
      public void run() { 
       mNetworkListener.onNetworkError(e.getMessage()); 
      } 
     }); 
    } 
}); 

और प्रतिक्रिया कुछ इस तरह से दिखाई देगा:

{ 
    "ip": "192.30.253.113", 
    "country_code": "US", 
    "country_name": "United States", 
    "region_code": "CA", 
    "region_name": "California", 
    "city": "San Francisco", 
    "zip_code": "94107", 
    "time_zone": "America/Los_Angeles", 
    "latitude": 37.7697, 
    "longitude": -122.3933, 
    "metro_code": 807 
} 
संबंधित मुद्दे