2011-08-12 11 views
11

देशांतर तापमान अक्षांश और अक्षांश से कैसे ढूंढें .... क्या कोई एपीआई या विजेट के साथ सेवा के बारे में जानता है जिसे मैं भौगोलिक निर्देशांक के आधार पर मौसम प्रदर्शित करने के लिए उपयोग कर सकता हूं?एंड्रॉइड में रेखांश और अक्षांश द्वारा शहर के तापमान को कैसे ढूंढें?

+6

चेक इस, http://stackoverflow.com/questions/951839/api-to-get-weather-based-on-longitude-and-latitude-coordinates – Randroid

उत्तर

24

हम इस find_Location कक्षा का उपयोग कर शहर अस्थायी पा सकते हैं। जिसमें पहली बार एंड्रॉइड में अक्षांश और अक्षांश द्वारा उपयोग करके शहर का स्थान मिलता है? और उसके बाद उपयोग GoogleXML से तापमान को खोजने के लिए विधि SendToUrl का उपयोग करें "http://api.wunderground.com/auto/wui/geo/WXCurrentObXML/index.xml?query="

public void find_Location(Context con) 
    { 
     Log.d("Find Location", "in find_location"); 
     this.con=con; 
     String location_context = Context.LOCATION_SERVICE; 
     locationManager = (LocationManager)con.getSystemService(location_context); 

     List<String> providers = locationManager.getProviders(true); 
     for (String provider : providers) 
     { 
      locationManager.requestLocationUpdates(provider, 1000, 0,new LocationListener() 
      { 
       public void onLocationChanged(Location location) {} 
       public void onProviderDisabled(String provider){} 
       public void onProviderEnabled(String provider){} 
       public void onStatusChanged(String provider, int status,Bundle extras){} 
      }); 
      Location location = locationManager.getLastKnownLocation(provider); 
      if (location != null) 
      { 
       latitude = location.getLatitude(); 
       longitude = location.getLongitude(); 
       addr=ConvertPointToLocation(latitude,longitude); 
         String temp_c=SendToUrl(addr); 

      } 
     } 
    } 

    public String ConvertPointToLocation(double pointlat,double pointlog) { 

     String address = ""; 
     Geocoder geoCoder = new Geocoder(con, 
       Locale.getDefault()); 
     try { 
      List<Address> addresses = geoCoder.getFromLocation(pointlat,pointlog, 1); 
      if (addresses.size() > 0) { 
       for (int index = 0; index < addresses.get(0) 
         .getMaxAddressLineIndex(); index++) 
        address += addresses.get(0).getAddressLine(index) + " "; 
      } 
     } 
     catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return address; 
    } 

    private String SendToUrl(String string) { 
     // TODO Auto-generated method stub 

      try{ 
       string=string.replace(" ","%20"); 

     String queryString="http://api.wunderground.com/auto/wui/geo/WXCurrentObXML/index.xml?query="+string; 
     url= new URL(queryString); 

     conec= url.openConnection(); 
     stream = conec.getInputStream(); 
     xpp = XmlPullParserFactory.newInstance().newPullParser(); 
     xpp.setInput(stream, null); 
     int eventType = xpp.getEventType(); 
     while(eventType != XmlPullParser.END_DOCUMENT) 
     { 
       if(eventType == XmlPullParser.START_TAG) 
      {String elementName = xpp.getName(); 
        if("temp_c".equals(elementName)) 
        { 
           int acount=xpp.getAttributeCount(); 
        for(int x=0;x<acount;x++) 
      { 
      xpp.getAttributeValue(x);   
         String str=xpp.getAttributeValue(x); 
        return str; 
     } 

      } 
     } 
     eventType = xpp.next(); 
    } 
} 
+0

क्या है आपके xpp, conec और stream के लिए डेटा प्रकार? – hyperfkcb

2

मेरा जवाब पूरी तरह से सही नहीं है लेकिन Yahoo Weather API आपकी मदद कर सकता है। यह मेरे लिए पूरी तरह से काम किया।

इस एपीआई में आपको शहर में से एक का चयन करना होगा और फिर आपको मौसम अपडेट मिलेंगे। हालांकि आपको अपने हिस्से को निकालने के लिए स्रोत से गुजरना है।

उम्मीद है कि इससे मदद मिलती है।

2

anddev.org google weather api description पर एक पूर्ण कोड उदाहरण प्रतीत होता है जिसमें आपको आवश्यक सभी चीज़ें शामिल करनी चाहिए।

3

Google मौसम API अब समर्थित नहीं है। तो उपरोक्त कोड अब काम नहीं करेगा। आप निम्न यूआरएल का उपयोग कर सकते हैं, अपना वर्तमान स्थान अक्षांश, देशांतर पारित कर सकते हैं और आपको परिणामी एक्सएमएल मिलेगा जिससे आप वांछित जानकारी निकाल सकते हैं।

http://forecast.weather.gov/MapClick.php?lat=40.78158&lon=-73.96648&FcstType=dwml

संबंधित मुद्दे