Как узнать геоточку по адресу, введенным пользователем использовав подсказки suggestSession.suggest android yandex mapKit
Реализовал свой метод (так мне удобней) по предоставлению подсказки адресов пользователю при вводе текста
private final SuggestOptions SEARCH_OPTIONS = new SuggestOptions()
.setSuggestTypes(
SuggestType.GEO.value)
.setUserPosition(CENTER_KRASNODAR);
private final double BOX_SIZE = 0.2;
private final BoundingBox BOUNDING_BOX = new BoundingBox(
new Point(CENTER_KRASNODAR.getLatitude() - BOX_SIZE, CENTER_KRASNODAR.getLongitude() - BOX_SIZE),
new Point(CENTER_KRASNODAR.getLatitude() + BOX_SIZE, CENTER_KRASNODAR.getLongitude() + BOX_SIZE));
public ArrayList<AdressModel> getSuggest(String query, SuggestSession suggestSession, final RequestInterface requestInterface) {
ArrayList<AdressModel> addressesArray = new ArrayList<AdressModel>();
suggestSession.suggest(query, BOUNDING_BOX, SEARCH_OPTIONS, new SuggestSession.SuggestListener() {
@Override
public void onResponse(@NonNull List<SuggestItem> list) {
requestInterface.onSuccess(list);
}
@Override
public void onError(@NonNull Error error) {
requestInterface.onFailed(error);
}
});
return addressesArray;
}
После обрабатываем во фрагменте/активити присланный результат от яндекса
app.yaApi.getSuggest(
queryEdit.getText().toString(),
suggestSession,
new YandexApi.RequestInterface() {
@Override
public void onSuccess(List<SuggestItem> suggest) {
suggestResult.clear();
for (int i = 0; i < Math.min(RESULT_NUMBER_LIMIT, suggest.size()); i++) {
if (suggest.get(i).getSubtitle() == null) {
AdressModel adress = new AdressModel(
R.drawable.ic_baseline_circle,
suggest.get(i).getTitle().getText());
suggestResult.add(adress);
} else {
AdressModel adress = new AdressModel(
R.drawable.ic_baseline_circle,
suggest.get(i).getTitle().getText(),
suggest.get(i).getSubtitle().getText());
suggestResult.add(adress);
}
}
resultAdapter.notifyDataSetChanged();
suggestResultView.setVisibility(View.VISIBLE);
}
@Override
public void onFailed(Error error) {
}
});
Мне нужно, чтобы при выборе подсказки пользователем из списка подсказок от яндекса программа получила геоточку и отобразила ее на карте в приложении. Тоесть геоточка по адресу. Какой запрос нужно сделать?
Ответы (1 шт):
Автор решения: garik01
→ Ссылка
Сделал метод который скармливает адрес (title+subtitle) в YAPi и получаю геоточку через response.getCollection().getChildren().get(0).getObj().getGeometry().get(0).getPoint()
public void convertAdressToPoint(AdressModel adress, RequestInterface requestInterface) {
Logger.logE("Query: " + adress.getSubAdress());
session = getManager().submit(
adress.getAdress() + adress.getSubAdress(),
Geometry.fromBoundingBox(BOUNDING_BOX),
new SearchOptions(),
new Session.SearchListener() {
@Override
public void onSearchResponse(@NonNull Response response) {
requestInterface.onSuccess(response);
}
@Override
public void onSearchError(@NonNull Error error) {
requestInterface.onFailed(error);
}
});
}