我正在尝试获取用户输入城市的纬度和经度值(在Java中) 我找到了提供此服务的网站(geonames.org) 我只想从搜索的html中提取经纬度。 例如,如果我使用网址 || https://www.geonames.org/search.html?q=[CITYNAME]&country=|| ,坐标就这样存储(通过使用inspect元素): N 38°53'42'' 宽77°2'10'' (华盛顿的纬度和时间) (使用的网址-https://www.geonames.org/search.html?q=washington&country=) 我将如何搜索这些特定的行,然后提取long和lat?
答案 0 :(得分:0)
您可以使用其rest api而不是解析HTML。 还要注意,对于一个城市和国家,您将收到多个记录。
import com.squareup.okhttp.*;
import org.json.*;
public class GeoLookup {
public static void main(String[] args) throws Exception {
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("http://api.geonames.org/search?name_equals=San%20Jose&country=US&maxRows=10&username=demo&type=json")
.build();
Response response = client.newCall(request).execute();
String responseString = response.body().string();
JSONObject obj = new JSONObject(responseString);
JSONArray arr = obj.getJSONArray("geonames");
for (int i = 0; i < arr.length(); i++)
{
System.out.println(arr.getJSONObject(i).getString("toponymName"));
System.out.println(arr.getJSONObject(i).getString("lat"));
System.out.println(arr.getJSONObject(i).getString("lng"));
}
}
}
这是您需要的依赖项: okhttp-2.7.5.jar,okio-1.6.0.jar,org.json.jar