如果我有一个特定的地方,那我怎么能检查这个地方是否处于特定状态。
例如: 如果lat和long指的是Santa Clara,我如何检查它是否在加利福尼亚?
由于
答案 0 :(得分:0)
使用Geocoder类从纬度/经度获取地址。国家应该是地址的一部分。
注意:这不适用于没有地址的地方(国家,森林等)。
<强>更新强>
有一项很好的服务使用Google地图反向地理编码数据库(Android内部使用的数据库):http://reverse-geocoding.appspot.com/
实际上可以给出任何一点的国家数据(甚至格陵兰中部) - 所以你应该没问题。
答案 1 :(得分:0)
使用Geocoder和Address Classes来实现解决方案。这段代码可以帮助你......一切顺利......
Geocoder gc = new Geocoder(this, Locale.getDefault());
try {
List<Address> addresses = gc.getFromLocation(lat, lng, 1);
StringBuilder sb = new StringBuilder();
if (addresses.size() > 0) {
Address address = addresses.get(0);
for (int i = 0; i < address.getMaxAddressLineIndex(); i++)
String addr=address.getAddressLine(i);
//use this addr string and compare . u will get the solution
}
} catch (IOException e) {}
答案 2 :(得分:0)
尝试使用以下代码
Geocoder gc = new Geocoder(this, Locale.getDefault());
try {
List<Address> addresses = gc.getFromLocation(lat, lng, 1);
if (addresses.size() > 0) {
Address address = addresses.get(0);
String state = address.getLocality();
}
} catch (IOException e) {}
答案 3 :(得分:0)
public static String getUserAddress(String lat, String lon) {
String userlocation = null;
String userCountry = null;
String userCountryCode = null;
String readUserFeed = readUserLocationFeed(lat.trim() + ","+ lon.trim());
try {
JSONObject Strjson = new JSONObject(readUserFeed);
JSONArray jsonArray = new JSONArray(Strjson.getString("results"));
JSONArray array = new JSONArray(jsonArray.getJSONObject(0).getString("address_components"));
userCountry = array.getJSONObject(2).getString("long_name").toString();
userCountryCode = array.getJSONObject(2).getString("short_name").toString();
userlocation = jsonArray.getJSONObject(1).getString("formatted_address").toString();
System.out.println("User Address : "+userlocation +"\nUser Country : "+userCountry+"\nUser CountryCode : "+ userCountryCode);
} 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();
}
答案 4 :(得分:-1)
我的答案包里有三件事:
对你而言,第一个是快速和最简单的,第三个是最可靠和最自定的。