Спасибо))), очень все подробно. Нужно было очень (очень) быстро сверстать основу проекта без БД (принципиально без БД). Пытался использовать в качестве источника данных excel (так как исходные данные получаю только в нем), но так и не разобрался как передать отдельные столбцы в лист (интересно было через OleDb - SQL-запросы). Перекрутил его в XML и больше не парюсь, все отлично работает
Очень интересно, хочу сделать карту навигатор по своему маленькому городу, продолжайте дальше снимать, хотелось бы конечно потом посмотреть как можно это все интегрировать в мобильное приложение
если интересно, то советую ознакомиться с предыдущими 4 частями и ждать выхода еще минимум 2. Мобильной разработкой никогда не занимался, поэтому интегрирование ДжиМапа не планируется ни в мобилку ни в веб-сервис(сайт). Тут только декстопное приложение рассматривается.
Спасибо за видео), у меня проблема хочу чтобы при нажатии на метку, в texbox(или еще где-нибудь) отображался текст который я ввел заранее из него же, вообщем с описанием меток работаю, как к меткам обращаться?
@@armen4798 в 7 части будет обработка нажатия на маркер. и там ты это увидишь) там будет так, ты ЛКМ жмешь по маркеру прямо на карте. и в 3 текстбокса и 1 пикчербокс выдается инфа о метке, которую я храню в текстовике. там же будет как переименовать маркер прямо на карте. и уже от этого отталкивайся и сделаешь что хочешь. удалить маркер, перетащить переименовать кликнуть по нему навести на него, отобразить инфу это все в 7 части где то числа 25 выйдет
Да вот я собираюсь заморочиться с этим. Потому что 6-7 части записаны - там хороший полезный функционал - в основном просьбы людей. На 8 часть +- насобирается функционал. Может запишу ролик по заданию с производственной практики, которую я сейчас делаю. А вот а с АПИ не знаю, что делать. А чем ты можешь помочь, типо дать сам ключ? Я так понял это просто строчка которую надо прописать в коде. Но будет ли работать ещё не факт.
@@forsytee да, это строчка кода. Если я пропишу ваш ip, то будет работать. Только там ограниченное количество запросов в день. Я уже проверял на разных компьютерах
@@ЕвгенийИванов-щ7б3п вообщем я взял ключик. ну оставил данные свои карту, все тип топ, он мне выдал апи ключ, я его в проекте вставляю, а оно все равно не черта не работает. то есть маршруты никак не рисуются. с апи и без апи.
@@forsytee а поиск осуществляется? Проверьте его работоспособность на поиске по адресам и выдаче координат. (Вы вводите адрес, вам точку) Создайте текстбокс, в который будете вводить адрес, в моем случае это textBox1 В файл 123.txt записываются координаты точек по вашему запросу { //Запрос к API геокодирования Google. string url = string.Format( "maps.googleapis.com/maps/api/geocode/xml?address={0}&sensor=true_or_false&language=ru&key=ТУТ ваш КЛЮЧ без пробелов", Uri.EscapeDataString(textBox1.Text));
//Получаем ответ от интернет-ресурса. System.Net.WebResponse response = request.GetResponse(); //Экземпляр класса System.IO.Stream //для чтения данных из интернет-ресурса. System.IO.Stream dataStream = response.GetResponseStream(); //Инициализируем новый экземпляр класса //System.IO.StreamReader для указанного потока. System.IO.StreamReader sreader = new System.IO.StreamReader(dataStream); //Считывает поток от текущего положения до конца. string responsereader = sreader.ReadToEnd(); //Закрываем поток ответа. response.Close(); System.Xml.XmlDocument xmldoc = new System.Xml.XmlDocument(); xmldoc.LoadXml(responsereader); if (xmldoc.GetElementsByTagName("status")[0].ChildNodes[0].InnerText == "OK") { //Получение широты и долготы. System.Xml.XmlNodeList nodes = xmldoc.SelectNodes("//location"); //Переменные широты и долготы. double latitude = 0.0; double longitude = 0.0; //Получаем широту и долготу. foreach (System.Xml.XmlNode node in nodes) { latitude = System.Xml.XmlConvert.ToDouble(node.SelectSingleNode("lat").InnerText.ToString()); longitude = System.Xml.XmlConvert.ToDouble(node.SelectSingleNode("lng").InnerText.ToString()); FileStream fileStream = new FileStream(@"123.txt", FileMode.Append, FileAccess.Write); StreamWriter streamWriter = new StreamWriter(fileStream, Encoding.GetEncoding(1251)); streamWriter.WriteLine(latitude + ";" + longitude); streamWriter.Close(); } //Варианты получения информации о найденном объекте.
//Массив, элементы которого содержат подстроки данного экземпляра, разделенные //одним или более знаками из separator. string[] words = formatted_address.Split(','); string dataMarker = string.Empty; foreach (string word in words) { dataMarker += word + ";" + Environment.NewLine; }
GMapOverlay markersOverlay = new GMapOverlay("marker");
GMarkerGoogle markerG = new GMarkerGoogle(new PointLatLng(latitude, longitude), GMarkerGoogleType.green); markerG.ToolTip = new GMap.NET.WindowsForms.ToolTips.GMapRoundedToolTip(markerG); //Указываем, что подсказку маркера, необходимо отображать всегда. markerG.ToolTipMode = GMap.NET.WindowsForms.MarkerTooltipMode.Always; //Текст подсказки маркера. markerG.ToolTipText = dataMarker;
//Добавляем маркеры в список маркеров. markersOverlay.Markers.Add(markerG); //Очищаем список маркеров компонента. gMapControl1.Overlays.Clear(); //Добавляем в компонент, список маркеров. gMapControl1.Overlays.Add(markersOverlay); //Устанавливаем позицию карты. gMapControl1.Position = new GMap.NET.PointLatLng(latitude, longitude); //Указываем, что при загрузке карты будет использоваться //17ти кратное приближение. gMapControl1.Zoom = 17; //Обновляем карту. gMapControl1.Refresh();
Если кому интересно, я уже отснял 6 и 7 часть. Скоро выложу.
Спасибо))), очень все подробно. Нужно было очень (очень) быстро сверстать основу проекта без БД (принципиально без БД). Пытался использовать в качестве источника данных excel (так как исходные данные получаю только в нем), но так и не разобрался как передать отдельные столбцы в лист (интересно было через OleDb - SQL-запросы). Перекрутил его в XML и больше не парюсь, все отлично работает
Спасибо за комментарий. Я показал в этом курсе еще работу с csv, json, word, sql, даже pdf. Удачи Вам!
Очень интересно, хочу сделать карту навигатор по своему маленькому городу, продолжайте дальше снимать, хотелось бы конечно потом посмотреть как можно это все интегрировать в мобильное приложение
если интересно, то советую ознакомиться с предыдущими 4 частями и ждать выхода еще минимум 2. Мобильной разработкой никогда не занимался, поэтому интегрирование ДжиМапа не планируется ни в мобилку ни в веб-сервис(сайт). Тут только декстопное приложение рассматривается.
Спасибо за видео), у меня проблема хочу чтобы при нажатии на метку, в texbox(или еще где-нибудь) отображался текст который я ввел заранее из него же, вообщем с описанием меток работаю, как к меткам обращаться?
чтобы описание каждой метки можно было менять в программе
@@armen4798 в 7 части будет обработка нажатия на маркер. и там ты это увидишь)
там будет так, ты ЛКМ жмешь по маркеру прямо на карте. и в 3 текстбокса и 1 пикчербокс выдается инфа о метке, которую я храню в текстовике.
там же будет как переименовать маркер прямо на карте. и уже от этого отталкивайся и сделаешь что хочешь.
удалить маркер, перетащить переименовать кликнуть по нему навести на него, отобразить инфу это все в 7 части где то числа 25 выйдет
@@forsytee Круто, жду видео)
Хорошие видео, продолжайте в том же духе!
Если потребуется Google API для очередных обучающих видео, то обращайтесь, могу предоставить
Да вот я собираюсь заморочиться с этим. Потому что 6-7 части записаны - там хороший полезный функционал - в основном просьбы людей. На 8 часть +- насобирается функционал. Может запишу ролик по заданию с производственной практики, которую я сейчас делаю. А вот а с АПИ не знаю, что делать. А чем ты можешь помочь, типо дать сам ключ? Я так понял это просто строчка которую надо прописать в коде. Но будет ли работать ещё не факт.
@@forsytee да, это строчка кода. Если я пропишу ваш ip, то будет работать. Только там ограниченное количество запросов в день. Я уже проверял на разных компьютерах
@@ЕвгенийИванов-щ7б3п про запросы я знаю. ну можно в принципе попробовать. на этой неделе скажу.
@@ЕвгенийИванов-щ7б3п вообщем я взял ключик. ну оставил данные свои карту, все тип топ, он мне выдал апи ключ, я его в проекте вставляю, а оно все равно не черта не работает. то есть маршруты никак не рисуются. с апи и без апи.
@@forsytee а поиск осуществляется? Проверьте его работоспособность на поиске по адресам и выдаче координат. (Вы вводите адрес, вам точку)
Создайте текстбокс, в который будете вводить адрес, в моем случае это textBox1
В файл 123.txt записываются координаты точек по вашему запросу
{
//Запрос к API геокодирования Google.
string url = string.Format(
"maps.googleapis.com/maps/api/geocode/xml?address={0}&sensor=true_or_false&language=ru&key=ТУТ ваш КЛЮЧ без пробелов",
Uri.EscapeDataString(textBox1.Text));
//Выполняем запрос к универсальному коду ресурса (URI).
System.Net.HttpWebRequest request =
(System.Net.HttpWebRequest)System.Net.WebRequest.Create(url);
//Получаем ответ от интернет-ресурса.
System.Net.WebResponse response =
request.GetResponse();
//Экземпляр класса System.IO.Stream
//для чтения данных из интернет-ресурса.
System.IO.Stream dataStream =
response.GetResponseStream();
//Инициализируем новый экземпляр класса
//System.IO.StreamReader для указанного потока.
System.IO.StreamReader sreader =
new System.IO.StreamReader(dataStream);
//Считывает поток от текущего положения до конца.
string responsereader = sreader.ReadToEnd();
//Закрываем поток ответа.
response.Close();
System.Xml.XmlDocument xmldoc =
new System.Xml.XmlDocument();
xmldoc.LoadXml(responsereader);
if (xmldoc.GetElementsByTagName("status")[0].ChildNodes[0].InnerText == "OK")
{
//Получение широты и долготы.
System.Xml.XmlNodeList nodes =
xmldoc.SelectNodes("//location");
//Переменные широты и долготы.
double latitude = 0.0;
double longitude = 0.0;
//Получаем широту и долготу.
foreach (System.Xml.XmlNode node in nodes)
{
latitude =
System.Xml.XmlConvert.ToDouble(node.SelectSingleNode("lat").InnerText.ToString());
longitude =
System.Xml.XmlConvert.ToDouble(node.SelectSingleNode("lng").InnerText.ToString());
FileStream fileStream = new FileStream(@"123.txt", FileMode.Append, FileAccess.Write);
StreamWriter streamWriter = new StreamWriter(fileStream, Encoding.GetEncoding(1251));
streamWriter.WriteLine(latitude + ";" + longitude);
streamWriter.Close();
}
//Варианты получения информации о найденном объекте.
string formatted_address =
xmldoc.SelectNodes("//formatted_address").Item(0).InnerText.ToString();
//Массив, элементы которого содержат подстроки данного экземпляра, разделенные
//одним или более знаками из separator.
string[] words = formatted_address.Split(',');
string dataMarker = string.Empty;
foreach (string word in words)
{
dataMarker += word + ";" + Environment.NewLine;
}
GMapOverlay markersOverlay = new GMapOverlay("marker");
GMarkerGoogle markerG = new GMarkerGoogle(new PointLatLng(latitude, longitude), GMarkerGoogleType.green);
markerG.ToolTip = new GMap.NET.WindowsForms.ToolTips.GMapRoundedToolTip(markerG);
//Указываем, что подсказку маркера, необходимо отображать всегда.
markerG.ToolTipMode = GMap.NET.WindowsForms.MarkerTooltipMode.Always;
//Текст подсказки маркера.
markerG.ToolTipText = dataMarker;
//Добавляем маркеры в список маркеров.
markersOverlay.Markers.Add(markerG);
//Очищаем список маркеров компонента.
gMapControl1.Overlays.Clear();
//Добавляем в компонент, список маркеров.
gMapControl1.Overlays.Add(markersOverlay);
//Устанавливаем позицию карты.
gMapControl1.Position = new GMap.NET.PointLatLng(latitude, longitude);
//Указываем, что при загрузке карты будет использоваться
//17ти кратное приближение.
gMapControl1.Zoom = 17;
//Обновляем карту.
gMapControl1.Refresh();
}
}