现在,当我从当前位置获取地址时,现在我将从地址中获取经度和纬度
Geocoder gcd = new Geocoder(getBaseContext(), Locale.getDefault());
List<Address> addresses;
try {
addresses = gcd.getFromLocation(location.getLatitude(),
location.getLongitude(), 1);
if (addresses.size() > 0)
java.lang.System.out.println(addresses.get(0).getLocality());
cityName = addresses.get(0).getAddressLine(0);
plz = addresses.get(0).getAddressLine(1);
Land = addresses.get(0).getAddressLine(2);
} catch (IOException e) {
e.printStackTrace();
}
String s = longitude + "\n" + latitude + "\n\n"
+ cityName+ "\n" + plz + "\n"+ Land;
// String l = "\n\nMy Current Land is: " + Land;
txt.setText(s);
我用这个来获取地址而我不知道如何从地址获得纬度和经度?
答案 0 :(得分:1)
试试这段代码:
public static String getLocationData(Context mContext, double lat,
double lng) {
String address = "";
String county = "";
String area = "";
String city = "";
String state = "";
String countryCode = "";
String postalCode = "";
String add = "";
// JSONArray jsonArray = new JSONArray();
JSONObject json = new JSONObject();
Geocoder gCoder = new Geocoder(mContext);
ArrayList<Address> addresses = null;
try {
addresses = (ArrayList<Address>) gCoder
.getFromLocation(lat, lng, 1);
} catch (IOException e) {
e.printStackTrace();
}
if (addresses != null && addresses.size() > 0) {
Address addressLocation = addresses.get(0);
for (int i = 0; i <= addressLocation.getMaxAddressLineIndex(); i++) {
String coma = (i == 0) ? "" : ", ";
add += coma + addressLocation.getAddressLine(i);
}
county = addressLocation.getCountryName();
area = addressLocation.getSubLocality();
city = addressLocation.getLocality();
state = addressLocation.getAdminArea();
countryCode = addressLocation.getCountryCode();
postalCode = addressLocation.getPostalCode();
}
TimeZone tz = TimeZone.getDefault();
Date date = new Date();
try {
json.put("latitude", lat);
json.put("longitude", lng);
json.put("address", (add == null) ? "" : add);
json.put("area", (area == null) ? "" : area);
json.put("city", (city == null) ? "" : city);
json.put("state", (state == null) ? "" : state);
json.put("contry_name", (county == null) ? "" : county);
json.put("contry_code", (countryCode == null) ? "" : countryCode);
json.put("postal_code", (postalCode == null) ? "" : postalCode);
String id = tz.getID();
json.put("time_zone", tz.getID());
json.put("time_zone_offset", tz.getOffset(date.getTime()) / 1000);
json.put("time_zone_label", tz.getDisplayName());
} catch (Exception e) {
e.printStackTrace();
}
address = json.toString();
return address;
}
答案 1 :(得分:0)
这是我在其中一个应用中使用过的代码段。
public void getLocationName(Context context,double latitude,double longitude,String callBackMethodName)
{
Geocoder geocoder = new Geocoder(context, Locale.getDefault());
try {
List<Address> addresses = geocoder.getFromLocation(latitude, longitude, 1);
if (callBackMethodName == null || callBackMethodName.equals(""))
return;
try
{
Method callBackMethod =context.getClass().getDeclaredMethod(callBackMethodName,List.class);
callBackMethod.invoke(context,addresses);
}
catch(Exception e)
{
e.printStackTrace();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Toast.makeText(context, e.getMessage(), Toast.LENGTH_SHORT).show();
}
}
从如此获得的地址列表中,您可以使用获取所需的字段。
答案 2 :(得分:0)
Geocoder coder = new Geocoder(this);
try {
ArrayList<Address> adresses = (ArrayList<Address>) coder.getFromLocationName("Your Address", 50);
for(Address add : adresses){
if (statement) {//Controls to ensure it is right address such as country etc.
double longitude = add.getLongitude();
double latitude = add.getLatitude();
}
}
} catch (IOException e) {
e.printStackTrace();
}
答案 3 :(得分:0)
尝试this链接&amp;使用this链接 Google地理编码API &amp;查看 David Kristian Laundav 发布的答案,以获取从Android地址获取纬度,经度。
返回此Json
{
"results" : [
{
"address_components" : [
{
"long_name" : "1600",
"short_name" : "1600",
"types" : [ "street_number" ]
},
{
"long_name" : "Amphitheatre Pkwy",
"short_name" : "Amphitheatre Pkwy",
"types" : [ "route" ]
},
{
"long_name" : "Mountain View",
"short_name" : "Mountain View",
"types" : [ "locality", "political" ]
},
{
"long_name" : "Santa Clara",
"short_name" : "Santa Clara",
"types" : [ "administrative_area_level_2", "political" ]
},
{
"long_name" : "California",
"short_name" : "CA",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "United States",
"short_name" : "US",
"types" : [ "country", "political" ]
},
{
"long_name" : "94043",
"short_name" : "94043",
"types" : [ "postal_code" ]
}
],
"formatted_address" : "1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA",
"geometry" : {
"location" : {
"lat" : 37.42291810,
"lng" : -122.08542120
},
"location_type" : "ROOFTOP",
"viewport" : {
"northeast" : {
"lat" : 37.42426708029149,
"lng" : -122.0840722197085
},
"southwest" : {
"lat" : 37.42156911970850,
"lng" : -122.0867701802915
}
}
},
"types" : [ "street_address" ]
}
],
"status" : "OK"
}
解析这个Json。 希望这会有所帮助。