как найти температуру города по долготе и широте.... Кто-нибудь знает сервис с API или виджет, который я мог бы использовать для отображения погоды на основе географических координат?
Как найти температуру города по долготе и широте в андроиде?
Ответ 1
мы можем найти городскую температуру, используя этот класс find_Location. в котором сначала найти местоположение города, используя долготу и широту в android? И после этого используйте метод SendToUrl, чтобы найти температуру с помощью GoogleXML " 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();
}
}
Ответ 2
Google Weather API теперь не поддерживается. Таким образом, приведенный выше код не будет работать. Вы можете использовать следующий URL-адрес, передать свою текущую широту местоположения, долготу, и вы получите результирующий xml, из которого вы можете извлечь нужную информацию.
http://forecast.weather.gov/MapClick.php?lat=40.78158&lon=-73.96648&FcstType=dwml
Ответ 3
Мой ответ не совсем совершенен, но Yahoo Weather API может вам помочь. Это отлично сработало для меня.
В этом api вам нужно выбрать один из городов, а затем вы получите обновления погоды. Однако вам нужно пройти через источник для извлечения вашей части.
Надеюсь, что это поможет.