使用 Google 静态地图检索经度/纬度的问题
Posted
技术标签:
【中文标题】使用 Google 静态地图检索经度/纬度的问题【英文标题】:Issue retrieving longitude/latitude using Google Static Maps 【发布时间】:2014-11-19 00:31:25 【问题描述】:我遇到了一个问题,我需要从传递给检索 Google 静态地图的 AsyncTask 的地址中获取经度/纬度。
此 AsyncTask 可以获取一组坐标并创建地图,还可以获取使用 Google Places API 检索到的地址。
我遇到的问题是我不知道如何检索传入的地址的坐标。有谁知道我可以获得 Long/Lat 的方法吗?我想出如何做到这一点的唯一方法是使用另一个 AsyncTask。不过,我宁愿不提出 2 个请求。
创建静态地图 类 CreateStaticMapAsyncTask 扩展 AsyncTask
private static final String STATIC_MAPS_API_BASE = "https://maps.googleapis.com/maps/api/staticmap";
private static final String STATIC_MAPS_API_SIZE = "300x300";
@Override
protected void onPreExecute()
addTask(); // adds one to task count.
super.onPreExecute();
@Override
protected Bitmap doInBackground(String... params)
// TODO Auto-generated method stub
locationString = params[0];
Log.e("LOCATION STRING", locationString);
Bitmap bmp = null;
StringBuilder sb = new StringBuilder(STATIC_MAPS_API_BASE);
try
sb.append("?center=").append(
URLEncoder.encode(locationString, "UTF-8"));
catch (UnsupportedEncodingException e1)
// TODO Auto-generated catch block
e1.printStackTrace();
sb.append("&size=" + STATIC_MAPS_API_SIZE);
sb.append("&key=" + API_KEY);
String url = new String(sb.toString());
Log.e("URL", sb.toString());
HttpClient httpclient = new DefaultHttpClient();
HttpGet request = new HttpGet(url);
InputStream in = null;
try
in = httpclient.execute(request).getEntity().getContent();
bmp = BitmapFactory.decodeStream(in);
in.close();
catch (Exception e)
e.printStackTrace();
return bmp;
protected void onPostExecute(Bitmap bmp)
super.onPostExecute(bmp);
if (bmp != null)
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
data = stream.toByteArray();
removeTask();
// allTasksComplete();
【问题讨论】:
【参考方案1】:您需要 Geocoder
类。
处理地理编码和反向地理编码的类。地理编码是 转换街道地址或其他描述的过程 位置转换为(纬度,经度)坐标。
如果您查看the example,您会看到Geocoder
在后台线程中使用。由于您已经有一个AsyncTask
,您可以将代码添加到doInBackground()
本身。该示例需要修改,因为您需要地址的纬度和经度,而不是相反。
您将需要getFromLocationName()
方法:
返回已知描述命名的地址数组 location,可以是地名,例如“Dalvik, Iceland”, 地址,例如“1600 Amphitheatre Parkway, Mountain View, CA”, 机场代码如“SFO”等。返回的地址将是 针对提供给此类的构造函数的语言环境进行本地化。
然后从Address
对象中,可以得到经纬度。
【讨论】:
以上是关于使用 Google 静态地图检索经度/纬度的问题的主要内容,如果未能解决你的问题,请参考以下文章
使用数据库中的多个纬度和经度值在 Google 地图上标记路线