У меня возникает проблема, когда мне нужно получить долготу/широту от адреса, который передается в AsyncTask, который извлекает статическую карту Google.Проблема, связанная с получением долготы/широты с помощью Google Статических карт
Этот AsyncTask может принимать набор координат и создавать карту, а также получать адрес, который извлекается с помощью API Google Places.
Проблема, с которой я сталкиваюсь, заключается в том, что я не знаю, как я могу получить координаты передаваемого адреса. Кто-нибудь знает способ, которым я могу получить Long/Lat? Единственный способ, которым я понял, как это сделать, - использовать другую AsyncTask. Я бы предпочел не делать 2 запроса.
CREATE Статическая карта класса 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();
}
}
}