Поиск недвижисоти на карте C# WINDOWS FORMS
Реализовал поиск по картам при помощи GMap.NET. Ввожу адрес и у меня открывается карта с этим адресом и маркер с информацией о данном адресе. Теперь мне необходимо сделать так, чтобы по фильтрам на карте отображались маркера с информацией о недвижимости. Пример: https://realty.yandex.ru/ramenskoe/kupit/kvartira/1,2-komnatnie/karta/ Управление пакетами NuGet не содержит в себе конкретное API под яндекс недвижимость. Возможно ли это сделать через какие-то сторонние сервисы недвижимости? Если возможно, то через какие и как. Не могу понять как делать сам запрос и к какому ресурсу обращаться
Код для поиска по адресу:
if(textBox1.Text !="")
{
OverlayForAddress.Clear();
}
//Запрос с API ключом
//Запрос к API геокодирования Yandex.
string zapros = "https://maps.googleapis.com/maps/api/geocode/xml?address={0}&sensor=true_or_false&language=ru&key=AIzaSyBXECwJv2RalFwflUd2l7AyE-_lo4Wizvs";
string url = string.Format(zapros, Uri.EscapeDataString(textBox1.Text));
//Выполняем запрос к универсальному коду ресурса (URI).
HttpWebRequest request =(HttpWebRequest)WebRequest.Create(url);
//Получаем ответ от интернет-ресурса.
WebResponse response = request.GetResponse();
//Экземпляр класса System.IO.Stream
//для чтения данных из интернет-ресурса.
Stream dataStream = response.GetResponseStream();
//Инициализируем новый экземпляр класса
//System.IO.StreamReader для указанного потока.
StreamReader sreader = new StreamReader(dataStream);
//Считывает поток от текущего положения до конца.
string responsereader = sreader.ReadToEnd();
//Закрываем поток ответа.
response.Close();
//Парсинг данных
XmlDocument xmldoc = new XmlDocument();
xmldoc.LoadXml(responsereader);
if (xmldoc.GetElementsByTagName("status")[0].ChildNodes[0].InnerText == "OK")
{
//Получение широты и долготы.
XmlNodeList nodes = xmldoc.SelectNodes("//location");
//Переменные широты и долготы.
double latitude = 0.0;
double longitude = 0.0;
//Получаем широту и долготу.
foreach (XmlNode node in nodes)
{
latitude = XmlConvert.ToDouble(node.SelectSingleNode("lat").InnerText.ToString());
longitude = XmlConvert.ToDouble(node.SelectSingleNode("lng").InnerText.ToString());
}
//Строка со всеми данными
string formatted_address =
xmldoc.SelectNodes("//formatted_address").Item(0).InnerText.ToString();
string[] words = formatted_address.Split(',');
string dataMarker = string.Empty;
foreach (string word in words)
{
dataMarker += word + ";" + Environment.NewLine;
}
//Установка маркера для парсинга
gMapControl1.Overlays.Add(OverlayForAddress);
GMarkerGoogle addressmarker = new GMarkerGoogle(new PointLatLng(latitude, longitude), GMarkerGoogleType.blue);
addressmarker.ToolTip = new GMapRoundedToolTip(addressmarker);
addressmarker.ToolTipMode = MarkerTooltipMode.Always;
addressmarker.ToolTipText = dataMarker;
OverlayForAddress.Markers.Add(addressmarker);
gMapControl1.Position = new PointLatLng(latitude, longitude);
Ответы (1 шт):
К какому ресурсу обращаться - это вопрос не по теме StackOverflow, здесь решаются вопросы по программированию.
Как сделать запрос.
// Делается один раз при старте приложения, можно как глобальную переменную
private HttpClient client = new HttpClient();
// сам запрос в нужном вам методе
string url = "http://example.org";
string response = client.GetStringAsync(url).GetAwaiter().GetResult();