在我的應用程序中,我想通過提供城市來獲取我使用http://www.google.com/ig/api?weather=「」的天氣報告。但對我而言,只有經度和緯度可用通過提供lat和long獲取地點名稱
我怎樣才能得到經緯度的地名。
在我的應用程序中,我想通過提供城市來獲取我使用http://www.google.com/ig/api?weather=「」的天氣報告。但對我而言,只有經度和緯度可用通過提供lat和long獲取地點名稱
我怎樣才能得到經緯度的地名。
僅供參考,您正在做的是稱爲反向地理編碼。
大多數的Geonames web服務都可以使用JSON,包括findNearby。
谷歌也有一個reverse geocoding webservice
什麼你問的是一個不小的事情 - 一個緯度/經度數據庫幾乎肯定會在XML或JSON來呈現,所以它可能是值得投資的一點點時間和努力。 Android必須有xml/json包裝?
解析XML並不難 - 您不要自己動手,而是使用庫。通常情況下,您可以在1-2天內完成工作! – Kieveli 2010-03-02 14:27:18
可以使用Location API獲得Address Object並從那裏
偉大的鏈接。喜歡這個答案。上週我剛剛獲得Android。現在我想爲它編碼=) – Kieveli 2010-03-02 14:47:13
得到當地Android有一個名爲Geocoder這個東西類。看看getFromLocation
的方法。
有沒有需要調用Geocoder
,這樣的天氣API,這BTW是不公開的,所以你應該小心,city
,state
和country
只是信息字段,所以您可以使用它像這樣使用它(假常數):
private static final String URL = "http://www.google.com/ig/api?weather=%s,%s,%s,%d,%d";
//...
final String url = String.format(URL, "city", "state", "country",
p.getLatitudeE6(), p.getLongitudeE6());
在您的方法中傳遞經緯度並獲取相應的地名。不要忘記用戶權限:
public static String getUserLocation(String lat, String lon) {
String userlocation = null;
String readUserFeed = readUserLocationFeed(lat.trim() + "," + lon.trim());
try {
JSONObject Strjson = new JSONObject(readUserFeed);
JSONArray jsonArray = new JSONArray(Strjson.getString("results"));
userlocation = jsonArray.getJSONObject(1)
.getString("formatted_address").toString();
} catch (Exception e) {
e.printStackTrace();
}
Log.i("User Location ", userlocation);
return userlocation;
}
public static String readUserLocationFeed(String address) {
StringBuilder builder = new StringBuilder();
HttpClient client = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(
"http://maps.google.com/maps/api/geocode/json?latlng=" + address
+ "&sensor=false");
try {
HttpResponse response = client.execute(httpGet);
StatusLine statusLine = response.getStatusLine();
int statusCode = statusLine.getStatusCode();
if (statusCode == 200) {
HttpEntity entity = response.getEntity();
InputStream content = entity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(
content));
String line;
while ((line = reader.readLine()) != null) {
builder.append(line);
}
} else {
Log.e(ReverseGeocode.class.toString(), "Failed to download file");
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return builder.toString();
}
只是一個小竅門:用一個句子字詞的任意組合「給我德codez PLZ」是一個壞主意,並且是不必要的計算器。 – Epaga 2010-03-02 14:13:47
但是,額外的話真的使問題無效?我們能不能幫助他解析xml字符串的問題,併爲他的開發建議一個省力的路徑? – Kieveli 2010-03-02 14:26:02
@Kieveli好點。我只是刪除了所有的噪音,現在問題讀得更好。 :) – Epaga 2010-03-02 14:43:58