1

在我的应用程序中,我将默认值设置为latitudeand longitude。当我键入时,cityname in edittext我需要将该点移动到我需要的地方

4

4 回答 4

3

使用以下代码获取城市名称的经纬度

String location=cityName;
String inputLine = "";
String result = ""
location=location.replaceAll(" ", "%20");
String myUrl="http://maps.google.com/maps/geo?q="+location+"&output=csv";
try{
 URL url=new URL(myUrl);
 URLConnection urlConnection=url.openConnection();
 BufferedReader in = new BufferedReader(new 
 InputStreamReader(urlConnection.getInputStream()));
  while ((inputLine = in.readLine()) != null) {
  result=inputLine;
  }
  String lat = result.substring(6, result.lastIndexOf(","));
  String longi = result.substring(result.lastIndexOf(",") + 1);
 }
 catch(Exception e){
 e.printStackTrace();
 }
于 2012-04-04T09:37:36.287 回答
1

我的建议是使用 Google GeoCoding REST API,而不是 Geocoder。

因为我曾经在我的国家中国使用过,所以出现以下错误:

"java.io.IOException: Service not Available"

搜索后,似乎

"The Geocoder class requires a backend service that is not included in the core android              framework. The Geocoder query methods will return an empty list if there no backend service in the platform. Use the isPresent() method to determine whether a Geocoder implementation    exists."

所以我求助于 Google GeoCoding REST API,这很简单,只需像这样请求:

http://maps.googleapis.com/maps/api/geocode/json?address=NewYork&sensor=false

您将获得一个包含地理位置的 json。您还可以通过它从 locaiton 获取地址:

http://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&sensor=false

如果你能读中文,我有一个关于这个的博客,看看这个: http ://wangchao.de/android%E5%88%A9%E7%94%A8google-geocoding-api%E6%9B%BF%E4 %BB%A3地理编码器-%E8%A7%A3%E5%86%B3%E5%9C%B0%E5%9D%80%E8%AF%AD%E8%A8%80%E9%97%AE%E9% A2%98

于 2012-04-04T09:26:02.523 回答
0

尝试获取cityname的GeoPoint

GeoPoint startGP = new GeoPoint(
                (int) (Double.parseDouble(cityname.getText()) * 1E6));

然后您可以使用以下代码从 GeoPoint 获取纬度和经度。

 Double.toString((double)startGP.getLatitudeE6() / 1E6),
 Double.toString((double)dest.getLongitudeE6() / 1E6)
于 2012-04-04T10:02:11.300 回答
0

使用地理编码器类。

Geocode gc = new Geocoder();
List<Address> ads = gc.getFromLocationName(cityName,maxResults);

从文档:

用于处理地理编码和反向地理编码的类。地理编码是将街道地址或位置的其他描述转换为(纬度、经度)坐标的过程。反向地理编码是将(纬度、经度)坐标转换为(部分)地址的过程。反向地理编码位置描述中的详细信息量可能会有所不同,例如,一个可能包含最近建筑物的完整街道地址,而另一个可能仅包含城市名称和邮政编码。Geocoder 类需要一个不包含在核心 android 框架中的后端服务。如果平台中没有后端服务,Geocoder 查询方法将返回一个空列表。使用 isPresent() 方法确定是否存在 Geocoder 实现。

于 2012-04-04T09:14:12.323 回答